0
我想在現有的PDF中提供超鏈接,點擊時將打開該文件。如何才能做到這一點?Java使用itext設置本地文件現有pdf中的超鏈接
我嘗試下面的代碼就工作的優良外部超鏈接一樣http://www.google.com但不工作的本地文件的超鏈接一樣d:/intro.pdf。
我正在使用itext pdf庫。
代碼:
String in = "D:/introduction.pdf";
String out = "D:/introduction.pdf";
try {
PdfReader reader = new PdfReader(in);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper(reader, baos);
PdfContentByte canvas=stamper.getOverContent(6);
Chunk imdb = new Chunk("Local Link");
imdb.setAnchor("http://www.google.com"); // this work
// imdb.setAnchor("D://intro.pdf"); // this does not work
ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT, new Phrase(imdb), 100, 10, 0);
stamper.close();
FileOutputStream fileOutputStream = new FileOutputStream(out);
IOUtils.write(baos.toByteArray(), fileOutputStream);
} catch (Exception e) {
}
我也嘗試使用如下註解:通過@布魯諾Lowagie
PdfAnnotation annotation;
PdfName aa=new PdfName("test test");
annotation = PdfAnnotation.createLink(stamper.getWriter(),
new Rectangle(50f, 750f, 180f, 800f),aa,PdfAction.gotoRemotePage("file:///D:/intro.pdf","1", false, true));
annotation.setTitle("Click Here");
stamper.addAnnotation(annotation, 1);
我也嘗試下面的代碼註釋:它建立在給定鏈路但在intro.pdf文件,當我點擊鏈接它在同一頁上(intro.pdf)]
按照上述圖片
PdfReader reader1 = new PdfReader("D://introduction.pdf");
PdfStamper stamper1 = new PdfStamper(reader1, new FileOutputStream("D://intro.pdf"));
PdfAnnotation link1 = PdfAnnotation.createLink(stamper1.getWriter(),
new Rectangle(136, 780, 559, 806), PdfAnnotation.HIGHLIGHT_INVERT,
new PdfAction("D://introduction.pdf", 1));
link1.setTitle("Click Here");
stamper1.addAnnotation(link1, 2);
stamper1.close();
預先感謝(的intro.pdf頁碼-2圖像)。
imdb.setRemoteGoto( 「文件:/// d:/intro.pdf」, 「1」);這也不起作用 –
呃...或者你用'setAnchor()'使用一個URI,或者你用'setRemoteGoto()'使用一個簡單的文件路徑。請看一下這個例子,不要混合使用解決方案。 –
讓我試試這個例子。 –