0

1 ページ以上の A4 用紙を含む PDF ドキュメントがあります。結果として得られる pdf ドキュメントは、各ページに最初のページから 2 つが含まれる A3 用紙になるはずです (左側が奇数、右側が偶数)。A4ページを画像にレンダリングするためにすでに取得しており、奇数ページは新しい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-app-2.0.2.jar) を使用しています

4

1 に答える 1

0

あなたの助けと他の質問へのリンクに感謝します-私はすでにそれを読んだと思いますが、私のコードではまだ使用できませんでした. しかし、最終的に PDFClown が仕事をしましたが、同じプログラムで PDFBox と PDFClown を使用するのはあまり良くないと思います。とにかく、A4ページをA3用紙に結合するための私の作業コードは次のとおりです。

public class CombinePages {

public void run(String input, String output) {
    try {
        Document source = new File(input).getDocument();
        Pages sourcePages = source.getPages();

        Document target = new File().getDocument();
        Page targetPage = null;

        int pageCounter = 0;
        double moveByX = .0;
        for(Page sourcePage : source.getPages()) {

            if((pageCounter & 1) == 0) {
                //even page gets a blank page
                targetPage = new Page(target);
                target.setPageSize(PageFormat.getSize(PageFormat.SizeEnum.A3, PageFormat.OrientationEnum.Landscape));
                target.getPages().add(targetPage);
                moveByX = .0;
            } else {
                moveByX = .50;
            }

            //get content from source page
            XObject xObject = sourcePages.get(pageCounter).toXObject(target);
            PrimitiveComposer composer = new PrimitiveComposer(targetPage);
            Dimension2D targetSize = targetPage.getSize();
            Dimension2D sourceSize = xObject.getSize();
            composer.showXObject(xObject, new Point2D.Double(targetSize.getWidth() * moveByX, targetSize.getHeight() * .0), new Dimension(sourceSize.getWidth(), sourceSize.getHeight()), XAlignmentEnum.Left, YAlignmentEnum.Top, 0);
            composer.flush();
            pageCounter++;
        }
        target.getFile().save(output + "\\CombinePages.pdf", SerializationModeEnum.Standard);
        source.getFile().close();
    } catch (FileNotFoundException fnf) {
        log.error(fnf);
    } catch (IOException io) {
        log.error(io);
    }

}

}

于 2016-08-16T09:16:57.890 に答える