簡體   English   中英

IText PDF 5-計算頁面底部的剩余面積

[英]IText PDF 5 - Calculate the area left on the bottom of a page

鑒於以下內容:

在此處輸入圖片說明

如您所見,標題當前在第4頁上,其內容在第5頁上。

我在本文檔中大約有25個部分,有沒有辦法讓頁面上剩下的區域來評估我的標題和某些內容是否適合?

如果可以評估這一點,則可以使用document().newPage()將我的內容推送到另一個頁面

您可以使用PdfPageEvent

這是一個示例:

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import java.io.*;

public class App {

    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        Document document = new Document(PageSize.A6, 20, 20, 20, 20);
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("/tmp/out.pdf"));
        writer.setPageEvent(new PdfListener());
        document.open();
        for (int i = 0; i < 10; i++) {
            Paragraph paragraph = new Paragraph();
            paragraph.add(new Phrase("The chapter "+i));
            Chapter chapter = new Chapter(paragraph, 1);
            Section section1 = chapter.addSection("The section "+i+".1", 2);
            Section section2 = chapter.addSection("The section "+i+".2", 2);
            document.add(chapter);
            document.add(section1);
            document.add(section2);
        }
        document.close();
    }

    public static class PdfListener implements PdfPageEvent {

        public void onChapter(PdfWriter writer, Document dcmnt, float f, Paragraph prgrph) {
            if( f < 50.0f ){
                dcmnt.newPage();
            }
        }
        public void onChapterEnd(PdfWriter writer, Document dcmnt, float f) {}
        public void onSection(PdfWriter writer, Document dcmnt, float f, int i, Paragraph prgrph) {
            if( f < 50.0f ){
                dcmnt.newPage();
            }
        }
        public void onSectionEnd(PdfWriter writer, Document dcmnt, float f) {}
        public void onOpenDocument(PdfWriter writer, Document dcmnt) {}
        public void onStartPage(PdfWriter writer, Document dcmnt) {}
        public void onEndPage(PdfWriter writer, Document dcmnt) {}
        public void onCloseDocument(PdfWriter writer, Document dcmnt) {}
        public void onParagraph(PdfWriter writer, Document dcmnt, float f) {}
        public void onParagraphEnd(PdfWriter writer, Document dcmnt, float f) {}        
        public void onGenericTag(PdfWriter writer, Document dcmnt, Rectangle rctngl, String string) {}

    }
}

點(0/0)在左下角- 不在頁面開頭

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM