c# - 如何使用相对文件路径和 PDFsharp 创建 PDF 文件链接?

标签 c# pdf hyperlink relative-path pdfsharp

我的应用创建了一个链接到 Server.pdf 和 Client.pdf 的 Content.pdf 文件。这是文件夹结构:

  • ..\MyApp\Ressources\Content.pdf
  • ..\MyApp\Ressources\Server\Server.pdf
  • ..\MyApp\Ressources\Client\Client.pdf

此外,文件夹和文件会刻录到 CD/DVD 上或备份到网络驱动器上 - 这导致我使用相对文件路径。我使用以下代码创建 Content.pdf:

相关网页链接:

var relativeFileLinkPath =  "./" + Directory.GetParent(doc.Uri.LocalPath).Name + "/"+ doc.OutputFileName;
page.AddWebLink(pdfrect, relativeFileLinkPath);

相对文件链接:

var relativeFileLinkPath =  "./" + Directory.GetParent(doc.Uri.LocalPath).Name + "/"+ doc.OutputFileName;
page.AddFileLink(pdfrect, relativeFileLinkPath);

两者都在本地驱动器上运行良好,但我的问题是:

  • 网络链接无法在网络驱动器上工作/打开
  • FileLinks 关闭 Content.pdf 并将其替换为链接的 pdf 文件

问题:

如何修改文件链接以在新的(PDF 阅读器)实例/窗口中打开?

  • 在单击文件链接时按住 CTRL 键是一种选择,但不是一个好的解决方案。

相关 PDF 网络链接的正确语法是什么?

最佳答案

AddFileLink是并排放置在文件夹中的文件的正确方法。

要控制是否打开新窗口,需要对 PDFsharp 的 PdfLinkAnnotation 类进行小的修改。 PDF 支持 NewWindow PDFsharp 当前无法设置的属性。

获取 PDFsharp 的源代码,找到 "<</Type/Action/S/Launch/F<</Type/Filespec/F{0}>> >>"在 PdfLinkAnnotation.cs 中并将其替换为 "<</Type/Action/S/Launch/NewWindow true/F<</Type/Filespec/F{0}>> >>" .

免责声明:我没有测试提议的更改 - 我希望它在语法上是正确的,我希望它能满足您的要求。
免责声明 2:PDFsharp 1.50 beta 3 需要此更改。更高版本可能支持该标志。

关于c# - 如何使用相对文件路径和 PDFsharp 创建 PDF 文件链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35195688/

相关文章:

c# - 更快地读取文件并快速获取像素颜色?

c# - 从 WPF 应用捕获视频

c# - 为什么我不能在拥有私有(private)构造函数时调用默认构造函数?

pdf - Grails 渲染插件在 Grails3.2.4 下不起作用?

node.js - Express 服务器发送空 PDF 文件

css - 我在这个 CSS 中错误地使用了选择器吗?让 h2 改变颜色有问题

c# - 如何停止线程?

c# - 从 pdf 中读取证书

java - 在 JEditorPane 中将自定义字符串显示为链接

php - 在 laravel 中使用 Assets 链接到 css 文件