Aspose.Words for .NET使用教程——如何替換或修改超鏈接
Aspose.Words For .Net是一種高級Word文檔處理API,用于執(zhí)行各種文檔管理和操作任務。API支持生成,修改,轉換,呈現和打印文檔,而無需在跨平臺應用程序中直接使用Microsoft Word。此外,API支持所有流行的Word處理文件格式,并允許將Word文檔導出或轉換為固定布局文件格式和最常用的圖像/多媒體格式。
接下來我們將在Aspose.Words中學會如何替換或修改超鏈接。
>>Aspose.Words for .NET迎來2020第一次更新v20.1,支持插入LINQ Reporting Engine標簽,點擊下載體驗
替換或修改超鏈接
Microsoft Word文檔中的超鏈接是一個字段。Word文檔中的字段是一個復雜的結構,由多個節(jié)點組成,這些節(jié)點包括字段開頭,字段代碼,字段分隔符,字段結果和字段結尾。字段可以嵌套,包含豐富的內容并跨越文檔中的多個段落或部分。
FieldHyperlink類實現HYPERLINK字段。 下面的示例查找Word文檔中的所有超鏈接,并更改其URL和顯示名稱。
// The path to the documents directory. string dataDir = RunExamples.GetDataDir_WorkingWithHyperlink(); string NewUrl = @"http://www.aspose.com"; string NewName = "Aspose - The .NET & Java Component Publisher"; Document doc = new Document(dataDir + "ReplaceHyperlinks.doc"); // Hyperlinks in a Word documents are fields. foreach (Field field in doc.Range.Fields) { if (field.Type == FieldType.FieldHyperlink) { FieldHyperlink hyperlink = (FieldHyperlink)field; // Some hyperlinks can be local (links to bookmarks inside the document), ignore these. if (hyperlink.SubAddress != null) continue; hyperlink.Address = NewUrl; hyperlink.Result = NewName; } } dataDir = dataDir + "ReplaceHyperlinks_out.doc"; doc.Save(dataDir);
用靜態(tài)文本替換字段
當希望將文檔另存為靜態(tài)副本時,例如在電子郵件中作為附件發(fā)送時,通常需要這樣做。將DATE或TIME字段等字段轉換為靜態(tài)文本將使它們能夠顯示與發(fā)送它們相同的日期。在某些情況下,可能需要從文檔中刪除條件IF字段,然后將其替換為最新的文本結果。例如,將IF字段的結果轉換為靜態(tài)文本,這樣,如果文檔中的字段被更新,它將不再動態(tài)更改其值。
例如,下圖顯示了如何將“IF”字段存儲在文檔中。文本包含在特殊的字段節(jié)點FieldStart和FieldEnd中。所述FieldSeparator節(jié)點分隔字段內的文本到域代碼和域結果。字段代碼定義字段的一般行為,而當Microsoft Word或Aspose.Words更新此字段時,字段結果將存儲最新結果。字段結果是存儲在字段中并在查看時顯示在文檔中的結果。
當然還可以使用演示項目“ DocumentExplorer”以分層形式在下面看到該結構。
請注意,此技術無法在頁眉或頁腳的某些字段上正確使用。例如,嘗試將頁眉或頁腳中的PAGE字段轉換為靜態(tài)文本將導致相同的值出現在所有頁面上。這是因為頁眉和頁腳在多個頁面上重復,并且當它們保留為字段時,尤其要對其進行處理,以便為每個頁面顯示正確的結果。但是,轉換后,標頭中的字段將轉換為靜態(tài)文本行。此文本行將被評估為好像是該部分中的最后一頁,這將導致標題中的PAGE字段中的任何一個在所有頁面上顯示最后一頁。下面的代碼示例演示如何用其最新結果替換該字段。
public class FieldsHelper { /// <summary> /// Converts any fields of the specified type found in the descendants of the node into static text. /// </summary> /// <param name="compositeNode">The node in which all descendants of the specified FieldType will be converted to static text.</param> /// <param name="targetFieldType">The FieldType of the field to convert to static text.</param> public static void ConvertFieldsToStaticText(CompositeNode compositeNode, FieldType targetFieldType) { compositeNode.Range.Fields.Cast<Field>().Where(f => f.Type == targetFieldType).ToList().ForEach(f => f.Unlink()); } }
ConvertFieldsToStaticText方法接受兩個參數,一個CompositeNode和一個FieldType枚舉。能夠將任何復合節(jié)點傳遞給此方法,這樣可以僅在文檔的特定部分將字段轉換為靜態(tài)文本。例如,可以傳遞Document對象,并將指定類型的字段從整個文檔轉換為靜態(tài)文本,或者可以傳遞節(jié)的Body對象,僅轉換在該正文中找到的字段。
傳遞給該方法的FieldType枚舉指定應將哪種類型的字段轉換為靜態(tài)文本。文檔中遇到的任何其他類型的字段將保持不變。 下例顯示了如何將文檔中指定類型的所有字段轉換為靜態(tài)文本。您可以從此處下載以下示例的模板文件。
// The path to the documents directory. string dataDir = RunExamples.GetDataDir_WorkingWithFields(); string fileName = "TestFile.doc"; Document doc = new Document(dataDir + fileName); // Pass the appropriate parameters to convert all IF fields encountered in the document (including headers and footers) to static text. FieldsHelper.ConvertFieldsToStaticText(doc, FieldType.FieldIf); dataDir = dataDir + RunExamples.GetOutputFilePath(fileName); // Save the document with fields transformed to disk. doc.Save(dataDir);
下面的示例顯示如何將文檔正文中指定類型的所有字段轉換為靜態(tài)文本。
// The path to the documents directory. string dataDir = RunExamples.GetDataDir_WorkingWithFields(); string fileName = "TestFile.doc"; Document doc = new Document(dataDir + fileName); // Pass the appropriate parameters to convert PAGE fields encountered to static text only in the body of the first section. FieldsHelper.ConvertFieldsToStaticText(doc.FirstSection.Body, FieldType.FieldPage); dataDir = dataDir + RunExamples.GetOutputFilePath(fileName); // Save the document with fields transformed to disk. doc.Save(dataDir);
下面的示例顯示如何將段落中指定類型的所有字段轉換為靜態(tài)文本。
// The path to the documents directory. string dataDir = RunExamples.GetDataDir_WorkingWithFields(); string fileName = "TestFile.doc"; Document doc = new Document(dataDir + fileName); // Pass the appropriate parameters to convert all IF fields to static text that are encountered only in the last // Paragraph of the document. FieldsHelper.ConvertFieldsToStaticText(doc.FirstSection.Body.LastParagraph, FieldType.FieldIf); dataDir = dataDir + RunExamples.GetOutputFilePath(fileName); // Save the document with fields transformed to disk. doc.Save(dataDir);
還想要更多嗎?您可以點擊閱讀【2019 · Aspose最新資源整合】,查找需要的教程資源。如果您有任何疑問或需求,請隨時聯(lián)系慧都客服,我們很高興為您提供查詢和咨詢。