首页 > 解决方案 > Pdfwriter:文档没有内容

问题描述

我正在为一家公司创建一个自动提醒系统,并且在重写我的代码时遇到了一些问题(注意:代码已经工作了 - 但重要的是,已经做出了很大的改变)。数小时的困惑和查看我所做的更改并没有解决这个问题。它成功创建了 pdf,元数据被正确添加,方法 addLine 也被正确添加。

我已经上传了我的代码(注意:一些私人信息已被删除)。代码显然包含大量变量,但我几乎可以保证数据变量(如街道、公司、邮政编码、支付金额等)没有问题。没有捕获到异常,也没有抛出错误。

https://pastebin.com/zNJFHuyt获取整个代码(必须添加代码,所以我只需删除一些行:D)

 Document document = new Document();
        String Filepath;

        if(companynumber==0)
            Filepath = "C:/Users/Gebruiker/Desktop/pyxus/opslagaanmaningen/pyxis/" + debiteur + " " + datenow + ".pdf";
        else
            Filepath = "C:/Users/Gebruiker/Desktop/pyxus/opslagaanmaningen/zwaluw/" + debiteur + " " + datenow + ".pdf";

        PdfWriter Writer = PdfWriter.getInstance(document, new FileOutputStream(Filepath));
        document.open();
        addMetaData(document);
        addTitlePage(document, debiteur, bedrijf, termijn, counts, companynumber);
        addline(Writer, counts);
        document.close();

标签: javapdf

解决方案


您的createTable方法包含以下几行:

ArrayList<String> list = new ArrayList<String>();
String invoice = list.get(i);

这会自动抛出一个IndexOutOfBoundsException.

此代码包含在循环中

for(int i = 0; i < Reader.getInvoicesList(debiteur).size(); i++)

Reader.getInvoicesList(debiteur).size()所以这个异常只有在0 或更少时才能被规避。由于您没有观察到异常,因此您的数据必须是这种情况。

但是,这反过来意味着在其中创建的表createTable永远不会添加到文档中,因为它只是在循环结束时才添加到文档中。

因此,添加到 PDF 中的唯一内容是由

addline(Writer, counts);

您应该清理该createTable方法,除了上面提到的那些之外,它还有许多问题。


推荐阅读