C# 通过Migradoc在pdf中添加文档链接

C# 通过Migradoc在pdf中添加文档链接,c#,pdf,pdfsharp,migradoc,C#,Pdf,Pdfsharp,Migradoc,我使用PdfSharp/Migradoc在c#中生成PDF文件,现在我尝试在PDF文件中添加文档链接,基本上是创建一个项目表,然后单击项目名称导航到另一个详细信息页面。我尝试使用Migradoc段落.AddHyperlink()方法,下面是使用的代码 Paragraph p = cell.AddParagraph(); Hyperlink link = p.AddHyperlink(tmp_value, HyperlinkType.Bookmark); link.AddText(tmp_val

我使用PdfSharp/Migradoc在c#中生成PDF文件,现在我尝试在PDF文件中添加文档链接,基本上是创建一个项目表,然后单击项目名称导航到另一个详细信息页面。我尝试使用Migradoc
段落.AddHyperlink()
方法,下面是使用的代码

Paragraph p = cell.AddParagraph();

Hyperlink link = p.AddHyperlink(tmp_value, HyperlinkType.Bookmark);
link.AddText(tmp_value);
link.AddPageRefField(some_bookmark);

我的问题是,这个导航页面是在以后生成书签之前创建的,执行后,链接不会出现,并且只有错误消息,如“[item name]书签[some_bookmark]未定义”,任何人都可以突出显示我实现这一点的正确方法是什么?谢谢。

您需要类似于
段落.AddBookmark(tmp\u值)的内容作为跳转的目标。这就是错误消息告诉您的:未定义目标书签

MigraDoc在两个过程中创建PDF,目标在文档中的位置无关紧要

link.AddPageRefField(一些书签)
将添加带有书签“some_bookmark”的页面页码。这样做的目的是什么

另请参见:

第一行定义了目标-文档中其他地方用
AddBookmark
定义的字符串。
第二行给出链接中显示的文本。第三行为链接添加了页码。

感谢您的解释,因此目标和参考页面应指向同一书签,我的下一个问题是,在创建链接之前是否必须定义超链接中使用的书签?呈现PDF时,目标必须存在。创建链接时,MigraDoc只存储传递的字符串,而不进行任何检查。在添加链接之前,您不必创建目标(链接的MigraDoc示例也按此顺序进行)。Hi@ThomasH,我知道我的问题来自何处,我使用MigraDoc创建了一个表,它跨多个页面,在每个页面上我都做了一个RenderPage(),否则它将在最终的pdf中显示为空白(我不知道为什么),所以这就是问题所在,在渲染过程中,它找不到链接定义中使用的书签,因为我的书签将仅在后面的页面中定义,您能给我一些解决此问题的想法吗?谢谢。使用RenderDocument创建文档。请参阅此示例:如果您认为您的代码应该可以工作,但MigraDoc中有一个bug,请提供一个SSCCE()。
Hyperlink hyperlink = paragraph.AddHyperlink("Paragraphs"); 
hyperlink.AddText("Paragraphs\t"); 
hyperlink.AddPageRefField("Paragraphs");