PDFファイルに利用されている画像をJPG変換します。
以下のライブラリが必要です。
pdfbox-2.0.7.jar
commons-logging-1.2.jar
1 | import java.io.File; |
2 | import java.io.FileOutputStream; |
3 | import java.io.IOException; |
4 | import java.util.Iterator; |
5 |
6 | import javax.imageio.ImageIO; |
7 |
8 | import org.apache.pdfbox.cos.COSName; |
9 | import org.apache.pdfbox.pdmodel.PDDocument; |
10 | import org.apache.pdfbox.pdmodel.PDPage; |
11 | import org.apache.pdfbox.pdmodel.PDPageTree; |
12 | import org.apache.pdfbox.pdmodel.PDResources; |
13 | import org.apache.pdfbox.pdmodel.graphics.PDXObject; |
14 | import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; |
15 |
16 | public class TestPDFBoxPdfToJpg { |
17 |
18 | public static void main(String[] args) { |
19 | //PDFドキュメントをロード |
20 | try (PDDocument document = PDDocument.load( new File( "D:\\test\\pdf\\e-ticket.pdf" ));) { |
21 |
22 | //ページのリストから最初の1ページを取得する |
23 | PDPageTree pageTree = document.getDocumentCatalog().getPages(); |
24 | PDPage page = pageTree.get( 0 ); |
25 |
26 | //ページからリソースを取得し、最初のイメージを取得する。 |
27 | PDResources resources = page.getResources(); |
28 | Iterator<COSName> ite = resources.getXObjectNames().iterator(); |
29 |
30 | int i = 0 ; |
31 |
32 | while (ite.hasNext()) { |
33 |
34 | COSName name = ite.next(); |
35 |
36 | //取得したイメージをファイルに出力 |
37 | PDXObject xobject = resources.getXObject(name); |
38 |
39 | if (xobject instanceof PDImageXObject) { |
40 | PDImageXObject image2 = (PDImageXObject) resources.getXObject(name); |
41 | ImageIO.write(image2.getImage(), "jpg" , new FileOutputStream( "D:\\test\\pdf\\e-ticket" + i + ".jpg" )); |
42 | } |
43 |
44 | i++; |
45 | } |
46 |
47 | } catch (IOException e) { |
48 | e.printStackTrace(); |
49 | } |
50 | } |
51 | } |