Java IText PDF 5-计算页面底部的剩余面积
鉴于以下内容: 如您所见,标题当前位于第4页,内容位于第5页 我在这个文档中有大约25个部分,有没有一种方法可以让页面上的区域保留下来,以评估我的标题和一些内容是否能够适合它Java IText PDF 5-计算页面底部的剩余面积,java,pdf,itext,Java,Pdf,Itext,鉴于以下内容: 如您所见,标题当前位于第4页,内容位于第5页 我在这个文档中有大约25个部分,有没有一种方法可以让页面上的区域保留下来,以评估我的标题和一些内容是否能够适合它 如果我可以评估这一点,我可以使用document()将我的内容推送到另一个页面。newPage()您可以使用PdfPageEvent 以下是一个示例: import com.itextpdf.text.*; import com.itextpdf.text.pdf.*; import java.io.*; public
如果我可以评估这一点,我可以使用
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) {}
}
}
import com.itextpdf.text.*;
导入com.itextpdf.text.pdf.*;
导入java.io.*;
公共类应用程序{
公共静态void main(字符串[]args)抛出FileNotFoundException、DocumentException{
文件=新文件(PageSize.A6,20,20,20,20);
PdfWriter writer=PdfWriter.getInstance(文档,新文件输出流(“/tmp/out.pdf”);
writer.setPageEvent(新的PdfListener());
document.open();
对于(int i=0;i<10;i++){
段落=新段落();
添加(新短语(“第“+i章”);
第章=新的一章(第1款);
第1节=第.addSection章(“第“+i+”.1、2节”);
第2节=第.addSection章(“第“+i+”.2节),第2节);
文件.增补(第章);
文件.增补(第1节);
文件.增补(第2节);
}
document.close();
}
公共静态类PdfListener实现PdfPageEvent{
第1章公共无效(PDF编写人、文件dcmnt、浮动f、段落prgrph){
如果(f<50.0f){
dcmnt.newPage();
}
}
公共void onChapterEnd(PdfWriter writer,Document dcmnt,float f){}
公共无效部分(PDF编写者、文件dcmnt、浮动f、int i、段落prgrph){
如果(f<50.0f){
dcmnt.newPage();
}
}
公共void onSectionEnd(PDFWWriter编写器、文档dcmnt、浮点f){}
公开作废待处理文档(PDF编写者,文档dcmnt){}
开始页上的公共无效(PdfWriter writer,文档dcmnt){}
公共无效onEndPage(PDFWWriter编写器,文档dcmnt){}
公共无效onCloseDocument(PDFWWriter编写器,文档dcmnt){}
公共无效段落(PDF编写者、文档dcmnt、浮点f){}
段落结束时的公共无效(PDF编写器、文档dcmnt、浮点f){}
public void onGenericTag(PDFWWriter编写器,文档dcmnt,矩形rctngl,字符串){}
}
}
点(0/0)位于左下角-不在页面开头您可以使用
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) {}
}
}
import com.itextpdf.text.*;
导入com.itextpdf.text.pdf.*;
导入java.io.*;
公共类应用程序{
公共静态void main(字符串[]args)抛出FileNotFoundException、DocumentException{
文件=新文件(PageSize.A6,20,20,20,20);
PdfWriter writer=PdfWriter.getInstance(文档,新文件输出流(“/tmp/out.pdf”);
writer.setPageEvent(新的PdfListener());
document.open();
对于(int i=0;i<10;i++){
段落=新段落();
添加(新短语(“第“+i章”);
第章=新的一章(第1款);
第1节=第.addSection章(“第“+i+”.1、2节”);
第2节=第.addSection章(“第“+i+”.2节),第2节);
文件.增补(第章);
文件.增补(第1节);
文件.增补(第2节);
}
document.close();
}
公共静态类PdfListener实现PdfPageEvent{
第1章公共无效(PDF编写人、文件dcmnt、浮动f、段落prgrph){
如果(f<50.0f){
dcmnt.newPage();
}
}
公共void onChapterEnd(PdfWriter writer,Document dcmnt,float f){}
公共无效部分(PDF编写者、文件dcmnt、浮动f、int i、段落prgrph){
如果(f<50.0f){
dcmnt.newPage();
}
}
公共void onSectionEnd(PDFWWriter编写器、文档dcmnt、浮点f){}
公开作废待处理文档(PDF编写者,文档dcmnt){}
开始页上的公共无效(PdfWriter writer,文档dcmnt){}
公共无效onEndPage(PDFWWriter编写器,文档dcmnt){}
公共无效onCloseDocument(PDFWWriter编写器,文档dcmnt){}
公共无效段落(PDF编写者、文档dcmnt、浮点f){}
段落结束时的公共无效(PDF编写器、文档dcmnt、浮点f){}
public void onGenericTag(PDFWWriter编写器,文档dcmnt,矩形rctngl,字符串){}
}
}
点(0/0)位于左下角-不在页面开头