Lire une page particulière d'un document PDF en utilisant PDFBox

Comment puis-je lire une page particulière (avec un numéro de page) à partir d'un document PDF en utilisant PDFBox?

15
demandé sur missingfaktor 2011-07-27 09:25:06

6 réponses

Cela devrait fonctionner:

PDPage firstPage = (PDPage)doc.getAllPages().get( 0 );

comme vu dans le section Marque-page du tutoriel

Update 2015, Version 2.0.0 SNAPSHOT

semble que cela a été enlevé et remis en place (?). getPage est dans la 2.0.0 javadoc. Pour l'utiliser:

PDDocument document = PDDocument.load(new File(filename));
PDPage doc = document.getPage(0);

getAllPages la méthode a été renommée getPages

PDPage page = (PDPage)doc.getPages().get( 0 );
23
répondu Nicolas Modrzyk 2015-10-16 03:04:47
//Using PDFBox library available from http://pdfbox.apache.org/  
//Writes pdf document of specific pages as a new pdf file

//Reads in pdf document  
PDDocument pdDoc = PDDocument.load(file);

//Creates a new pdf document  
PDDocument document = null;

//Adds specific page "i" where "i" is the page number and then saves the new pdf document   
try {   
    document = new PDDocument();   
    document.addPage((PDPage) pdDoc.getDocumentCatalog().getAllPages().get(i));   
    document.save("file path"+"new document title"+".pdf");  
    document.close();  
}catch(Exception e){}
17
répondu Raymond C Borges Hink 2014-09-26 19:09:57

J'ai pensé ajouter ma réponse ici car j'ai trouvé les réponses ci-dessus utiles, mais pas exactement ce dont j'avais besoin.

dans mon scénario je voulais scanner chaque page individuellement, chercher un mot-clé, si ce mot-clé est apparu, puis faire quelque chose avec cette page (c'est-à-dire copier ou ignorer).

j'ai essayé de simplement et de remplacer les variables communes etc dans ma réponse:

public void extractImages() throws Exception {
        try {
            String destinationDir = "OUTPUT DIR GOES HERE";
            // Load the pdf
            String inputPdf = "INPUT PDF DIR GOES HERE";
            document = PDDocument.load( inputPdf);
            List<PDPage> list = document.getDocumentCatalog().getAllPages();
            // Declare output fileName
            String fileName = "output.pdf";
            // Create output file
            PDDocument newDocument = new PDDocument();
            // Create PDFTextStripper - used for searching the page string
            PDFTextStripper textStripper=new PDFTextStripper(); 
            // Declare "pages" and "found" variable
            String pages= null; 
            boolean found = false;     
            // Loop through each page and search for "SEARCH STRING". If this doesn't exist
            // ie is the image page, then copy into the new output.pdf. 
            for(int i = 0; i < list.size(); i++) {
                // Set textStripper to search one page at a time 
                textStripper.setStartPage(i); 
                textStripper.setEndPage(i);             
                PDPage returnPage = null;
                // Fetch page text and insert into "pages" string
                pages = textStripper.getText(document); 
                found = pages.contains("SEARCH STRING");
                    if (i != 0) {
                            // if nothing is found, then copy the page across to new                     output pdf file
                        if (found == false) {
                            returnPage = list.get(i - 1); 
                            System.out.println("page returned is: " + returnPage);
                            System.out.println("Copy page");
                            newDocument.importPage(returnPage);
                        }
                    }
            }    
            newDocument.save(destinationDir + fileName);

            System.out.println(fileName + " saved");
         } 
         catch (Exception e) {
             e.printStackTrace();
             System.out.println("catch extract image");
         }
    }
4
répondu sam9046 2014-01-28 09:13:49

Ajouter à la ligne de commande d'appel:

ExtractText -startPage 1 -endPage 1 filename.pdf

Changement 1 pour le numéro de page que vous avez besoin.

1
répondu Paulpro 2011-07-27 05:29:45

Vous pouvez obtenir la méthode page sur l'instance PDDocument

PDDocument pdDocument=null;
pdDocument = PDDocument.load(inputStream);
PDPage pdPage = pdDocument.getPage(0);
1
répondu Bilal Shahid 2016-05-25 13:59:46

Voici la solution. Espérons qu'il permettra de résoudre votre problème.

string fileName="C:\mypdf.pdf";
PDDocument doc = PDDocument.load(fileName);                   
PDFTextStripper stripper = new PDFTextStripper();
stripper.setStartPage(1);
stripper.setEndPage(2);
//above page number 1 to 2 will be parsed for only one page set both value same (ex:setStartPage(1);  setEndPage(1);)
string reslut = stripper.getText(doc);

doc.close();
1
répondu Mowazzem Hosen 2018-03-23 08:46:51