Как масштабировать размер страницы от A3 до A4 в itext7 C #? - PullRequest
1 голос
/ 30 мая 2019

Я пытался конвертировать HTML в PDF с размером страницы А4.Но содержание слишком длинное и PDF разбит на 2 страницы.Я просто хочу это на одной странице.Так что моя идея - преобразовать в формат PDF A3, а затем уменьшить до формата A4.Но другая проблема заключается в уменьшении размера страницы A3 до размера страницы A4.

1 Ответ

2 голосов
/ 30 мая 2019

1) Преобразование вашего HTML в документ формата A3

2) Итерация по страницам и копирование каждой страницы в виде formXObject

3) Для каждой страницы формыXObject:

а) масштабировать его с коэффициентом 0,5;

б) добавить к итоговому документу.

Соответствующий Java-код выглядит следующим образом (для вас не должно быть проблем с переносом его на C #, поскольку API iText точно такой же):

    // 1
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PdfDocument pdfDocument = new PdfDocument(new PdfWriter(baos));
    pdfDocument.setDefaultPageSize(PageSize.A3);
    HtmlConverter.convertToPdf(new FileInputStream(sourcePath), pdfDocument);

    PdfDocument resultantDocument = new PdfDocument(new PdfWriter(destPath));

    pdfDocument = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray())));
    // 2
    for (int i = 1; i <= pdfDocument.getNumberOfPages(); i++) {
        PdfPage page = pdfDocument.getPage(i);
        PdfFormXObject formXObject = page.copyAsFormXObject(resultantDocument);
        PdfCanvas pdfCanvas = new PdfCanvas(resultantDocument.addNewPage());
        // 3a and 3b
        pdfCanvas.addXObject(formXObject, 0.5f, 0, 0, 0.5f, 0, 0);
    }

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