9
PDF 파일에서 이미지를 추출하려고합니다.올바른 순서로 iText를 사용하여 PDF에서 이미지를 추출하는 방법은 무엇입니까?
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 바이트입니다. 이미지를 찾을 수 없습니다.
제 질문은 올바른 순서로 PDF 파일의 모든 이미지를 얻는 것이 올바른 방법 일 것입니다.
도이 iText의 PDXObjectImage 부분인가? –
@FilipeCorreia nratx가 Apache PDFBox로 전환 한 것을 잊어 버렸습니다. – matt
일부 PDF 파일의 경우'PDResources resources = page.getResources();'행을'PDResources resources = page.findResources(); '로 바꿔야합니다. – Tim