我使用iText 5.1.2创建报告。 我有两个PDF文档。首先,我有我想把第二PDF文档的全部内容的表格。每个页面都是表格中的单独单元格。将PDF文档添加到表格
我目前的解决方案并不总是按预期工作。问题在于,对于某些PDF,当我将它们添加到表格中时,它们的页面会旋转90度。
这是我现在有:
//First document with table
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
Document pdfDocument = new Document(PageSize.A4, 60, 30, 120, 120);
PdfWriter pdfWriter = PdfWriter.getInstance(pdfDocument, buffer);
Rectangle pdfRectangle = pdfDocument.getPageSize();
pdfDocument.open();
PdfPTable table = new PdfPTable(1);
table.setTotalWidth(pdfRectangle.getWidth() - pdfDocument.leftMargin() - pdfDocument.rightMargin());
table.setWidthPercentage(100);
table.setSplitLate(false);
pdfDocument.add(table);
//other PDF document
InputStream otherPdfStream = ...
PdfReader pdfReader = new PdfReader(otherPdfStream);
int numberOfPages = pdfReader.getNumberOfPages();
for (int pageNumber = 1; pageNumber <= numberOfPages; pageNumber++) {
PdfImportedPage pdfImportedPage = pdfWriter.getImportedPage(pdfReader, pageNumber);
Image image = Image.getInstance(pdfImportedPage);
table.addCell(image);
}
...
pdfDocument.close();
pdfWriter.close();
我试图用PdfCopy但现在我只拿到损坏的文件。
ByteArrayOutputStream atiStream = new ByteArrayOutputStream();
PdfDocument atiDocument = new PdfDocument();
PdfCopy copy = new PdfCopy(atiDocument, atiStream);
...
for (int pageNumber = 1; pageNumber <= numberOfPages; pageNumber++) {
PdfImportedPage pdfImportedPage = copy.getImportedPage(pdfReader, pageNumber);
Image image = Image.getInstance(pdfImportedPage);
table.addCell(image);
}
您使用的iText版本日期为2011年8月15日。为什么不升级到更新的版本?你的'PdfCopy'代码不完整且令人困惑。你为什么要在'PdfCopy'的上下文中创建一个'table'? 'PdfCopy'用于合并文档,而不是用表格创建文档。页面有一个维度(表示为“矩形”和一个旋转(表示为90的倍数)。我没有看到你在任何地方都将这个旋转考虑在内。另外:你的问题在文档中有描述。你看了吗? –
切换到新版本不是现在的选项,不幸的是,表格被添加到第一个文档中,对不起,我错过了代码片段中的内容。我刚刚添加了_pdfDocument.add(table); _。用于合并文档,但是我想要做的是在表格中插入一个pdf文档的内容添加到其他pdf文档。 –
我认为我们没有很多客户仍在使用iText 5.1.2。您确定你是一个客户吗?如果不是,你确定你的项目的背景允许使用iText免费吗? –