Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PDFbox字体为空_Java_String_Pdf_Pdfbox - Fatal编程技术网

Java PDFbox字体为空

Java PDFbox字体为空,java,string,pdf,pdfbox,Java,String,Pdf,Pdfbox,我正在使用PDFbox库编写一个脚本,用于填充预先存在的PDF中的文本字段 无论出于何种原因,当我尝试使用setValue()方法更改字段中的文本时,我都会得到一个错误(复制如下) 当打印字段的确切外观信息时,它表示字体列为//Helvetica,因此它不是空的,但出于任何原因它只是不想接受 我尝试刷新默认外观,然后尝试设置值并手动将外观设置为无效。如蒙协助,将不胜感激 import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.

我正在使用PDFbox库编写一个脚本,用于填充预先存在的PDF中的文本字段

无论出于何种原因,当我尝试使用setValue()方法更改字段中的文本时,我都会得到一个错误(复制如下)

当打印字段的确切外观信息时,它表示字体列为//Helvetica,因此它不是空的,但出于任何原因它只是不想接受

我尝试刷新默认外观,然后尝试设置值并手动将外观设置为无效。如蒙协助,将不胜感激

import org.apache.pdfbox.cos.COSName;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.font.PDFont;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDCheckBox;
import org.apache.pdfbox.pdmodel.interactive.form.PDField;
import org.apache.pdfbox.pdmodel.interactive.form.PDTextField;

import java.io.File;
import java.io.IOException; 



public class Main {

    

    public static void main(String[] args) throws IOException {
        File file = new File(pathToFile);
        PDDocument document = PDDocument.load(file);
        PDAcroForm acroForm = document.getDocumentCatalog().getAcroForm();
        PDTextField field = (PDTextField) acroForm.getField( "Name" );
        field.setValue("test");
             
    

        
        
        document.save(PathToSaveFile);
         
        
        

    }

}
精确错误消息

线程“main”java.lang.IllegalArgumentException中出现异常:字体为null,请检查/DA条目是否不完整或不正确 在pdfbox。app@2.0.22(1)/org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.insertGeneratedAppearance(AppearanceGeneratorHelper.java:438) 在pdfbox。app@2.0.22(1)/org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.setAppearanceContent(AppearanceGeneratorHelper.java:392) 在pdfbox。app@2.0.22(1)/org.apache.pdfbox.pdmodel.interactive.form.AppearanceGeneratorHelper.setAppearanceValue(AppearanceGeneratorHelper.java:225) 在pdfbox。app@2.0.22(1)/org.apache.pdfbox.pdmodel.interactive.form.PDTextField.constructAppearancess(PDTextField.java:264) 在pdfbox。app@2.0.22(1)/org.apache.pdfbox.pdmodel.interactive.form.PDTerminalField.applyChange(PDTerminalField.java:228) 在pdfbox。app@2.0.22(1)/org.apache.pdfbox.pdmodel.interactive.form.PDTextField.setValue(PDTextField.java:219) 位于freshpdfedit.Main.Main(Main.java:35)

编辑:找到了!,我觉得很愚蠢,因为之前没有看到这一点,但问题是,虽然Acroform自动声明了默认外观,但我创建的字段没有自动声明,这是一个简单的行,用于将Acroforms默认外观分配给字段,并且一切正常


field.setDefaultAppearance(acroForm.getDefaultAppearance())

想出来了!,我觉得很愚蠢,因为之前没有看到这一点,但从我所能看出的问题是,虽然Acroform自动声明了默认外观,但我创建的字段没有自动声明,一个简单的行将Acroforms默认外观分配给字段,一切都很好

神奇的线条是

field.setDefaultAppearance(acroForm.getDefaultAppearance())

想出来了!,我觉得很愚蠢,因为之前没有看到这一点,但从我所能看出的问题是,虽然Acroform自动声明了默认外观,但我创建的字段没有自动声明,一个简单的行将Acroforms默认外观分配给字段,一切都很好

神奇的线条是
field.setDefaultAppearance(acroForm.getDefaultAppearance())

“//Helvetica”不是/DA元素的正确内容。正确的看起来更像“/Helv 12 Tf 0 g”。请共享您的PDF。“//Helvetica”不是/DA元素的正确内容。正确的看起来更像“/Helv 12 Tf 0 g”。请分享你的PDF。