使用iText从pdf文件中提取一页

我想使用itext库从java servlet中返回pdf文件中的一页(以减少文件大小下载)。 使用此代码

try { PdfReader reader = new PdfReader(input); Document document = new Document(reader.getPageSizeWithRotation(page_number) ); PdfSmartCopy copy1 = new PdfSmartCopy(document, response.getOutputStream()); copy1.setFullCompression(); document.open(); copy1.addPage(copy1.getImportedPage(reader, page_i) ); copy1.freeReader(reader); reader.close(); document.close(); } catch (DocumentException e) { e.printStackTrace(); } 

此代码返回页面,但文件大小很大,有时等于原始文件大小,即使它只是一页。

我从您的存储库下载了一个文件:Abdomen.pdf

然后我使用以下代码“破解”PDF:

 public static void main(String[] args) throws DocumentException, IOException { PdfReader reader = new PdfReader("resources/Abdomen.pdf"); int n = reader.getNumberOfPages(); reader.close(); String path; PdfStamper stamper; for (int i = 1; i <= n; i++) { reader = new PdfReader("resources/abdomen.pdf"); reader.selectPages(String.valueOf(i)); path = String.format("results/abdomen/p-%s.pdf", i); stamper = new PdfStamper(reader,new FileOutputStream(path)); stamper.close(); reader.close(); } } 

“爆裂”意味着分开分开。 虽然原始文件Abdomen.pdf是72,570 KB(大约70.8 MB),但单独的页面要小得多:

在此处输入图像描述

我无法重现你描述的问题。