如何使用免费/开源Java API确定给定PDF文件中的页数?
答案 0 :(得分:55)
您可以使用Apache PDFBox加载PDF文档,然后调用getNumberOfPages
方法返回页数。
PDDocument doc = PDDocument.load(new File("file.pdf"));
int count = doc.getNumberOfPages();
答案 1 :(得分:10)
您应该可以使用iText执行此操作。有关如何解决问题,请参阅this thread。 Here是第2章,它在帖子中错误地链接:
PdfReader reader = new PdfReader("SimpleRegistrationForm.pdf");
int pages = reader.getNumberOfPages();
答案 2 :(得分:2)
Apache pdfbox应该可以解决这个问题
答案 3 :(得分:0)
如果使用FOP生成PDF,则可以使用 http://xmlgraphics.apache.org/fop/
您可以使用fop标签计算页数。
如果它只是来自外部源的简单pdf文件,那么您应该检查iText API。
答案 4 :(得分:0)
如果要获取有关PDF的更多信息,请使用以下代码。如果document不包含任何信息,则返回null。 这是apache的pdfbox库。
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
public class DocumentService {
public void showDocumentInfo(){
PDDocument document= PDDocument.load(new File("file.pdf"));
PDDocumentInformation info = document.getDocumentInformation();
System.out.println( "Page Count=" + document.getNumberOfPages() );
System.out.println( "Title=" + info.getTitle() );
System.out.println( "Author=" + info.getAuthor() );
System.out.println( "Subject=" + info.getSubject() );
System.out.println( "Keywords=" + info.getKeywords() );
System.out.println( "Creator=" + info.getCreator() );
System.out.println( "Producer=" + info.getProducer() );
System.out.println( "Creation Date=" + info.getCreationDate() );
System.out.println( "Modification Date=" + info.getModificationDate());
System.out.println( "Trapped=" + info.getTrapped() );
}
}
答案 5 :(得分:0)
int totalPages = 0;
using (var pdfStream = file.OpenReadStream())
{
PdfReader reader = new PdfReader(pdfStream);
totalPages = reader.NumberOfPages;
}