gpt4 book ai didi

java - 将 pdf 内容放在 Apache PDFBox 中 Canvas 的中心

转载 作者:行者123 更新时间:2023-11-30 06:22:15 25 4
gpt4 key购买 nike

我正在使用 Apache PDFBox 2.0.8。我的目标是将 PDF 转换为图像并放大 Canvas 并将内容放在中间,以便我可以在剩余空间中放置一些页眉和页脚。我的问题是 Canvas 正在放大,但内容没有居中,它们粘在底部。

public class PDFRescale {

public static void main(String[] args) {
try {
String pdfFilename = "/MuhimbiPOC/Templates/Source_doc_withheaderfooter.pdf";
PDDocument document = PDDocument.load(new File(pdfFilename));
PDFRenderer pdfRenderer = new PDFRenderer(document);
PDPage pge = new PDPage();
PDFRescale ps = new PDFRescale();


int pageCounter = 0;
for (PDPage page : document.getPages())
{
final PDRectangle mediaBox = pge.getMediaBox();
mediaBox.setUpperRightX((float) (mediaBox.getUpperRightX()));
mediaBox.setUpperRightY((float) (mediaBox.getUpperRightY() * 1.5));
mediaBox.setLowerLeftY((float) (mediaBox.getLowerLeftY() * 1.5));

// note that the page number parameter is zero based
page.setMediaBox(mediaBox);
BufferedImage bim = pdfRenderer.renderImageWithDPI(pageCounter, 140, ImageType.RGB);

// suffix in filename will be used as the file format

ImageIOUtil.writeImage(bim, pdfFilename + "-" + (pageCounter++) + ".png", 140);

}
System.out.println("Task Completed ... ");
document.close();

}
catch (IOException e) {
e.printStackTrace();
}
}

最佳答案

My issue is that the canvas is getting enlarged but the contents are not getting centered, they are stick to the bottom.

这是 mediaBox.getLowerLeftY()0 的 PDF 页面的问题。虽然这很常见,但这不是必需的。如果您使用过更通用的 PDF 选择,您会发现您的问题是以前的内容最终可能会出现在任何地方,甚至在屏幕外!

原因是你这样做

mediaBox.setUpperRightY((float) (mediaBox.getUpperRightY() * 1.5));
mediaBox.setLowerLeftY((float) (mediaBox.getLowerLeftY() * 1.5));

只有当原点位于水平中屏轴上的某个位置时,这才有效。

而是使用类似的东西

mediaBox.setUpperRightY(mediaBox.getUpperRightY() + mediaBox.getHeight() * 0.5f);
mediaBox.setLowerLeftY(mediaBox.getLowerLeftY() - mediaBox.getHeight() * 0.5f);

代码的另一个问题:您只设置了MediaBox而忽略了CropBox。另一方面,pdfRenderer.renderImageWithDPI 使用CropBox。仅对于没有显式 CropBox 的 PDF 页面,您的代码会放大页面区域。对于通用解决方案,您还应该调整 CropBox

关于java - 将 pdf 内容放在 Apache PDFBox 中 Canvas 的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47883065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com