itext:如何检测PDF方向

时间:2019-02-24 10:55:50

标签: java pdf itext

我正在使用itext5缩小pdf文档的比例,但是我注意到旋转信息很少在pdf文档的元数据中使用,仍然可以通过检查页面的宽度和高度来确定方向,但是使用在pdf文档之后,我最终得到了一个pdf,该页面具有横向和纵向两个页面,但是所有页面都以相同的方向呈现(在常见的pdf查看器中)。 我的问题是该信息存储在哪里? pdf查看器如何能够按原样呈现文档?

This the orignal pdf file

This is the metadata i'm able to retrieve

这是使用的方法:

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();
    }                                                                                                                        }

This the result i get after scaling down with itext5

0 个答案:

没有答案