如何使用iText从标题创建内容的书签?

时间:2017-01-30 11:54:20

标签: java pdf-generation itext

我从html代码列表中创建pdf。它生成pdf非常好。但我想在pdf中添加目录。目录应该从h1,h2等创建。我该怎么办?以下是我创建pdf的功能。我查看了iText网站上的现有示例,但我无法按照我的意愿使其工作。

public static void createMultiplePagedPdf(String destinationFile, ArrayList<String> htmlStrings,
        String cssLocation, HeaderFooter headerFooter, boolean tableOfContents) {

    String css = null;
    ElementList list = null;
    Document document = new Document();
    try {
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(destinationFile));
        if(headerFooter!=null)
            writer.setPageEvent(headerFooter);
        TableOfContent tocEvent = new TableOfContent();
        writer.setPageEvent(tocEvent);
        document.open();

        if(tableOfContents){
             tocEvent.setRoot(writer.getRootOutline());
             for (TOCEntry entry : tocEvent.getToc()) {
                    Chunk c = new Chunk(entry.title);
                    c.setAction(entry.action);
                    document.add(new Paragraph(c));
                }
        }

        if (cssLocation != null)
            css = readCSS(cssLocation);

        for (String htmlfile : htmlStrings) {
            if (css != null)
                list = XMLWorkerHelper.parseToElementList(htmlfile, css);
            else
                list = XMLWorkerHelper.parseToElementList(htmlfile, null);
            for (Element e : list) {
                document.add(e);
            }
        }
        System.out.println("Pdf Created successfully");
        document.close();
    } catch ...
}

tocEvent.getToc()返回一个空列表。当我将if语句移到代码末尾时,它并不重要。 我的TOCEntry和TableOfContent类与Creating Table of Contents using events使用iText5的第一个示例中所写的相同。 提前谢谢!

0 个答案:

没有答案