• <menu id="w2i4a"></menu>
  • logo Aspose.Words開發(fā)者指南

    文檔首頁>>Aspose.Words開發(fā)者指南>>Aspose.Words for .NET使用教程——如何替換或修改超鏈接

    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)系慧都客服,我們很高興為您提供查詢和咨詢。
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();