使用iText从pdf文件中提取一个页面 [英] extracting one page from pdf file using iText
问题描述
我想使用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();
}
这段代码返回页面,但文件大小很大,有时候等于原始文件大小,即使它只是一个页面。
我从您的存储库中下载了一个文件:腹部。 pdf
然后我使用下面的代码来破译PDF:
public static void main(String [] args)throws DocumentException,IOException {
PdfReader reader = new PdfReader(resources / Abdomen.pdf);
int n = reader.getNumberOfPages();
reader.close();
字符串路径;
PdfStamper压模;
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,570KB(约70.8MB),但单独的页面要小得多: b
$ b
我无法重现您描述的问题。
I want to return one page from pdf files from java servlet (to reduce file size download), using itext library. using this code
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();
}
this code returns the page, but the file size is large and some times equals the original file size, even it is just a one page.
I have downloaded a single file from your repository: Abdomen.pdf
I have then used the following code to "burst" that 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();
}
}
To "burst" means to split in separate pages. While the original file Abdomen.pdf is 72,570 KB (about 70.8 MB), the separate pages are much smaller:
I can not reproduce the problem you describe.
这篇关于使用iText从pdf文件中提取一个页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!