itext pdf 5-计算页面底部的剩余面积

u0sqgete  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(485)

鉴于以下内容:

如您所见,标题当前位于第4页,内容位于第5页。
我在这个文件中有大约25节,有没有一种方法,让一个页面上的区域,以评估如果我的标题和一些内容将能够适应它?
如果我可以评估一下,我可以使用 document().newPage()

qybjjes1

qybjjes11#

你可以用 PdfPageEvent 以下是示例:

  1. import com.itextpdf.text.*;
  2. import com.itextpdf.text.pdf.*;
  3. import java.io.*;
  4. public class App {
  5. public static void main(String[] args) throws FileNotFoundException, DocumentException {
  6. Document document = new Document(PageSize.A6, 20, 20, 20, 20);
  7. PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("/tmp/out.pdf"));
  8. writer.setPageEvent(new PdfListener());
  9. document.open();
  10. for (int i = 0; i < 10; i++) {
  11. Paragraph paragraph = new Paragraph();
  12. paragraph.add(new Phrase("The chapter "+i));
  13. Chapter chapter = new Chapter(paragraph, 1);
  14. Section section1 = chapter.addSection("The section "+i+".1", 2);
  15. Section section2 = chapter.addSection("The section "+i+".2", 2);
  16. document.add(chapter);
  17. document.add(section1);
  18. document.add(section2);
  19. }
  20. document.close();
  21. }
  22. public static class PdfListener implements PdfPageEvent {
  23. public void onChapter(PdfWriter writer, Document dcmnt, float f, Paragraph prgrph) {
  24. if( f < 50.0f ){
  25. dcmnt.newPage();
  26. }
  27. }
  28. public void onChapterEnd(PdfWriter writer, Document dcmnt, float f) {}
  29. public void onSection(PdfWriter writer, Document dcmnt, float f, int i, Paragraph prgrph) {
  30. if( f < 50.0f ){
  31. dcmnt.newPage();
  32. }
  33. }
  34. public void onSectionEnd(PdfWriter writer, Document dcmnt, float f) {}
  35. public void onOpenDocument(PdfWriter writer, Document dcmnt) {}
  36. public void onStartPage(PdfWriter writer, Document dcmnt) {}
  37. public void onEndPage(PdfWriter writer, Document dcmnt) {}
  38. public void onCloseDocument(PdfWriter writer, Document dcmnt) {}
  39. public void onParagraph(PdfWriter writer, Document dcmnt, float f) {}
  40. public void onParagraphEnd(PdfWriter writer, Document dcmnt, float f) {}
  41. public void onGenericTag(PdfWriter writer, Document dcmnt, Rectangle rctngl, String string) {}
  42. }
  43. }

点(0/0)位于左下角,而不是页面的开头

展开查看全部

相关问题