Вопрос по java, image – Получить 1-ю страницу pdf в виде изображения из массива байтов pdf

1

Я получаю PDF вbyte array, Я хочу преобразовать только 1-ю страницу PDF вimage.

Я устал от занятий, предоставляемыхcom.lowagie.text.pdf следующее -

PdfReader reader = new PdfReader(input);
reader.selectPages("1");
File file = new File("D:/img1.jpg");
BufferedImage pdfImage = ImageIO.read(new ByteArrayInputStream(reader.getPageContent(1)));
ImageIO.write(pdfImage, "jpg", file);

Это дает мне исключение, когдаImageIO.write называется? Когда я получаю размер байтового массива, возвращенного reader.getPageContent (1), я получаю значение 1000+. Что меня смущает, так это почему я получаю исключение.

Исключение -

java.lang.IllegalArgumentException: image == null!

Я тоже попробовал itext, но это было бесполезно.

Не могли бы вы предложить мне способ получить только изображение 1-й страницы (1-й страницы в качестве изображения) из байтового массива файла PDF?

Я не думаюgetPageContent возвращает изображение. Вы уверены, что эта библиотека предлагает такую функциональность? Piotr Praszmo
@Banthar -getPageContentвозвращаетсяbyte array который я передаю, чтобы получитьByteArrayInputStream а потом я пытаюсь написатьImage. JHS

Ваш Ответ

2   ответа
1

это невозможно с iText (по крайней мере, некоторое время назад, когда я искал похожую проблему).

Но вы можете использоватьPDFToImage отApache PDFBox:

String [] args =  new String[7];
args[0] = "-startPage";
args[1] = "1";
args[2] = "-endPage";
args[3] = "1";
args[4] = "-outputPrefix";
args[5] = "MyJpgFile";
args[6] = "MyPdfFile";

PDFToImage.main(args);

Для этого легко написать обертку. Возможно, такая обертка доступна в PDFBox.

1

чтобы другие могли извлечь из этого пользу. После некоторого исследования я нашел это и получил решение.

Посмотри на этоссылка на сайт.

PDFDocumentReader document = new PDFDocumentReader(<byteArraOfThePDF>);
PageDetail pageDetail = new PageDetail("<docIDanything>", "", <pagenumber>, "");
ResourceDetail det = document.getPageAsImage(pageDetail);

BufferedImage image = ImageIO.read(new ByteArrayInputStream(det.getBytes()));
File file = new File("d:/img2.jpg");
ImageIO.write(image, "jpg", file);
Знаете ли вы, что do-pdf на самом деле построен на PDFBox?

Похожие вопросы