找不到PDF标题签名

时间:2015-10-12 06:11:35

标签: java itext

我的iText pdf创建代码低于PdfStamper,我在后面的代码中需要InvalidPdfException才能呈现html内容,但在创建PdfStamper时会抛出异常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();
    }

修改

undefined_function

1 个答案:

答案 0 :(得分:5)

你有两个问题:

问题1:

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

在第5步之后,您只有一份完整的PDF文档。由于您没有阅读完整的PDF,因此获得InvalidPdfException是正常的。

问题2:

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

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