使用iText从pdf文件中提取一个页面 [英] extracting one page from pdf file using iText

查看:1023
本文介绍了使用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();
}

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

解决方案

我从您的存储库中下载了一个文件:腹部。 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆