• 大小: 6KB
    文件类型: .java
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: Java
  • 标签: itext  PDF  Java  

资源简介

用itext方法生成与Word一样的目录

资源截图

代码片段和文件信息

package com.annoroad.test;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.linkedHashMap;
import java.util.List;
import java.util.Map;

import com.itextpdf.text.Chapter;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Section;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.draw.DottedLineSeparator;

/**
 * @author  youxingyang
 * @Date 2017-5-8 上午9:19:30
 */
public class pdfIndex {
 
    /**
     * EventListner for Content
     */
    private static class ContentEvent extends PdfPageEventHelper {
    
        private int page;
        Map index = new linkedHashMap();
 
        @Override
        public void onstartPage (PdfWriter writer Document document) {
            page++;
        }
 
        @Override
        public void onChapter (PdfWriter writer Document document float paragraphPosition Paragraph title) {
            index.put(title.getContent() page);
        }
 
        @Override
        public void onSection (PdfWriter writer Document document float paragraphPosition int depth Paragraph title) {
            onChapter(writer document paragraphPosition title);
        }
    }
 
    /**
     * EventListner for Index
     */
    private static class IndexEvent extends PdfPageEventHelper {
    
        private int page;
        private boolean body;
        @Override
        public void onEndPage (PdfWriter writer Document document) {
            // set page number on content
            if (body) {
                page++;
                ColumnText.showTextAligned(writer.getDirectContent() Element.ALIGN_CENTER new Phrase(page + ““)
                        (document.right() + document.left()) / 2 document.bottom() - 18 0);
            }
        }
    }
 
    public static void main(String[] args) throws Exception {
    
        // make content pdf (calculate page number)
        Document content = new Document(PageSize.A4 48 48 60 65);
        PdfWriter contentWriter = PdfWriter.getInstance(content new ByteArrayOutputStream());
        //设置事件
        ContentEvent event = new ContentEvent();
        contentWriter.setPageEvent(event);
        content.open();
        List chapterList = new ArrayList();
        
        for (int i = 1; i <= 10; i++) {
            Chunk chaptitle = new Chunk(“The “+ i + “ chapter“);
            Chapter chapter = new Chapter(new Paragraph(chaptitle) i);
            chaptitle.setLocalDestination(chapter.gettitle().getContent());
            for (int j = 0; j < 2; j++) {
        

评论

共有 条评论