java - Apache PDFBox - 无法减小 PDF 内容的大小

标签 java apache pdf pdfbox

我正在尝试使用 PDFBox 调整 PDF 大小,以便稍后为页眉和页脚留出一些空间。在大多数情况下我都能做到这一点,除非页面大小很大。

页面宽度和高度 = 3168.0::22023.0(磅)

我正在使用以下代码:

public static void main(String[] args) {
    // TODO Auto-generated method stub
    try {
    //String pdfFilename = "/MuhimbiPOC/Templates/Source_doc_withheaderfooter.pdf";
    //String pdfFilename = "/MuhimbiPOC/Templates/3.pdf";
    String pdfFilename = "/MuhimbiPOC/Templates/PDFsam_3.pdf";
    PDDocument document = PDDocument.load(new File(pdfFilename));
    PDDocument documentPDF = new PDDocument();
    PDFRenderer pdfRenderer = new PDFRenderer(document);
    PDPage pge = new PDPage();
    int pageCounter = 0;
    for (PDPage page : document.getPages())
    {

        final PDRectangle mediaBox = page.getMediaBox();
        mediaBox.setUpperRightX((float) (page.getMediaBox().getUpperRightX()));
        mediaBox.setUpperRightY(page.getMediaBox().getUpperRightY() + page.getMediaBox().getHeight() * 0.1f);
        mediaBox.setLowerLeftY(page.getMediaBox().getLowerLeftY() - page.getMediaBox().getHeight() * 0.1f); 
        System.out.println("====================================");
        System.out.println((float) (page.getMediaBox().getWidth()) + " :: " + page.getMediaBox().getHeight());
        System.out.println(mediaBox.getWidth() + " :: " + mediaBox.getHeight());
        System.out.println("====================================");
        // note that the page number parameter is zero based
        page.setMediaBox(mediaBox);
    }
    System.out.println("No. of Pages :: " + document.getNumberOfPages());
    document.save(pdfFilename + "_test.pdf");
    System.out.println("Task Completed ... @ " + new Date());
    document.close();


}
 catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
}

除了我提到的情况之外,这对于所有情况都适用。

最佳答案

OP 的代码仅读取和更新页面的MediaBox。但 CropBox 对于页面的可见尺寸更为重要。您可以在this answer中找到可以在页面上定义的不同框的枚举和描述。 .

尽管如此,代码大部分时间都能工作的原因是,如果没有明确给出,CropBox默认为MediaBox

因此,如果页面也明确指定了 MediaBoxCropBox,则应更新代码以更新 MediaBoxCropBox

关于java - Apache PDFBox - 无法减小 PDF 内容的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49427316/

相关文章:

java - 如何使变量等待用户按下四个按钮之一?

使用带插值的可变 URL 的 Apache proxypass

php - 如何使用 php 控制 .htaccess 或如何在 .htaccess 文件中输入 php 代码

java - Android Studio 权限拒绝

java - 用 MySQL 数据修改 JTable 的列标题

java - Tomcat Server.xml 中的动态通配符设置(非 www)

PHP:mPDF/pdf 库/是否可以循环创建多个 pdf 文件?

java - 如何在PDF文档中添加隐藏图像?

javascript - 如何在 acrobat pdf 上应用密码提示 javascript

java - 调试 OSGi 组件激活/停用问题