【发布时间】:2018-08-31 19:28:39
【问题描述】:
我正在尝试使用 PDFBox 调整 PDF 的大小,以便稍后为页眉和页脚腾出一些空间。我可以在大多数情况下做到这一点,除非页面很大。
页面宽度和高度 = 3168.0 :: 22023.0 (pts)
我正在使用以下代码:
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();
}
}
这对所有情况都适用,除了我提到的那个。
【问题讨论】:
-
您只需更改 MediaBox。更重要的是 CropBox(如果没有明确给出,则默认为 MediaBox)。因此,也要更新 CropBox。
-
@mkl 感谢您的提示。效果很好:)
-
在这种情况下,我会将该评论作为您可以接受的实际答案。