我还没有能够在iText In Action书中找到这个iText问题的解决方案,并希望得到建议。我想要做的是包括技术图表,由PDF中的矩形,线条等组成,使得图表可以像图像一样浮动,但也可以将PDF操作与图形对象(如矩形)相关联。我需要扩展iText吗?
目前,我正在使用WMF包绘制图形并插入WMF图像,但我不能以这种方式关联动作或将图形对象放在图层中。
答案 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}}