iText: разбить PDF на несколько PDF (1 на страницу) - PullRequest
3 голосов
/ 21 апреля 2011

Что мне нужно, так это: учитывая 10-страничный pdf-файл, я хочу отобразить каждую страницу этого pdf внутри таблицы в Интернете.Каков наилучший способ достичь этого?Я думаю, один из способов - разделить этот 10-страничный pdf-файл на 10 1-страничных pdf и программно отобразить каждый pdf в строку таблицы.Могу ли я сделать это с помощью iText?Есть ли лучший способ сделать это?

Ответы [ 2 ]

15 голосов
/ 21 апреля 2011

С Разделение файла PDF (с использованием iText)

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
         */

    }
}

Множество примеров iText здесь .

0 голосов
/ 01 мая 2018

С PDDocument вы можете сделать это очень легко.

Вам просто нужно использовать список Java типа PDDocumen t и функцию Splitter для разделения документа.

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...