iText - 如何将动作与图形对象相关联?

时间:2015-04-01 10:22:25

标签: itext

我还没有能够在iText In Action书中找到这个iText问题的解决方案,并希望得到建议。我想要做的是包括技术图表,由PDF中的矩形,线条等组成,使得图表可以像图像一样浮动,但也可以将PDF操作与图形对象(如矩形)相关联。我需要扩展iText吗?

目前,我正在使用WMF包绘制图形并插入WMF图像,但我不能以这种方式关联动作或将图形对象放在图层中。

1 个答案:

答案 0 :(得分:0)

请查看AddLinkImages示例。起初,我计划仅使用WMF文件(根据您的要求),但我没有找到那么多,所以我使用了PNG,一些BMP和一个WMP。

您希望像其他任何对象一样添加这些图像,但您还希望向它们添加操作。这可以实现将图像包装在Chunk内,如本书第2章所述。获得Chunk后,您可以定义一个PdfAction,当点击块(或者在这种情况下,包裹在块中的图像)时将触发public Chunk createImage(String src, String url) throws BadElementException, IOException { Image img = Image.getInstance(src); Chunk chunk = new Chunk(img, 0, 0, true); chunk.setAction(new PdfAction(url)); return chunk; }

changeLeading

请注意,我将true参数设置为changeLeading。如果我不这样做,段落的前导将是文本的前导,并且由于图像通常更大,这将导致文本和图像重叠。通过将true设置为public void createPdf(String dest) throws IOException, DocumentException { Document document = new Document(); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest)); document.open(); PdfContentByte cb = writer.getDirectContent(); document.add(new Paragraph("Objects with links")); Paragraph p = new Paragraph(); p.add(createImage("resources/images/info.png", "http://itextpdf.com/")); p.add(createImage("resources/images/dog.bmp", "http://pages.itextpdf.com/ebook-stackoverflow-questions.html")); p.add(createImage("resources/images/fox.bmp", "http://stackoverflow.com/q/29388313/1622493")); p.add(createImage("resources/images/butterfly.wmf", "http://stackoverflow.com/questions/tagged/itext*")); document.add(p); document.close(); } ,前导将适应图像的高度。

{{1}}

enter image description here