Comment lire une page particulière (avec un numéro de page) à partir d'un document PDF en utilisant PDFBox?
Cela devrait fonctionner:
PDPage firstPage = (PDPage)doc.getAllPages().get( 0 );
comme vu dans la section BookMark du tutoriel
INSTANTANÉ de la mise à jour 2015, version 2.0.0
Semble que cela a été supprimé et remis (?). getPage est dans le 2.0.0 javadoc . Pour l'utiliser:
PDDocument document = PDDocument.load(new File(filename));
PDPage doc = document.getPage(0);
La méthode getAllPages a été renommée getPages
PDPage page = (PDPage)doc.getPages().get( 0 );
//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){}
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 numériser chaque page individuellement, rechercher un mot-clé, si ce mot-clé est apparu, puis faire quelque chose avec cette page (c'est-à-dire la copier ou l'ignorer).
J'ai essayé 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");
}
}
Ajoutez ceci à l'appel de ligne de commande:
ExtractText -startPage 1 -endPage 1 filename.pdf
Remplacez 1 par le numéro de page dont vous avez besoin.
Voici la solution. J'espère que cela résoudra 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 parsing only one page set both value same (ex:setStartPage(1); setEndPage(1);)
string reslut = stripper.getText(doc);
doc.close();
vous pouvez vous obtenir la méthode getPage sur l'instance PDDocument
PDDocument pdDocument=null;
pdDocument = PDDocument.load(inputStream);
PDPage pdPage = pdDocument.getPage(0);