मैं पीडीएफ फाइल से छवियों को निकालने की कोशिश कर रहा हूं। मैं एक वेब पर उदाहरण के लिए, यह ठीक काम किया पाया:सही क्रम में iText के साथ पीडीएफ से छवियों को निकालने के लिए कैसे?
PdfReader reader;
File file = new File("example.pdf");
reader = new PdfReader(file.getAbsolutePath());
for (int i = 0; i < reader.getXrefSize(); i++) {
PdfObject pdfobj = reader.getPdfObject(i);
if (pdfobj == null || !pdfobj.isStream()) {
continue;
}
PdfStream stream = (PdfStream) pdfobj;
PdfObject pdfsubtype = stream.get(PdfName.SUBTYPE);
if (pdfsubtype != null && pdfsubtype.toString().equals(PdfName.IMAGE.toString())) {
byte[] img = PdfReader.getStreamBytesRaw((PRStream) stream);
FileOutputStream out = new FileOutputStream(new File(file.getParentFile(), String.format("%1$05d", i) + ".jpg"));
out.write(img);
out.flush();
out.close();
}
}
जो मुझे सभी छवियों को दे दी है, लेकिन छवियों गलत क्रम में थे। मेरा अगला प्रयास इस तरह देखा:
for (int i = 0; i <= reader.getNumberOfPages(); i++) {
PdfDictionary d = reader.getPageN(i);
PdfIndirectReference ir = d.getAsIndirectObject(PdfName.CONTENTS);
PdfObject o = reader.getPdfObject(ir.getNumber());
PdfStream stream = (PdfStream) o;
// rest from example above
}
हालांकि o.isStream() == सच है, मैं केवल मिल/लंबाई और/फ़िल्टर और धारा केवल 100 बाइट्स लंबा है। कोई छवि बिल्कुल नहीं मिलती है।
मेरा प्रश्न सही होगा कि पीडीएफ फाइल से सभी छवियों को सही क्रम में प्राप्त करने का सही तरीका क्या होगा।
भी पंछी की PDXObjectImage हिस्सा है? ऐसा लगता है कि यह –
@FilipeCorreia nratx यह उल्लेख करने के लिए भूल गया कि वह अपाचे पीडीएफबॉक्स पर स्विच कर रहा है। – matt
कुछ पीडीएफ फाइलों के लिए लाइन 'PDResources संसाधन = page.getResources(); '' PDResources संसाधन = page.findResources(); ' – Tim