我确信有几种方法.但这是我如何做到这一点的一个例子.我只检查页面上的数据量,如果它是< 20个字节我不包含它:
public void removeBlankPdfPages(String pdfSourceFile, String pdfDestinationFile, boolean debug)
{
try
{
// step 1: create new reader
PdfReader r = new PdfReader(pdfSourceFile);
RandomAccessFileOrArray raf = new RandomAccessFileOrArray(pdfSourceFile);
Document document = new Document(r.getPageSizeWithRotation(1));
// step 2: create a writer that listens to the document
PdfCopy writer = new PdfCopy(document, new FileOutputStream(pdfDestinationFile));
// step 3: we open the document
document.open();
// step 4: we add content
PdfImportedPage page = null;
//loop through each page and if the bs is larger than 20 than we know it is not blank.
//if it is less than 20 than we don't include that blank page.
for (int i=1;i<=r.getNumberOfPages();i++)
{
//get the page content
byte bContent [] = r.getPageContent(i,raf);
ByteArrayOutputStream bs = new ByteArrayOutputStream();
//write the content to an output stream
bs.write(bContent);
logger.debug("page content length of page "+i+" = "+bs.size());
//add the page to the new pdf
if (bs.size() > blankPdfsize)
{
page = writer.getImportedPage(r, i);
writer.addPage(page);
}
bs.close();
}
//close everything
document.close();
writer.close();
raf.close();
r.close();
}
catch(Exception e)
{
//do what you need here
}
}