2010-01-26 82 views
7

我使用ABCpdf動態生成PDF,其中包含將鏈接到同一PDF中的其他頁面的內容列表。問題是HTML中錨定標記的路徑變成了臨時文件的絕對路徑。ABCpdf將html錨轉換爲跳轉到同一PDF中的另一個頁面

例如,ABCpdf會使鏈接href:

<a href="#elementId">Link</a> 

在PDF爲:文件:/// 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(); 
} 

任何想法如何,我可以得到錨鏈接來呈現正常使用,這時單擊它會跳到另一個頁?

+0

只是FYI,我有很好的運氣直接從ABCpdf的製造商獲得支持。試過了嗎? – Bryan 2010-01-27 00:10:27

+0

剛剛給他們發了一封電子郵件,謝謝你的建議。 – Aaron 2010-01-27 13:24:24

+0

WebSuperGoo支持非常好,而且是最好的選擇之一,Bryan對這個建議很有幫助。 – Jakkwylde 2010-01-28 03:35:34

回答

6

Websupergoo回到我身邊,我能夠從他們提供的示例項目調試我的問題。我的問題的解決方案是非常簡單的,我會在這裏發佈答案的情況下,其他人是否有同樣的問題:

我的HTML成立這樣的:

<a href="#elementId">Link to another page</a> 
<div id="elementId">A div that's on another page</div> 

我只是需要改變它:

<a href="#elementId">Link to another page</a> 
<div><a name="elementId">A div that's on another page</a></div> 

您需要使用一個錨定標記,以便爲ABCpdf做出同樣PDF中的鏈接跳轉到其他頁面中指定的名稱。

+1

這個工程!如果你在你的頭標中使用,那麼你的錨就會搞砸,所以你需要用絕對路徑引用所有內容。 – 2013-07-17 00:20:49

+1

它也適用於我。我還必須設置document.HtmlOptions.AddLinks = true;並運行document.HtmlOptions.LinkPages();平整文件後。 – 2015-04-09 06:47:47

3

對於它的價值,我通過關於錨定書籤的AddImageHtml得到了不一致的結果。完成此操作最可靠的方法是通過AddBookMark方法,但這會涉及更多的工作,因爲您將手動重建PDF內容和HTML支持的方式有限。

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

也許他們的最新版本8個解決了這個問題:關於這種方法的更多信息可以在這裏找到。書籤通常似乎是通過傳統HTML在瀏覽器中看到的絕對位置而不是相對位置。

1

這爲我在最新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 &= "<Font annots='goto:" + bm.Page.PageNumber.ToString() + "'>" & bm.Title & "</Font><br>" 

Next 

pdf.AddHtml(toc) 

的Websupergoo團隊給我提供了一些示例代碼,這就是這是基於關閉的 - 所以感謝他們!