PDF内のリンクを更新する

次のコードスニペットも Aspose.PDF.Drawing ライブラリで動作します。

PDFファイル内のリンクを更新する

PDFファイルにハイパーリンクを追加する場合の議論として、「LinkAnnotation」クラスを使用してPDFファイルにリンクを追加することができます。PDFファイル内の既存のリンクを取得するために使用される類似のクラスもあります。既存のリンクを更新する必要がある場合はこれを使用します。既存のリンクを更新するには:

  1. PDFファイルを読み込みます。
  2. PDFファイルの特定のページに移動します。
  3. GoToAction オブジェクトのDestinationプロパティを使用してリンク先を指定します。
  4. 目的地のページは、XYZExplicitDestination コンストラクタを使用して指定されます。

リンクターゲットを同じドキュメントのページに設定する

次のコードスニペットは、PDFファイル内のリンクを更新し、そのターゲットをドキュメントの2ページ目に設定する方法を示しています。 以下のコードスニペットは、PDFファイルのリンクを更新し、そのターゲットをドキュメントの2ページ目に設定する方法を示しています。

// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.PDF-for-.NET をご覧ください
// ドキュメントディレクトリへのパス。
string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
// PDFファイルを読み込む
Document doc = new Document(dataDir + "UpdateLinks.pdf");
// ドキュメントの最初のページから最初のリンク注釈を取得する
LinkAnnotation linkAnnot = (LinkAnnotation)doc.Pages[1].Annotations[1];
// リンクの変更:リンク先を変更する
GoToAction goToAction = (GoToAction)linkAnnot.Action;
// リンクオブジェクトの目的地を指定する
// 第一パラメータはドキュメントオブジェクト、第二は目的地のページ番号です。
// 5番目の引数は、該当ページを表示する際のズームファクターです。2を使用すると、ページが200%のズームで表示されます
goToAction.Destination = new Aspose.Pdf.Annotations.XYZExplicitDestination(1, 1, 2, 2);
dataDir = dataDir + "PDFLINK_Modified_UpdateLinks_out.pdf";
// 更新されたリンクを含むドキュメントを保存する
doc.Save(dataDir);

ウェブアドレスへのリンク先を設定する

ウェブアドレスを指すようにハイパーリンクを更新するには、GoToURIAction オブジェクトをインスタンス化して、LinkAnnotationのActionプロパティに渡します。以下のコードスニペットは、PDFファイル内のリンクを更新し、そのターゲットをウェブアドレスに設定する方法を示しています。

// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.PDF-for-.NET にアクセスしてください。
// ドキュメントディレクトリへのパス。
string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
// PDFファイルをロードする
Document doc = new Document(dataDir + "UpdateLinks.pdf");

// ドキュメントの最初のページから最初のリンク注釈を取得する
LinkAnnotation linkAnnot = (LinkAnnotation)doc.Pages[1].Annotations[1];
// リンクの変更: リンクアクションを変更し、ターゲットをウェブアドレスに設定する
linkAnnot.Action = new GoToURIAction("www.aspose.com");

dataDir = dataDir + "SetDestinationLink_out.pdf";
// リンクを更新したドキュメントを保存する
doc.Save(dataDir);

PDFファイルへのリンクターゲットを設定

次のコードスニペットは、PDFファイル内のリンクを更新し、そのターゲットを別のPDFファイルに設定する方法を示しています。

// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.PDF-for-.NET をご覧ください。
// ドキュメントディレクトリへのパス。
string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
// PDFファイルをロードする
Document document = new Document(dataDir + "UpdateLinks.pdf");

LinkAnnotation linkAnnot = (LinkAnnotation)document.Pages[1].Annotations[1];

GoToRemoteAction goToR = (GoToRemoteAction)linkAnnot.Action;
// 次の行は目的地を更新しますが、ファイルは更新しません
goToR.Destination = new XYZExplicitDestination(2, 0, 0, 1.5);
// 次の行はファイルを更新します
goToR.File = new FileSpecification(dataDir +  "input.pdf");

dataDir = dataDir + "SetTargetLink_out.pdf";
// 更新されたリンクでドキュメントを保存
document.Save(dataDir);

LinkAnnotationのテキスト色を更新

リンク注釈にはテキストが含まれていません。 リンク注釈にテキストが含まれていません。

// 完全な例とデータファイルについては、https://github.com/aspose-pdf/Aspose.PDF-for-.NET をご覧ください。
// ドキュメントディレクトリへのパスです。
string dataDir = RunExamples.GetDataDir_AsposePdf_LinksActions();
// PDFファイルを読み込む
Document doc = new Document(dataDir + "UpdateLinks.pdf");
foreach (Annotation annotation in doc.Pages[1].Annotations)
{
    if (annotation is LinkAnnotation)
    {
        // 注釈の下のテキストを検索する
        TextFragmentAbsorber ta = new TextFragmentAbsorber();
        Rectangle rect = annotation.Rect;
        rect.LLX -= 10;
        rect.LLY -= 10;
        rect.URX += 10;
        rect.URY += 10;
        ta.TextSearchOptions = new TextSearchOptions(rect);
        ta.Visit(doc.Pages[1]);
        // テキストの色を変更する。
        foreach (TextFragment tf in ta.TextFragments)
        {
            tf.TextState.ForegroundColor = Color.Red;
        }
    }

}
dataDir = dataDir + "UpdateLinkTextColor_out.pdf";
// リンクを更新したドキュメントを保存する
doc.Save(dataDir);