gpt4 book ai didi

java - 如何使用 PdfBox 缩放 pdf 文件

转载 作者:行者123 更新时间:2023-12-02 01:42:06 29 4
gpt4 key购买 nike

我正在尝试缩放pdf文件,就像复印机中的缩放功能一样,可以按百分比缩放文档(如下所示:https://inspectapedia.com/graphics/Safari_Page_Setup.jpg),我正在使用pdfbox来管理我的pdf文件。我已经尝试过这段代码,但为什么它不起作用?代码中没有错误。

void Scale(){
try
{
PDDocument doc = PDDocument.load(new File(filePath));
for (int p = 0; p < doc.getNumberOfPages(); ++p)
{
PDRectangle mediaBox = doc.getPage(p).getMediaBox();
mediaBox.transform(Matrix.getScaleInstance(0.5f, 0.5f));
doc.getPage(p).setMediaBox(mediaBox);
}

doc.save(new File(filePathEdited));
} catch (Exception e) {
e.printStackTrace();
}
}

有人知道为什么该代码不起作用吗?

编辑
我需要它在 API 16 上工作

最佳答案

首先

mediaBox.transform(Matrix.getScaleInstance(0.5f, 0.5f));

mediaBox更改为原来大小的一半。相反,它返回代表缩放矩形的路径;当您忽略该表达式的返回值时,这行代码本质上是 NOP(无操作)。

如果你想一下,你会发现 transform 方法显然不能将矩形更改为变换的结果,因为任意仿射变换的结果不需要是不再是一个矩形,尤其是不再与页面边缘平行的矩形。

话虽这么说,即使您的代码缩放了媒体框,结果仍然不是您想要的,结果 pdf 将仅显示原始页面的一部分,因为您只会缩放可见部分 Canvas ,但不是其内容

因此,除了实际缩放媒体框之外,您还必须缩放内容。 IE。您必须在页面内容中预先添加一个附加内容流,并通过缩放变换来更改当前的变换矩阵。

关于java - 如何使用 PdfBox 缩放 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54322450/

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