首页 > 解决方案 > 当字段标记为“按 N 个符号拆分”时,pdfBox acroForm 文本字段中的对齐

问题描述

目的:填写一份PDF表格,其中的字符必须写在方格中(使用pdfBox 2.0.24)。因此,字段中有“分成N个字符”的标志。

模板.pdf

问题:水平对齐不起作用。如果您在任何查看器中打开模板,那么您将能够用手输入信息并正确显示。但是从程序填充后 - 对齐不起作用填充-form.pdf

一些截图:

在查看器中: screenshotInViewer

从程序填写表格后: 截图后程序

将重复该问题的示例:

模板.pdf

代码:

public static byte[] testFillPdf(byte[] pdf, Map<String,String> data) throws Exception{
    PDDocument inDoc = PDDocument.load(pdf);

    PDDocumentCatalog docCatalog = inDoc.getDocumentCatalog();
    PDAcroForm acroForm = docCatalog.getAcroForm();
    acroForm.setXFA(null);
    acroForm.setNeedAppearances(false);

    PDTextField field1 = (PDTextField) acroForm.getField("field1");
    field1.setValue("1");
    PDTextField field2 = (PDTextField) acroForm.getField("field2");
    field2.setValue("2");

    acroForm.refreshAppearances();
    acroForm.flatten();

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    inDoc.setAllSecurityToBeRemoved(true);
    inDoc.save(baos);
    inDoc.close();
    return baos.toByteArray();
}

我找不到解决这个问题的方法。这是一个错误吗?还是我错过了什么?

标签: javapdfpdfbox

解决方案


Tilman Hausherr -“查看代码后,我发现这是一个TODO。issues.apache.org/jira/browse/PDFBOX-5256


推荐阅读