考虑以下内容:
正如你所看到的,标题是目前第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)在左下角 - 没有在页面的开始