繁体   English   中英

找不到PDF标头签名

[英]PDF header signature not found

我下面有iText pdf创建代码,基本上我以后的代码中需要PdfStamper来呈现html内容,但是在创建PdfStamper时会抛出InvalidPdfException异常:

public static void main(String[] args) throws IOException, DocumentException {

        String TEMP_PDF = "temp.pdf";
        String RESULT = "output1.pdf";
        OutputStream osTemp = null;
        OutputStream osResult = null;
        PdfWriter writer = null;
        PdfReader reader=null;
        PdfStamper stamper=null;
        Document document = new Document(PageSize.LETTER);

        try {
            osTemp = new FileOutputStream(TEMP_PDF);
            osResult = new FileOutputStream(RESULT);
            writer = PdfWriter.getInstance(document, osTemp);
            reader = new PdfReader(TEMP_PDF);
            stamper = new PdfStamper(reader, osResult);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            osTemp.close();
            osResult.close();
            writer.close();
            reader.close();
            stamper.close();
        }
    }

编辑:

public void createPdf(String file) throws DocumentException, IOException {
        Document document = new Document(PageSize.LETTER);
        PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(file));
        document.open();
        int[] coords = new int[] {1, 50, 50, 100, 100} ;
        PdfContentByte canvas = pdfWriter.getDirectContent();
        ColumnText columnText = new ColumnText(canvas);
        String css = "";
        //llx, lly, urx, ury
        columnText.setSimpleColumn(coords[1], coords[2], coords[3], coords[4]);
        ElementList elements = XMLWorkerHelper.parseToElementList("<html><body><b>Bold text</b></body></html>", css);
        for (Element element : elements) {
            columnText.addElement(element);
        }
        columnText.go();
        document.close();
    }

您有两个问题:

问题一:

PdfReader只能读取真实的PDF文件。 这些文件以%PDF-1开头,以%%EOF结尾。 就您而言,您没有这样的文件。 您正在读取TEMP_PDF ,它是一个0字节的文件。 在iText中,您需要5个步骤来创建PDF文件。 您只有创建过程的第1步(创建文档)和第2步(创建编写器)。 您缺少步骤3(打开文档),步骤4(添加内容)和步骤5(关闭文档)。

在第5步之后,您只有完整的PDF文档。由于您没有阅读完整的PDF,因此通常会收到InvalidPdfException

问题2:

您写道:我的代码的PdfStamper需要PdfStamper来呈现HTML内容。

错了 PdfStamper是一个类,可用于在现有PDF文档上标记新内容(水印,表单域值,页眉,页脚)。 PdfStamper会将PDF转换为HTML或将PDF呈现为HTML。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM