Ich erstelle Bericht mit iText 5.1.2. Ich habe zwei PDF-Dokumente. Zuerst habe ich eine Tabelle, in die ich den ganzen Inhalt des zweiten PDF-Dokuments einfügen möchte. Jede Seite ist eine separate Zelle in der Tabelle.Hinzufügen eines PDF-Dokuments zur Tabelle
Meine aktuelle Lösung funktioniert nicht immer wie erwartet. Problem ist, dass für einige PDFs, wenn ich sie zur Tabelle hinzufüge, ihre Seiten um 90 Grad gedreht sind.
Das ist, was ich habe jetzt:
//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();
Ich versuchte PdfCopy aber ich nur beschädigte Datei bekommen jetzt zu verwenden.
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);
}
Die Version von iText, die Sie verwenden, stammt vom 15. August 2011. Warum sollten Sie nicht auf eine neuere Version upgraden? Ihr 'PdfCopy'-Code ist unvollständig und verwirrend. Warum würden Sie eine 'Tabelle' im Kontext von' PdfCopy' erstellen? 'PdfCopy' dient zum Zusammenführen von Dokumenten, nicht zum Erstellen von Dokumenten mit Tabellen. Seiten haben eine Dimension (ausgedrückt als "Rectangle" und eine Rotation (ausgedrückt als ein Wert, der ein Vielfaches von 90 ist). Ich sehe nicht, dass Sie diese Rotation irgendwo berücksichtigen. Außerdem: Ihr Problem ist in der Dokumentation beschrieben; Hast du es gelesen? –
Die Umstellung auf die neue Version ist jetzt leider keine Option Tabelle wurde im ersten Dokument hinzugefügt, sorry, das habe ich im Code-Snippet verpasst. Ich habe gerade _pdfDocument.add (table); _ hinzugefügt. Ich habe Beispiele gesehen Ich versuche, den Inhalt eines PDF-Dokuments in die Tabelle einzufügen, die zu einem anderen PDF-Dokument hinzugefügt wurde –
Ich glaube nicht, dass wir viele Kunden haben, die immer noch iText 5.1.2 verwenden Sie sind ein Kunde? Wenn nicht, sind Sie sicher, dass der Kontext Ihres Projekts die kostenlose Nutzung von iText erlaubt? –