Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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 使用ElementList在第二个服务器上丢失表数据_Java_Itext - Fatal编程技术网

Java 使用ElementList在第二个服务器上丢失表数据

Java 使用ElementList在第二个服务器上丢失表数据,java,itext,Java,Itext,情境(我的任务):我需要计算目录。我的过程看起来像数据->java类->xml->xslt->html->解析元素列表->分析元素列表->生成pdf。在“xslt”阶段,我添加了(未来)表内容点的标记。在“分析元素列表”阶段,我制作了目录,并在元素列表的元素中清除标记。到目前为止,没有任何问题。对于正确的位置点页码,我必须多次形成pdf格式。当我创建第二次(或更多次)pdf时,就会出现问题。表中似乎缺少一些内容(可以是文本和/或图片),但并不是所有内容都消失了 在第一次pdf制作之后,所有内容都

情境(我的任务):我需要计算目录。我的过程看起来像数据->java类->xml->xslt->html->解析元素列表->分析元素列表->生成pdf。在“xslt”阶段,我添加了(未来)表内容点的标记。在“分析元素列表”阶段,我制作了目录,并在元素列表的元素中清除标记。到目前为止,没有任何问题。对于正确的位置点页码,我必须多次形成pdf格式。当我创建第二次(或更多次)pdf时,就会出现问题。表中似乎缺少一些内容(可以是文本和/或图片),但并不是所有内容都消失了

在第一次pdf制作之后,所有内容都出现了。 如果为第二个pdf使用第二个实例ElementList和已解析的元素,使内容正确

恢复ElementList时有什么问题?如何解决

ps.itext-5.5.11+xmlparser-5.5.11

pps。对不起,我的英语很差

private void test() throws DocumentException, IOException {
    // step 1: get parsed elements
    ElementList list = contentElement.get(BODY).getElements();

    // step 2: bytes for first pdf
    byte[] bytes = getBytes(list);

    // step 3: file 1
    File out = new File("1.pdf");
    FileOutputStream fos = new FileOutputStream(out);
    fos.write(bytes);
    fos.close();

    // step 4: reuse ElementList
    bytes = getBytes(list);

    // step 5: file 2
    out = new File("2.pdf");
    fos = new FileOutputStream(out);
    fos.write(bytes);
    fos.close();

    // Why will it be two different file ?
}

private byte[] getBytes(ElementList list) throws DocumentException, IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    Rectangle page = new Rectangle(PageSize.A4);
    page = page.rotate();
    Document doc = new Document(page, 56, 42, 10, 10);
    Rectangle body = new Rectangle(56, 60, 800, 525);
    writer = PdfWriter.getInstance(doc, baos);
    writer.setPageEvent(this);
    doc.open();
    ColumnText text = new ColumnText(writer.getDirectContent());

    for (Element element : list) {

        text.setText(null);
        text.addElement(element);
        boolean makeNewPage =  ColumnText.hasMoreText(text.go());
        while (makeNewPage) {
            doc.newPage();
            text.setSimpleColumn(body);
            makeNewPage = ColumnText.hasMoreText(text.go());
        }
    }
    doc.close();
    byte[] bytes = baos.toByteArray();
    baos.close();
    return bytes;
}

当前算法不支持if div标记内容位于td标记中。我修复了它-删除td标签中的div标签。

一些进程“消费”内容。例如,当您向
ColumnText
对象添加元素并渲染这些元素时,这些元素就消失了<代码>列文本可以直接或间接使用。由于您没有显示任何代码,也没有告诉我们您使用的是哪个版本的iText,因此很难给您提供更准确的答案。Thanx,为了您的帮助,请更新帖子:添加版本和调试代码