iText - клонировать существующий контент и добавить на той же странице - PullRequest
0 голосов
/ 01 июня 2018

Я хочу знать, можно ли клонировать существующее содержимое PDF с помощью iText.В основном у меня есть PDF в следующем формате:

Без клонирования контента enter image description here

Я хочу клонировать контент, который находится на левой стороне вышеPDF и хотите получить результат в соответствии с приведенным ниже форматом.

После клонирования содержимого enter image description here

Мне интересно, возможно ли это с помощью класса iText PdfStamper или любого другогокласс iText?

Обновление кода с помощью iText7

public void clonePageContent(String dest) throws IOException {
    // Initialize PDF Document
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
    PdfDocument sourcePdf = new PdfDocument(new PdfReader(SRC));

    // Original page
    PdfPage origPage = sourcePdf.getPage(1);

    // Original page size
    Rectangle orig = origPage.getPageSize();
    PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf);

    // N-up page
    PageSize nUpPageSize = PageSize.LETTER;
    PdfPage page = pdf.addNewPage(nUpPageSize);
    page.setRotation(90);
    PdfCanvas canvas = new PdfCanvas(page);

    // Scale page
    AffineTransform transformationMatrix = AffineTransform
            .getScaleInstance(
                    nUpPageSize.getWidth() / orig.getWidth() / 2f,
                    nUpPageSize.getHeight() / orig.getHeight() / 2f);
    canvas.concatMatrix(transformationMatrix);

    // Add pages to N-up page
    canvas.addXObject(pageCopy, 0, orig.getHeight());
    canvas.addXObject(pageCopy, orig.getWidth(), orig.getHeight());

    pdf.close();
    sourcePdf.close();
}

С помощью приведенного выше кода я не могу произвести вывод, как ожидалось.Может ли кто-нибудь пролить свет на то, что нужно настроить, чтобы получить ожидаемый результат выше?

1 Ответ

0 голосов
/ 07 июня 2018

После стольких дней борьбы приведенный ниже код помогает в достижении вышеуказанного результата, который я ожидал.Надеюсь, это когда-нибудь пригодится кому-то!PS: я новичок в iText7.

public void clonePageContent(String dest) throws IOException {
        // Initialize PDF Document
        PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
        PdfDocument sourcePdf = new PdfDocument(new PdfReader(SRC));

        // Original page
        PdfPage origPage = sourcePdf.getPage(1);

        // Original page size
        Rectangle orig = origPage.getPageSize();
        PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf);
        //PdfCanvas canvas = new PdfCanvas(pageCopy,sourcePdf);


        // N-up page
        PageSize nUpPageSize = PageSize.LETTER;
        PdfPage page = pdf.addNewPage(nUpPageSize).setRotation(90);
        PdfCanvas canvas = new PdfCanvas(page);

        // Scale page
        AffineTransform transformationMatrix = AffineTransform
                .getScaleInstance(
                        page.getPageSize().getWidth() / orig.getWidth(), page.getPageSize().getHeight() / orig.getHeight()
                        );
        canvas.concatMatrix(transformationMatrix);

        System.out.println(page.getPageSize().getWidth());
        System.out.println(orig.getWidth());

        // Add pages to N-up page
        canvas.addXObject(pageCopy, 0, 0);
        canvas.addXObject(pageCopy, 0, 350f); //350f
        //canvas.addXObject(pageCopy, orig.getRight(), orig.getWidth());

        pdf.close();
        sourcePdf.close();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...