2011-01-04 1 views
5

간단한 목차를 만들려고합니다 (문서의 길이는 4 페이지에 불과합니다). 내가 가진 문제는 마우스가 손으로 변하는 동안 아무 것도 클릭하지 않으면 발생한다는 것입니다. 그리고 목표는 다른 페이지에 있습니다. 내용 라인의 테이블의iText 앵커에 문제가 있습니다 (클릭 가능하지만 아무 일도 일어나지 않습니다)

생성 : 대상의

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

한 다음 Anchor name

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); 

Goto String 일치 그래서 난 내가 잘못 뭘하는지 볼 수 없습니다.

+0

어떤 iText 버전을 사용하고 있습니까? 이것은 오래 전에 수정 된 신석기의 버그 일 수 있습니다 ... –

+0

2.1.7/5.0.5 후자는 AGPL을 사용하는 반면 전자는 LGPL을 사용하기 때문에 두 가지 사이에 많은 차이가 있는지 확인하고 싶었습니다. – jack

답변

1

내부 링크 이름에 #를 이용한다.

또 다른 접근법은 링크와 대상 모두에 Chunk을 사용하는 것입니다.

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

의 내 독서 PdfDocument (localGoto 및 localDestination)을해야 문제가되지 너무 오래 모두 같은, 아니 ... 잠시 기다려 ... 그들이 생성하는 순서는 중요하지 않습니다 믿고 날 리드 실제로 호출됩니다.

코드를 실제로 밟아 실제로 호출했는지 확인하십시오.

다른 옵션 : End run. PDF 네이티브 코드로 드롭 다운하고 거기에서 수행하십시오. 챕터 위치는 자신 만의 PdfDestination을 만들고 TOC는 PdfAction을 작성하십시오. 이런 식으로 뭔가 :

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); 

참고 : 같은 장소에 여러 링크를 필요로하는 경우

  1. 당신은 주어진 PdfAction을 다시 사용할 수 있습니다.
  2. PdfDestination을 정의하는 방법은 여러 가지가 있습니다. 선호하는 방법을 사용했습니다. YMMV.
+0

대상에 앵커를 사용할 수없고 청크를 대상에 연결할 수없는 것처럼 보입니다. 2 개의 덩어리를 사용하면 문제가 없습니다. – jack

+0

양쪽 끝에 청크를 사용하는 것이 해결책입니다. 고맙습니다 ! – steffen

0

여기에서 예제를 보면 : ftp://ns.tnet.dp.ua/pub/ORACLE/Developers/Java_Doc_LIB/PDFLib/iText/tutorial/ch03.html 내부 링크의 경우 참조를 "#"+ {앵커 이름}으로 설정해야합니다.

내부 링크 :

액션이 iText에서 this example에서
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

링크에 앵커를 사용하는 경우 청크를 사용합니다. 그 예제를 체크 아웃했지만 링크가 작동하지 않아 그 때문에 청크를 시도했습니다. – jack