首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iText:将一个PDF拆分为几个PDF (每页1个)

iText:将一个PDF拆分为几个PDF (每页1个)
EN

Stack Overflow用户
提问于 2011-04-21 05:10:29
回答 3查看 30.6K关注 0票数 3

我想要的是:给定一个10页的pdf文件,我想在web上的一个表格中显示该pdf的每一页。实现这一目标的最佳方法是什么?我猜一种方法是将这个10页的pdf文件拆分为10个1页的pdf文件,然后以编程方式将每个pdf显示到表的一行上。我能用iText做到这一点吗?有没有更好的方法来实现这一点?

EN

回答 3

Stack Overflow用户

发布于 2011-04-21 05:30:28

来自Split a PDF file (using iText)

代码语言:javascript
复制
import java.io.FileOutputStream;

import com.lowagie.text.Document;
import com.lowagie.text.pdf.PdfCopy;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;

public class SplitPDFFile {

    /**
     * @param args
     */
    public static void main(String[] args) {

        try {
            String inFile = args[0].toLowerCase();
            System.out.println ("Reading " + inFile);
            PdfReader reader = new PdfReader(inFile);
            int n = reader.getNumberOfPages();
            System.out.println ("Number of pages : " + n);
            int i = 0;            
            while ( i < n ) {
                String outFile = inFile.substring(0, inFile.indexOf(".pdf")) 
                    + "-" + String.format("%03d", i + 1) + ".pdf"; 
                System.out.println ("Writing " + outFile);
                Document document = new Document(reader.getPageSizeWithRotation(1));
                PdfCopy writer = new PdfCopy(document, new FileOutputStream(outFile));
                document.open();
                PdfImportedPage page = writer.getImportedPage(reader, ++i);
                writer.addPage(page);
                document.close();
                writer.close();
            }
        } 
        catch (Exception e) {
            e.printStackTrace();
        }

        /* example : 
            java SplitPDFFile d:\temp\x\tx.pdf

            Reading d:\temp\x\tx.pdf
            Number of pages : 3
            Writing d:\temp\x\tx-001.pdf
            Writing d:\temp\x\tx-002.pdf
            Writing d:\temp\x\tx-003.pdf
         */

    }
}

here有很多iText示例。

票数 15
EN

Stack Overflow用户

发布于 2018-05-01 18:42:43

使用PDDocument,您可以很容易地做到这一点。

您只需使用PDDocumen测试类型Java和Splitter函数来拆分文档。

代码语言:javascript
复制
List<PDDocument> Pages=new ArrayList<PDDocument>();
PDDocument.load(filePath);
try {
    Splitter splitter = new Splitter(); 
    Pages = splitter.split(document);
}
catch(Exception e) {
    e.printStackTrace(); // print reason and line number where error exist
}
票数 1
EN

Stack Overflow用户

发布于 2019-08-08 22:25:41

我无可奉告,但投票最多的答案中的这一行

代码语言:javascript
复制
Document document = new Document(reader.getPageSizeWithRotation(1));

应该是

代码语言:javascript
复制
Document document = new Document(reader.getPageSizeWithRotation(i+1));

如果其他页面具有不同的页面大小,则获取正确的pdf大小(它知道这很少见)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5736675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档