itext: Как определить ориентацию PDF - PullRequest
0 голосов
/ 24 февраля 2019

Я использую itext5 для уменьшения размера PDF-документа, однако я заметил, что информация о повороте редко используется в метаданных pdf-документов, но все же можно определить ориентацию, проверив ширину и высоту страницы, но с помощьюВ следующем документе PDF я получаю PDF, который имеет обе страницы в альбомной и книжной ориентации, однако все страницы отображаются в одинаковой ориентации (в обычных средствах просмотра PDF).У меня вопрос, где хранится эта информация?Как программа просмотра PDF может отобразить документ как следует?

Это оригинальный файл PDF

Это метаданные, которые я могу получить

Используемый метод:

Document document = new Document(MarginsPDFHelper.DIM_PAGE, MarginsPDFHelper.MARGIN_GEN, MarginsPDFHelper.MARGIN_GEN, MarginsPDFHelper.MARGIN_TOP, MarginsPDFHelper.MARGIN_BOT);
try {
    PdfReader reader = new PdfReader(pdfByte);
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    PdfWriter writer = PdfWriter.getInstance(document, outputStream);
    document.open();
    PdfContentByte content = writer.getDirectContent();
    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        document.newPage();
        PdfImportedPage page = writer.getImportedPage(reader, i);
        Rectangle pageSize = reader.getPageSizeWithRotation(i);
        float scaleX = MarginsPDFHelper.DIM_PAGE.getWidth() / pageSize.getWidth();
        float scaleY = MarginsPDFHelper.DIM_PAGE.getHeight() / pageSize.getHeight();
        float scale = Math.min(scaleX, scaleY);
        content.addTemplate(page, scale, 0, 0, scale, 0, 0);
    }
    return outputStream.toByteArray();
} catch (Exception e) {
    LOGGER.error("Can not scale pdf", e);
} finally {
    if (document.isOpen()) {
        document.close();
    }                                                                                                                        }

Этот результат я получаю после уменьшения с помощью itext5

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