gpt4 book ai didi

java - 使用 PDFBox 正确将 PDF 渲染为图像

转载 作者:行者123 更新时间:2023-11-30 02:05:53 31 4
gpt4 key购买 nike

因此,在此应用程序中,我们使用 iText 填写 PDF 表单,并使用 PDFBox 加载填写的 PDF 并将其转换为图像到我们的系统中。

问题出在图像转换时。所有信息都在那里,但复选框......很奇怪?这些复选框内部有一个奇怪的“空框”,而不是 PDF 上设置的样式化复选框“复选标记”。

enter image description here

应该如何:

enter image description here

PDFBox 版本 2.0.11iText版本是5.5.13

这是发生转换的代码的一小段:

PDDocument pdf = PDDocument.load(byteArrayInputStream);
PDFRenderer renderer = new PDFRenderer(pdf);
BufferedImage[] images = new BufferedImage[pdf.getNumberOfPages()];
PDPage page = null;
BufferedImage image = null;
for (int i = 0; i < images.length; i++) {
try {
image = renderer.renderImageWithDPI(i, 300,org.apache.pdfbox.rendering.ImageType.RGB);
...

转换后我也感觉到了“质量损失”。之前,我们使用 PDFBox 1.8,转换质量很低,并且丢失了一些字体格式和样式。自从升级以来,它变得更好,但仍然存在错误。

填充发生的地方:

PdfReader reader = new PdfReader(filePath);

ByteArrayOutputStream lStr = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper(reader, lStr);
AcroFields acroFields = stamper.getAcroFields();

for (Entry<String, Item> map : acroFields.getFields().entrySet()) {
String key = map.getKey();

if (!fields.has(key))
continue;

if (fields.isNull(key))
continue;

acroFields.setField(key, fields.getString(key), true);
}
stamper.setFormFlattening(true);

stamper.close();
reader.close();

...

你们知道这是什么吗?

谢谢!

最佳答案

多亏了 Tilman Hausherr 的建议,它才得以运行。问题确实是运行应用程序的服务器中缺少字体。 (Zapf Dingbats 和/或 MS Gothic)。

在目录“./fonts”或“/usr/share/fonts”(Linux)/“/Windows/Fonts”(Windows)中安装缺少的字体就可以了!

关于java - 使用 PDFBox 正确将 PDF 渲染为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51392670/

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