ABCpdf转换html锚点以跳转到同一PDF中的另一个页面

我正在使用ABCpdf动态生成PDF,其中包含可链接到同一PDF中其他页面的目录。 问题是HTML中锚标记的路径变为临时文件的绝对路径。

例如,ABCpdf将呈现链接的href:

Link 

在PDF中: file:/// C:/Users/Aaron/AppData/Local/Temp/ABCpdf/pdfCMMYPSF.htm#elementId

这是我生成PDF的方式:

 Doc pdf = new Doc(); pdf.HtmlOptions.AddLinks = true; pdf.Rect.Rectangle = new System.Drawing.Rectangle(20, 80, 572, 702); int id = pdf.AddImageHtml(pdfHTML, true, pdf.HtmlOptions.BrowserWidth, true); while (pdf.Chainable(id)) { pdf.Page = pdf.AddPage(); id = pdf.AddImageToChain(id); } pdf.HtmlOptions.LinkPages(); for (int i = 0; i < pdf.PageCount; i++) { pdf.PageNumber = i; pdf.Flatten(); } 

任何想法我如何获得正确渲染的锚链接所以点击它将跳转到另一个页面?

Websupergoo回到我身边,我能够从他们提供的示例项目中调试我的问题。 我的问题的解决方案非常简单,我会在这里发布答案以防其他人遇到同样的问题:

我的HTML设置如下:

 Link to another page 
A div that's on another page

我只需将其更改为:

 Link to another page  

您需要使用具有指定名称的锚标记,以便ABCpdf使链接跳转到同一PDF中的另一个页面。

对于它的价值,我通过AddImageHtml关于锚定书签的不一致结果。 实现这一目标的最可靠方法是通过AddBookMark方法,但这将涉及更多的工作,因为您正在努力手动重建PDF内容,并且HTML支持以这种方式受到限制。 有关此方法的更多信息,请访问:

http://www.websupergoo.com/helppdf7net/source/5-abcpdf6/doc/1-methods/addbookmark.htm

也许他们的最新版本8解决了这个问题。 书签似乎总是解析为绝对位置而不是相对于您在浏览器中通过传统HTML看到的相对位置。

在最新的ABCpdf版本(9)中为我工作的另一种方法是为文档中的每个页面添加一个书签:

 For i = 1 to pdf.PageCount pdf.PageNumber = i pdf.AddBookmark("Page " & i, True) Next 

然后,您要在其中插入链接,您可以引用书签 – 在这种情况下,我们通过循环遍历我们创建的每个书签来创建目录:

 For Each bm As Bookmark In pdf.Bookmark toc &= "" & bm.Title & "
" Next pdf.AddHtml(toc)

Websupergoo团队为我提供了一些示例代码,这就是它的基础 – 感谢他们!