2017-05-05 6 views
0

Aspose Wordsfor .NETを使用してリンクの内容を変更する方法についてインターネット上で多くの情報があります。また、挿入後にリンクスタイルを設定するのに十分な情報があります。Aspose Wordsfor .NET:リンクの内容を置き換える(設定する)そのスタイルを維持する(設定する)

しかし、私は問題があります:(テンプレートからの)既存のリンクを修正する必要があります(または単に設定する)ビジュアルスタイル(下線付きの青いテキスト)です。 defaulによって、リンクが変更された後(以下のSEコード)スタイルが壊れています。

foreach (Field field in docTemplate.Range.Fields) 
{ 
    if (field.Type == FieldType.FieldHyperlink) 
    { 
     var hyperlink = (FieldHyperlink)field; 
     if (hyperlink.Result.Equals("<<[model.Id]>>")) 
     { 
      hyperlink.Address = model.IdUrl; 
      hyperlink.Result = model.Id; 

     } 
    } 
} 

この場合の解決策はありますか?助けていただければ幸いです。

答えて

1

私はあなたのシナリオをAspose.Words for .NET 17.4でテストしましたが、ハイパーリンクスタイルの問題に気づくことができず、変更後もそのまま残ります。 Aspose.Words for .NETの古いバージョンを使用している場合は、最新のバージョンにアップグレードしてください。うまくいけば、問題が解決されます。

ただし、問題が解決しない場合は、入力、出力、および予定されているドキュメントとともにコード全体を共有してください。あなたの問題を正確に理解するのに役立ちます。

私はAsposeのTilal、開発者エバンジェリストです。

Document doc = new Document("Hyperlink.docx"); 
//You may change the color of Hyperlink style, if required. 
//doc.Styles[StyleIdentifier.Hyperlink].Font.Color = Color.Blue; 
//doc.Styles[StyleIdentifier.FollowedHyperlink].Font.Color = Color.Blue; 

foreach (Field field in doc.Range.Fields){ 
    if (field.Type == FieldType.FieldHyperlink){ 
     FieldHyperlink link = (FieldHyperlink) field; 
     if (link.Result.Equals("aspose.com")) 
     { 
      link.Result = "google"; 
      link.Target = "www.google.com"; 
     } 
    } 
} 

doc.Save("Hyperlink_174.docx"); 

編集:特定のハイパーリンクを変更する場合は、次のコードスニペットを使用します。

Document doc = new Document("E:/Data/Hyperlink.docx"); 
DocumentBuilder builder = new DocumentBuilder(doc); 

foreach (Field field in doc.Range.Fields) 
{ 
if (field.Type == FieldType.FieldHyperlink) 
{ 
    FieldHyperlink link = (FieldHyperlink)field; 
    if (link.Result.Equals("aspose.com")) 
    { 
     builder.MoveToField(link, false); 
     builder.Font.ClearFormatting(); 

     // Specify font formatting for the hyperlink. 
     builder.Font.Color = Color.Blue; 
     builder.Font.Underline = Underline.Single; 
     // Insert the link. 
     builder.InsertHyperlink("google", "http://www.google.com", false); 
     link.Remove(); 
    } 
} 
} 

doc.Save("UpdatedHyperlink.docx"); 
+0

ありがとうございました。私は最新バージョンをテストします。現在、あなたのコードを見て、私は一つの違いを言及する必要があります:私は他のリンクのスタイルをontouchedを残して、1つだけのリンクを変更する必要があります。 –

+0

私は最新版を試しました。はい、うまくいきます。しかし、ライセンスの制限により、この場合は正しく動作しないバージョン16.7で動作します。したがって、私の問題を解決する唯一の方法は、 'doc.Range.Fields'コードスニペットの' Field field 'で変更された個々のリンクのスタイルを定義することです。 –

+0

Aspose.Wordsの最新バージョンを使用することが推奨されています。これには、多くの改善と修正が含まれています。しかし、特定のハイパーリンクを変更するために上記の応答のサンプルコードを更新しました。既存のハイパーリンクを削除し、必要なスタイルの新しいハイパーリンクを追加することができます。 –

関連する問題