2010-01-26 50 views
7

Tôi đang tạo động PDF bằng ABCpdf có chứa mục lục liên kết đến các trang khác trong cùng một tệp PDF. Vấn đề là đường dẫn của các thẻ neo trong HTML được thay đổi thành một đường dẫn tuyệt đối đến một tệp tạm thời.ABCpdf chuyển đổi neo html để chuyển đến một trang khác trong cùng một tệp PDF

Ví dụ, ABCpdf sẽ làm cho href của liên kết:

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

trong PDF như: file: /// C: /Users/Aaron/AppData/Local/Temp/ABCpdf/pdfCMMYPSF.htm #elementId

Đây là cách tôi tạo ra 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(); 
} 

Bất kỳ ý tưởng làm thế nào tôi có thể nhận được các liên kết anchor hiển thị chính xác, nếu có click nó sẽ nhảy đến khác trang?

+0

Chỉ cần thông tin, tôi đã có may mắn khi nhận được sự hỗ trợ trực tiếp từ các nhà sản xuất ABCpdf. Đã thử điều đó? – Bryan

+0

Chỉ cần gửi email cho họ, cảm ơn đề xuất. – Aaron

+0

Hỗ trợ WebSuperGoo là tuyệt vời và là một trong những tốt nhất xung quanh, Bryan là tại chỗ với đề nghị này. – Jakkwylde

Trả lời

6

Websupergoo đã quay lại với tôi và tôi đã có thể gỡ lỗi vấn đề của mình từ dự án mẫu mà họ đã cung cấp. Giải pháp cho vấn đề của tôi là khá đơn giản, tôi sẽ gửi câu trả lời ở đây trong trường hợp ai gặp vấn đề tương tự:

HTML của tôi được thành lập như thế này:

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

Tôi chỉ đơn giản là cần thiết để thay đổi nó đến:

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

Bạn cần sử dụng thẻ neo với tên được chỉ định để ABCpdf làm cho liên kết chuyển đến một trang khác trong cùng một tệp PDF.

+1

Công trình này!Ngoài ra một lưu ý cho người khác, nếu bạn đang sử dụng trong thẻ đầu của bạn nó sẽ vít lên neo của bạn, do đó bạn sẽ cần tham khảo tất cả mọi thứ với một url tuyệt đối –

+1

Nó làm việc cho tôi là tốt. Tôi cũng phải đặt document.HtmlOptions.AddLinks = true; và chạy document.HtmlOptions.LinkPages(); sau khi làm phẳng tài liệu. –

3

Đối với những gì đáng giá, tôi đã có kết quả không phù hợp qua số AddImageHtml liên quan đến các dấu trang được lưu trữ. Cách đáng tin cậy nhất để thực hiện điều này là thông qua phương pháp AddBookMark nhưng điều này sẽ liên quan đến công việc đáng kể hơn khi bạn đang làm việc để tự xây dựng lại nội dung PDF và hỗ trợ HTML trong thời trang đó bị giới hạn. Thêm thông tin về phương pháp này có thể được tìm thấy tại địa chỉ:

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

Có lẽ phiên bản mới nhất 8 địa chỉ của họ vấn đề này. Dấu trang luôn dường như giải quyết đến một vị trí tuyệt đối thay vì tương đối như bạn thấy trong trình duyệt của bạn thông qua HTML thông thường.

1

Một phương pháp mà đã làm việc cho tôi trong phiên bản ABCpdf mới nhất (9) là thêm một bookmark cho mỗi trang trong tài liệu của bạn:

For i = 1 to pdf.PageCount 

    pdf.PageNumber = i 
    pdf.AddBookmark("Page " & i, True) 

Next 

Sau đó, nơi bạn muốn chèn một liên kết mà bạn có thể tham khảo các bookmark - trong trường hợp này, chúng ta tạo một bảng nội dung bởi vòng lặp qua từng bookmark chúng tôi đã tạo:

For Each bm As Bookmark In pdf.Bookmark 

    toc &= "<Font annots='goto:" + bm.Page.PageNumber.ToString() + "'>" & bm.Title & "</Font><br>" 

Next 

pdf.AddHtml(toc) 

đội Websupergoo cung cấp cho tôi với một số mã ví dụ và đó là những gì này là dựa tắt của - vì vậy nhờ họ !

Các vấn đề liên quan