我使用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免費嗎? –