Я использую 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