gpt4 book ai didi

java - 使用 PDFBox 设置数字格式

转载 作者:行者123 更新时间:2023-12-02 02:59:04 25 4
gpt4 key购买 nike

我有一个 PDF 文件(我无法编辑),其中有一个表格,我可以在其中输入数字。最低的表格单元格会自动对输入进行求和。当我手动输入数字(使用 Acrobat Reader)时,它们的格式正确并且总和工作正常,但是当使用 PDFBox 时,它们不是,即缺少千位分隔符,并且不计算总和。我可以计算总和并输入该字段。顺便说一句,这都是德语语言环境。

在我使用 PDFBox 填充 PDF 后,其他用户可能会使用 Acrobat Reader 对其进行编辑并输入更多数字或对其进行编辑,因此总和必须正常工作。这是我的意思的屏幕截图:numbers on left are not formatted correctly

有没有办法告诉表单字段重新格式化其输入以反射(reflect)它们内部指定的格式?

当我手动将 double 字格式化为“###,##0.00”格式时,总和不再有效。当我手动更改任何输入时,会重新计算总和,并收到错误“输入的值与字段的格式不匹配”​​。不幸的是,由于保密问题,我无法直接共享该文件,但如果需要,我可以尝试仅使用表创建我自己的文件......

Locale.setDefault(Locale.GERMAN);

File bbb = //obviously instantiated to the where the file is
InputStream in = new FileInputStream(bbb);
PDDocument doc = PDDocument.load(in);
PDAcroForm acro = doc.getDocumentCatalog().getAcroForm();

//using the following line messes up the sum
acro.getField("row1").setValue(new DecimalFormat("###,##0.00").format(1000));

//using the following line works (including sum) but no thousands separator
acro.getField("row1").setValue(new DecimalFormat("###,##0.00").format(1000).replaceAll("\\.", ""));

最佳答案

问题是,Acrobat Forms 除了声明性布局(可通过 PDFBox 进行解析和分析)之外,还可以使用 JavaScript 编写脚本,而出于显而易见的原因(例如缺乏完整的 PDF 数据模型和解释器)不在 PDFBox 内评估。

您可以从 PDF 中提取脚本(表单是标准 XML 文档,脚本位于相关脚本标记中),然后尝试在 Java 代码中模仿 JavaScript 的行为。除此之外,无能为力。

关于java - 使用 PDFBox 设置数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57061796/

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