使用 Aspose.Words 在 Java 中復制 Word 宏

又一個月,又一個功能豐富的版本! Aspose.Words for Java 19.12 已推出,其中包含一系列有用的功能、增強功能和錯誤修復。使用最新版本,您將能夠通過克隆 VBA 模塊或 Java 中的 VBA 項目,將 Word 宏從一個文檔複製到另一個文檔。此外,我們還添加了 PDF 1.7 標準對 Word 到 PDF 轉換的支持。此外,最新版本的 Aspose.Words for Java 能夠掃描 Windows 10 中用戶安裝的字體以查找字體源。因此,讓我們更詳細地了解這些有用的功能。

將 VBA 宏從一個 Word 文檔複製到 Java 中的另一個文檔

Word 文檔中的宏是用 VBA (Visual Basic for Applications) 編寫的,用於自動執行常用任務。 MS Word 宏包含一組代碼語句,這些語句在單擊工具欄中的特定按鈕或按下組合鍵時執行。

在Aspose.Words for Java的上一版本中,我們引入了在Word文檔中為VBA項目或VBA模塊添加宏的功能。但是,在某些情況下,您需要克隆 VBA 模塊或整個 VBA 項目以編程方式將 Word 宏從一個文檔複製到另一個文檔。為了使其成為可能,我們在 VABModuleVBAProject 類中添加了 deepClone() 方法,以從特定的 VBA 模塊或項目複製 Word 宏。

現在讓我們看看如何使用 Aspose.Words for Java 在 Java 中將 Word 宏從一個文檔複製到另一個文檔。

克隆 VBA 模塊

以下 Java 代碼示例顯示如何通過克隆 Word 文檔中的特定 VBA 模塊來複製宏。

Document doc = new Document(dataDir + "test.docm");
      VbaProject project = doc.getVbaProject();

      Document destDoc = new Document();

      destDoc.setVbaProject(new VbaProject());

      // 克隆單個模塊。
      VbaModule copyModule = doc.getVbaProject().getModules().get("Module1").deepClone();
      destDoc.getVbaProject().getModules().add(copyModule);

      destDoc.save(dataDir + "output.docm");

克隆 VBA 項目

以下 Java 代碼示例顯示如何通過在 Word 文檔中克隆完整的 VBA 項目來複製宏。

Document doc = new Document(dataDir + "test.docm");
VbaProject project = doc.getVbaProject();

Document destDoc = new Document();

// 克隆整個項目。
destDoc.setVbaProject(doc.getVbaProject().deepClone());

destDoc.save(dataDir + "output.docm");

在 Java 中將 Word 轉換為 PDF 1.7 標準

PDF 文檔可能符合各種標准或 PDF 規範的版本。 PDF 1.7 是 PDF 規範的第六版,它包含一些僅由 Adobe 定義的專有技術。 Aspose.Words for Java 已經支持Word 到 PDF 的轉換,但是,我們已經擴展了這種支持,現在您可以將 Word 文檔轉換為 PDF 1.7。為此,我們已將 PDF17 選項添加到 PdfCompliance 枚舉中。

以下 Java 代碼示例顯示如何通過指定 PdfCompliance 將 Word 轉換為 PDF。

// 如需完整示例和數據文件,請訪問 // https://github.com/aspose-words/Aspose.Words-for-Java
// 文檔目錄的路徑。
Document originalDoc = new Document(dataDir + "Document.docx");

// 為 PDF17 提供 PDFSaveOption 合規性
// 或者只是在沒有 SaveOptions 的情況下進行轉換
PdfSaveOptions pso = new PdfSaveOptions();
pso.setCompliance(PdfCompliance.PDF_17);

originalDoc.save(dataDir + "Output.pdf", pso);

在 Windows 10 上為 SystemFontSource 使用用戶安裝的字體

在以前版本的 Aspose.Words for Java 中,API 僅用於掃描 SystemFontSource 的系統安裝字體。這種方法不太適合 Windows 10,其中字體可能安裝到所有用戶的系統文件夾“%windir%\fonts”或用戶文件夾“%userprofile%\AppData\Local\Microsoft \Windows\Fonts”為當前用戶。我們增強了這個功能,現在 Aspose.Words for Java 也可以掃描用戶安裝的字體。

新的查找和替換選項 {#Aspose.Words for Java19.12ReleaseNotes-AddedanewFindReplaceOptions.UseLegacyOrderoption}

Aspose.Words for Java 提供了Find and Replace選項來替換Word文檔中需要的單詞或短語。在以前版本的 API 中,查找/替換功能用於與文檔內容分開分析文本框。此行為是根據 MS Word 的行為設計的,但是,在某些情況下,您可能需要按順序查找和替換內容,包括文本框中的文本。對於這種情況,我們在 FindReplaceOptions 類中引入了一個新選項 UseLegacyOrder。以下 Java 代碼示例顯示了在 Word 文檔中查找和替換文本時如何使用此選項。

public static void FineReplaceUsingLegacyOrder(String dataDir) throws Exception
{
    // 打開文檔。
    Document doc = new Document(dataDir + "source.docx");
    FindReplaceOptions options = new FindReplaceOptions();
    options.setReplacingCallback(new ReplacingCallback());
    options.setUseLegacyOrder(true);

    doc.getRange().replace(Pattern.compile("\\[(.*?)\\]"), "", options);

    dataDir = dataDir + "usingLegacyOrder_out.doc";
    doc.save(dataDir);
}

private static class ReplacingCallback implements IReplacingCallback
{
    public int replacing(ReplacingArgs args) {
    	System.out.print(args.getMatch().group());
        return ReplaceAction.REPLACE;
    }
}

好吧,這是對我們添加到最新版本中的一些重要功能的簡要概述。您可以在 發行說明 中查看功能和錯誤修復的完整列表。您可以下載最新版本並自行評估新功能。有關任何功能的更多詳細信息,您可以查閱 API 的 文檔 以及通過我們的 論壇 與我們聯繫。