2011-01-04 28 views
5

Tôi đang cố gắng tạo một bảng nội dung đơn giản (tài liệu chỉ dài 4 trang). Vấn đề tôi gặp phải là khi chuột của tôi biến thành bàn tay, khi tôi nhấp vào thì không có gì xảy ra. Và có các mục tiêu ở trên một trang khác.iText gặp sự cố với Anchors (có thể nhấp nhưng không có gì xảy ra)

tạo ra một bảng của dòng nội dung:

Chunk chunk = new Chunk("Contact information"); 
chunk.setLocalGoto("Contact information"); 
document.add(new Paragraph(chunk)); 

Một trong những mục tiêu:

Anchor anchor = new Anchor("Contact information", font1); 
anchor.setName("Contact information"); 
Chapter chapter = new Chapter(new Paragraph(anchor), 1);  
chapter.setNumberDepth(0); 
document.add(chapter); 

Các Goto String trận đấu với Anchor name vì vậy tôi không thấy những gì tôi đang làm sai.

+0

Bạn đang sử dụng phiên bản iText nào? Đây có thể là một số lỗi neolithic đã được sửa chữa từ lâu ... –

+0

2.1.7/5.0.5 Chỉ muốn kiểm tra nếu có rất nhiều sự khác biệt giữa hai yêu cầu của tôi kể từ khi sử dụng trước đây LGPL trong khi sau này sử dụng AGPL. – jack

Trả lời

1

Trong this example từ iText trong hành động, liên kết nội bộ sử dụng một # trong tên.

Cách tiếp cận khác sẽ là sử dụng Chunk s cho cả liên kết và điểm đến.

chunkDest.setLocalDesitination("foo"); 
... 
chunkLink.setLocalGoto("foo"); // or "#foo"? 

đọc của tôi về PdfDocument (localGoto và localDestination) dẫn tôi để tin rằng thứ tự mà họ đang tạo ra không quan trọng ... chờ ... Không, nên không quan trọng miễn là cả hai thực sự được gọi.

Bạn đã thực sự bước qua mã của mình để đảm bảo cả hai đều được gọi là thực tế?

Tùy chọn khác: Kết thúc chạy. Thả xuống mã nguồn gốc PDF và thực hiện ở đó. Tự xây dựng PdfDestination cho vị trí của chương và PdfAction cho TOC. Một cái gì đó như thế này:

PdfDestination fitH = new PdfDestination(PdfDestination.FITH); 
// the destination doesn't have a page associated with it until you call 
// gotoLocalPage. Kinda goofy, but we can work with it. 
PdfAction link = PdfAction.gotoLocalPage(pageNum, fitH, writer); 
chunk.setAction(link); 

GHI CHÚ:

  1. Bạn có thể tái sử dụng một PdfAction đưa ra nếu bạn cần nhiều liên kết đến cùng một chỗ.
  2. Có nhiều cách để xác định một PdfDestination, tôi chỉ sử dụng cái tôi thích. YMMV.
+0

Có vẻ như bạn không thể sử dụng Anchor's cho mục tiêu và Chunks để liên kết đến mục tiêu. Sử dụng 2 Chunks làm việc tốt. – jack

+0

Sử dụng khối cho cả hai đầu là giải pháp. Cảm ơn bạn ! – steffen

0

Nhìn vào ví dụ tại đây: ftp://ns.tnet.dp.ua/pub/ORACLE/Developers/Java_Doc_LIB/PDFLib/iText/tutorial/ch03.html có vẻ như các liên kết nội bộ bạn cần đặt tham chiếu thành "#" + {tên neo}.

Ví dụ liên kết nội bộ:

Anchor anchor1 = new Anchor("This is an internal link"); 
anchor1.setName("link1"); 
Anchor anchor2 = new Anchor("Click here to jump to the internal link"); 
anchor.setReference("#link1"); 
+0

Đó là nếu bạn sử dụng neo cho các liên kết, tôi sử dụng khối. Tôi đã kiểm tra ví dụ đó nhưng ngay cả sau đó các liên kết không hoạt động đó là lý do tại sao tôi đã thử khối. – jack

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