У меня есть документ в формате pdf с одной или несколькими страницами A4. В результате pdf-документ должен быть бумагой A3, где каждая страница содержит две из первой (нечетные слева, даже с правой стороны). Я уже получил это, чтобы сделать страницы А4 в изображениях, и нечетные страницы успешно помещены в первые части новых страниц A3, но я не могу получить четные страницы.PDFBox: поместите две страницы А4 на один A3
public class CreateLandscapePDF {
public void renderPDF(File inputFile, String output) {
PDDocument docIn = null;
PDDocument docOut = null;
float width = 0;
float height = 0;
float posX = 0;
float posY = 0;
try {
docIn = PDDocument.load(inputFile);
PDFRenderer pdfRenderer = new PDFRenderer(docIn);
docOut = new PDDocument();
int pageCounter = 0;
for(PDPage pageIn : docIn.getPages()) {
pageIn.setRotation(270);
BufferedImage bufferedImage = pdfRenderer.renderImage(pageCounter);
width = bufferedImage.getHeight();
height = bufferedImage.getWidth();
PDPage pageOut = new PDPage(PDRectangle.A3);
PDImageXObject image = LosslessFactory.createFromImage(docOut, bufferedImage);
PDPageContentStream contentStream = new PDPageContentStream(docOut, pageOut, AppendMode.APPEND, true, true);
if((pageCounter & 1) == 0) {
pageOut.setRotation(90);
docOut.addPage(pageOut);
posX = 0;
posY = 0;
} else {
posX = 0;
posY = width;
}
contentStream.drawImage(image, posX, posY);
contentStream.close();
bufferedImage.flush();
pageCounter++;
}
docOut.save(output + "\\LandscapeTest.pdf");
docOut.close();
docIn.close();
} catch(IOException io) {
io.printStackTrace();
}
}
}
Я использую Apache PDFBox 2.0.2 (pdfbox-приложение-2.0.2.jar)
Почему вы создаете страницу A3 для каждой страницы источника? Было бы логично создать его только каждые 2 страницы. Вы добавляете его каждые 2 страницы. Btw добавление страницы должно быть сделано после закрытия контента, но не раньше. –
Btw, шаги для более продвинутого решения можно найти здесь: https://stackoverflow.com/questions/26256546/how-to-insert-an-pdpage-within-another-pdpage-with-pdfbox –
@TilmanHausherr Вы могли бы хотите сделать это [закрыть/дублировать] (http://stackoverflow.com/questions/38952984/pdfbox-put-two-a4-pages-on-one-a3#). Кстати, интересуется [PDFBox stackoverflow documentation] (http://stackoverflow.com/documentation/pdfbox)? – mkl