IT虾米网

java之如何解决 pdf header signature not found 错误

third_qq_4accc0ab0fa5b582 2023年05月22日 程序员 1139 0

我在我的 java 程序中使用 iText 来编辑现有的 pdf。生成的 pdf 无法打开,它显示 pdf header 签名未找到错误。我正在使用相同名称的输入和输出文件。

private static String INPUTFILE = "/sample.pdf"; 
private static String OUTPUTFILE = "/sample.pdf";        
public static void main(String[] args)  
        throws DocumentException, 
        IOException  
{ 
    Document doc = new Document(); 
    PdfWriter writer = PdfWriter.getInstance(doc,new FileOutputStream(OUTPUTFILE)); 
    doc.open(); 
    PdfReader reader = new PdfReader(INPUTFILE); 
    int n; 
    n = reader.getNumberOfPages(); 
    System.out.println("No. of Pages :" +n); 
    for (int i = 1; i <= n; i++)  
    { 
            if (i == 1)                  
            {             
                   Rectangle rect = new Rectangle(85,650,800,833); 
                   PdfFormField pushbutton = PdfFormField.createPushButton(writer); 
                   pushbutton.setWidget(rect, PdfAnnotation.HIGHLIGHT_PUSH); 
                   PdfContentByte cb = writer.getDirectContent(); 
                   PdfAppearance app = cb.createAppearance(380,201); 
                   app.rectangle(62,100,50,-1); 
                   app.fill(); 
                   pushbutton.setAppearance(PdfAnnotation.APPEARANCE_NORMAL,app); 
                   writer.addAnnotation(pushbutton); 
                   PdfImportedPage page = writer.getImportedPage(reader, i); 
                   Image instance = Image.getInstance(page); 
                   doc.add(instance); 
                } 

请您参考如下方法:

然后尝试先将输入文件重命名为.bak,然后读取.bak,写入.pdf。这可能会给出错误是与读取还是写入有关的线索。

Itext 不是一个单独的 API,而是几个混合在一起的 API。有时很难。我做了:

同时关闭 PdfReaderFileInputStream

同时关闭 DocumentPdfWriter


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!