JAvaはpdfのいくつかの基本的な処理に対して

2414 ワード

apahce孵化器の1つの項目はpdfboxで、これはpdfを操作して処理するjarパッケージです
実現できる方法は
pdf情報抽出:

    public void getContent(String file) throws Exception {
        PDDocument pdf = PDDocument.load(file);
        PDFTextStripper s = new PDFTextStripper();
        s.setStartPage(1);
        s.setEndPage(10);
        String outfile = "1.txt";
        Writer out = new OutputStreamWriter(new FileOutputStream(outfile), "utf8");
        s.writeText(pdf, out);
    }

pdfコンテンツをtxtドキュメントに抽出しますが、グラフ、フォーマットが失われています.
pdf切り取り

    @SuppressWarnings("unchecked")
    public void getPdf(String file, int[] pages) throws Exception {
        Splitter splitter = new Splitter();
        PDDocument document = null;
        List<PDDocument> documents = null;
        document = PDDocument.load(file);
        splitter.setSplitAtPage(1);//  pdf    
        documents = splitter.split(document);
        for (int i = 0; i < pages.length && pages[i] < documents.size(); i++) {
            PDDocument doc = (PDDocument) documents.get(pages[i]);
            FileOutputStream output = null;
            COSWriter writer = null;
            output = new FileOutputStream(pages[i] + ".pdf");//     
            writer = new COSWriter(output);
            writer.write(doc);
            doc.close();
        }
    }

特定のページ番号のpdf、例えばpages=[1,2,3,4,5]を抽出すると、元のpdfの最初の5ページの5つのpdfファイルが出力されます.
pdf接着

    public void buildPdf(String[] files) throws Exception {
        PDFMergerUtility u = new PDFMergerUtility();
        PDDocument out = new PDDocument();
        for (int i = 0; i < files.length; i++) {
            PDDocument doc = PDDocument.load(files[i]);
            u.appendDocument(out, doc);
            doc.close();
        }
        FileOutputStream output = null;
        COSWriter writer = null;
        output = new FileOutputStream("out.pdf");//     
        writer = new COSWriter(output);
        writer.write(out);
        out.close();
    }

いくつかのpdfを新しいpdfにつづる
pdf切り取りとpdf接着はグラフ、フォーマットなどの情報を失わない
必要なjarパッケージを添付します