itext7 pdf to image
我正在使用iText7(java),正在寻找一种将pdf页面转换为图像的方法。
在较早的iText版本中,您可以执行以下操作:
1 2 | PdfImportedPage page = writer.getImportedPage(reader, 1); Image image = Image.getInstance(page); |
但是iText7没有PdfImportedPage。
我的用例,我只有一页pdf文件。我需要添加表格并调整pdf内容的大小以适合单个页面。在旧的iText中,我将创建一个页面,添加表,将现有的pdf页面转换为图像,调整图像大小并将该调整大小的图像添加到新页面。在iText7中是否有新方法可以做到这一点。
感谢布鲁诺的回答,我使用以下代码进行了此操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | PdfPage origPage = readerDoc.getPage(1); Rectangle rect = origPage.getPageSize(); Document document = new Document(writerDoc); Table wrapperTable = new Table(1); Table containerTable = new Table(new float[]{0.5f,0.5f}); containerTable.setWidthPercent(100); containerTable.addCell("col1"); containerTable.addCell("col2"); PdfFormXObject pageCopy = origPage.copyAsFormXObject(writerDoc); Image image = new Image(pageCopy); image.setBorder(Border.NO_BORDER); image.setAutoScale(true); image.setHeight(rect.getHeight()-250); wrapperTable.addCell(new Cell().add(containerTable).setBorder(Border.NO_BORDER)); wrapperTable.addCell(new Cell().add(image).setBorder(Border.NO_BORDER)); document.add(wrapperTable); document.close(); readerDoc.close(); |
请阅读iText 7的官方文档,尤其是第6章:重用现有的PDF文档
在PDF中,存在Form XObjects的概念。表单XObject是一段PDF内容,存储在页面的内容流之外,因此XObject代表eXternal Object。在表单XObject中使用"表单"一词可能会造成混淆,因为人们可能认为表单是带有字段的可填充表单。为避免这种混淆,我们在iText 5中引入了术语
您引用的类
一词感到困惑。
在iText 7中,我们回到了基础知识。在谈论Form XObject时,我们使用类
这是我们从现有文档中获取
1 2 | PdfDocument origPdf = new PdfDocument(new PdfReader(src)); PdfPage origPage = origPdf.getPage(1); |
这是我们在新文档中使用该页面的方式:
1 2 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf); |
如果要将该
1 | Image image = new Image(pageCopy); |