使用iText从pdf文件中提取一个页面
我想使用itext库从java servlet中返回一个来自pdf文件的页面(以减小文件大小的下载)。 使用此代码使用iText从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是72570 KB(约70.8 MB),单独的页面要小得多:
我无法重现您所描述的问题。
但对于一些文件,如(简介2013 .pdf),生成的文件非常大,请参阅此链接(http://2-dot-sheet-s0.appspot.com/toimage?name=Introduction%202013.pdf&page=1)生成的文件大小约为12 MB等于pdf的大小。 – Ahmed 2015-02-07 14:36:20
我不再在我的电脑上,而是在我的手机上。如果你想让我测试一个特定的文件,你应该这么说。这会让你在将来更加精确。 – 2015-02-07 14:51:22
@Ahmed在文件*简介2013.pdf *你有同样的问题,在问题中讨论[itextsharp:拆分页面大小等于文件大小](http://*.com/questions/15566896/itextsharp-splitted-pages -size-equals-file-size):所有页面共享一个* Resources **字典,** 4 0 R **。因此,分割复制每个页面的所有资源。因此,在分割之前,您应该优化PDF以为每个页面提供单独的** Resources **字典,其中只包含实际在该页面上使用的资源,参见参考资料。我对这个问题的回答。 – mkl 2015-02-09 09:40:15
也许你有一个大的字体或每个页面使用的大图像。在这种情况下,如果在100页中丢弃99个文件,则无关紧要:该页面仍然需要字体和图像,并且PDF文件的大小不会缩小。如果您想获得更有用的答案,您必须向我们提供有关PDF的性质的更多信息。 – 2015-02-07 12:58:45
该文件的副本位于保管箱[文件链接](https://www.dropbox.com/sh/rjkw0uageilbjm0/AAAYRLUk0j0FIk0R3KLYH1Isa/1st%20and%202nd%20Year%20Materials/Anatomy/%D8%AE%D8%A7 %D9%84%D8%AF%20%D9%85%D9%8A%D9%84%D8%A7%D8%AF /%D8%A7%D9%84%D9%85%D9%86%D9% 87%D8%AC%20%D8%A7%D9%84%D9%86%D8%B8%D8%B1%D9%8A?dl = 0),大部分页面都是论文的图片。 – Ahmed 2015-02-07 13:47:32
我已经下载了abdomen.pdf。这是一个只包含图像的PDF。你为什么不提取图像并提供服务?如果您可以提供单独的图像,为什么还需要单页PDF? – 2015-02-07 13:58:18