在 PDF 中使用操作
以下代码片段也适用于 Aspose.PDF.Drawing 库。
在 PDF 文件中添加超链接
可以向 PDF 文件添加超链接,以允许读者导航到 PDF 的另一部分或外部内容。
为了向 PDF 文档添加网页超链接:
创建一个 Document 类对象。
获取要添加链接的 Page 类。
使用 Page 和 Rectangle 对象创建一个 LinkAnnotation 对象。矩形对象用于指定链接应添加到页面上的位置。
将 Action 属性设置为 GoToURIAction 对象,该对象指定远程 URI 的位置。
要显示超链接文本,请在与 LinkAnnotation 对象放置位置相似的位置添加文本字符串。
要添加自由文本:
以下代码片段演示了如何向 PDF 文件添加超链接。
.NET Core 3.1
Copy
private static void AddHyperlink ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_LinksActions ();
using ( var document = new Aspose . Pdf . Document ( dataDir + "AddHyperlink.pdf" ))
{
var page = document . Pages [ 1 ];
var link = new Aspose . Pdf . Annotations . LinkAnnotation ( page , new Aspose . Pdf . Rectangle ( 100 , 100 , 300 , 300 ));
var border = new Aspose . Pdf . Annotations . Border ( link );
border . Width = 0 ;
link . Border = border ;
link . Action = new Aspose . Pdf . Annotations . GoToURIAction ( "www.aspose.com" );
page . Annotations . Add ( link );
var textAnnotation = new Aspose . Pdf . Annotations . FreeTextAnnotation ( document . Pages [ 1 ], new Aspose . Pdf . Rectangle ( 100 , 100 , 300 , 300 ), new Aspose . Pdf . Annotations . DefaultAppearance ( Aspose . Pdf . Text . FontRepository . FindFont ( "TimesNewRoman" ), 10 , System . Drawing . Color . Blue ));
textAnnotation . Contents = "Link to Aspose website" ;
textAnnotation . Border = border ;
document . Pages [ 1 ]. Annotations . Add ( textAnnotation );
document . Save ( dataDir + "AddHyperlink_out.pdf" );
}
}
.NET 8
Copy
private static void AddHyperlink ( )
{
var dataDir = RunExamples . GetDataDir_AsposePdf_LinksActions ();
using var document = new Aspose . Pdf . Document ( dataDir + "AddHyperlink.pdf" );
var page = document . Pages [ 1 ];
var link = new Aspose . Pdf . Annotations . LinkAnnotation ( page , new Aspose . Pdf . Rectangle ( 100 , 100 , 300 , 300 ));
var border = new Aspose . Pdf . Annotations . Border ( link );
border . Width = 0 ;
link . Border = border ;
link . Action = new Aspose . Pdf . Annotations . GoToURIAction ( "www.aspose.com" );
page . Annotations . Add ( link );
var textAnnotation = new Aspose . Pdf . Annotations . FreeTextAnnotation ( document . Pages [ 1 ], new Aspose . Pdf . Rectangle ( 100 , 100 , 300 , 300 ), new Aspose . Pdf . Annotations . DefaultAppearance ( Aspose . Pdf . Text . FontRepository . FindFont ( "TimesNewRoman" ), 10 , System . Drawing . Color . Blue ));
textAnnotation . Contents = "Link to Aspose website" ;
textAnnotation . Border = border ;
document . Pages [ 1 ]. Annotations . Add ( textAnnotation );
document . Save ( dataDir + "AddHyperlink_out.pdf" );
}
另一个常见场景是使用 TextFragmentAbsorber 在文档中查找给定文本,并将其区域设置为指向网站的超链接。以下是实现此功能的代码片段。
创建指向同一 PDF 中页面的超链接
Aspose.PDF for .NET 为 PDF 创建及其操作提供了一个很好的功能。它还提供了向 PDF 页面添加链接的功能,链接可以指向另一个 PDF 文件中的页面、网页 URL、启动应用程序的链接,甚至指向同一 PDF 文件中的页面。为了添加本地超链接(指向同一 PDF 文件中的页面),在 Aspose.PDF 命名空间中添加了一个名为 LocalHyperlink 的类,该类具有一个名为 TargetPageNumber 的属性,用于指定超链接的目标/目的页面。
为了添加本地超链接,我们需要创建一个 TextFragment,以便链接可以与 TextFragment 关联。TextFragment 类具有一个名为 Hyperlink 的属性,用于关联 LocalHyperlink 实例。以下代码片段展示了实现此要求的步骤。
获取 PDF 超链接目标 (URL)
链接在 PDF 文件中表示为注释,可以添加、更新或删除。Aspose.PDF for .NET 还支持获取 PDF 文件中超链接的目标 (URL)。
要获取链接的 URL:
创建一个 Document 对象。
获取要提取链接的 Page 。
使用 AnnotationSelector 类从指定页面提取所有 LinkAnnotation 对象。
将 AnnotationSelector 对象传递给 Page 对象的 Accept 方法。
使用 AnnotationSelector 对象的 Selected 属性将所有选定的链接注释提取到 IList 对象中。
最后,提取 LinkAnnotation Action 作为 GoToURIAction。
以下代码片段展示了如何从 PDF 文件中获取超链接目标 (URL)。
获取超链接文本
超链接有两个部分:文档中显示的文本和目标 URL。在某些情况下,我们需要的是文本而不是 URL。
PDF 文件中的文本和注释/操作由不同的实体表示。页面上的文本只是一个单词和字符的集合,而注释则带来一些交互性,例如超链接固有的交互性。
要查找 URL 内容,您需要同时处理注释和文本。Annotation 对象本身没有文本,而是位于页面文本下方。因此,要获取文本,注释提供了 URL 的边界,而文本对象提供了 URL 内容。请参见以下代码片段。
从 PDF 文件中移除文档打开操作
如何在查看文档时指定 PDF 页面 解释了如何告诉文档在不同于第一页的页面上打开。当连接多个文档时,如果其中一个或多个具有 GoTo 操作设置,您可能希望将其移除。例如,如果合并两个文档,而第二个文档具有将您带到第二页的 GoTo 操作,则输出文档将在第二个文档的第二页打开,而不是合并文档的第一页。为了避免这种行为,请移除打开操作命令。
要移除打开操作:
将 Document 对象的 OpenAction 属性设置为 null。
使用 Document 对象的 Save 方法保存更新后的 PDF。
以下代码片段展示了如何从 PDF 文件中移除文档打开操作。
如何在查看文档时指定 PDF 页面
在 PDF 查看器(如 Adobe Reader)中查看 PDF 文件时,文件通常在第一页打开。然而,可以设置文件在不同的页面上打开。
XYZExplicitDestination 类允许您指定要打开的 PDF 文件中的页面。当将 GoToAction 对象值传递给 Document 类的 OpenAction 属性时,文档将在与 XYZExplicitDestination 对象指定的页面打开。以下代码片段展示了如何指定页面作为文档打开操作。