1

でPDFを取得していbyte arrayます。PDFの1ページ目だけをに変換したい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も試しましたが、役に立たなかった。

PDFファイルのバイト配列から1ページ目の画像(画像として1ページ目)だけを取得する方法を教えてください。

4

2 に答える 2

1

私の知る限り、これはiTextでは不可能です(少なくともしばらく前に、同様の問題を検索していました)。

ただし、 ApachePDFBoxからPDFToImageを使用できます。

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で利用可能です。

于 2012-06-02T14:43:40.683 に答える
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);
于 2012-06-02T16:02:00.480 に答える