![]() |
PDFBox のバックアップ(No.5) |
||
PDFBoxはPDFファイルを操作するオープンソースのライブラリです。 主な機能は以下の通りです。
ライセンス:BSD license
String readFile = "xxx.pdf"; PDDocument pdf = null; // ドキュメントオブジェクト FileInputStream pdfStream = null; try { pdfStream = new FileInputStream(readFile); PDFParser pdfParser = new PDFParser(pdfStream); pdfParser.parse(); // 分析 pdf = pdfParser.getPDDocument(); } catch (Exception e) { e.printStackTrace(); } finally { if (pdfStream != null) { pdfStream.close(); } }
String writeFile = "xxx.pdf"; COSWriter writer = null; FileOutputStream stream = null; try { stream = new FileOutputStream(writeFile); writer = new COSWriter(stream); writer.write(pdf); // ドキュメントオブジェクトの出力 } catch (Exception e) { e.printStackTrace(); } finally { if (stream != null) { stream.close(); } if (writer != null) { writer.close(); } }
String name = "title"; フィールドの名前 String value = "タイトルです"; // フィールドに埋め込む文字列 PDDocumentCatalog docCatalog = pdf.getDocumentCatalog(); PDAcroForm acroForm = docCatalog.getAcroForm(); PDField field = acroForm.getField(name); // フィールド取得 if (field != null) { field.setValue(value); // フィールドに埋め込み } else { System.err.println("フィールドが見つかりません。:" + name); }
String readFile = "C:\\tmp\\Antenna_Data_Sheet.pdf"; PDDocument pdf = null; // ドキュメントオブジェクト FileInputStream pdfStream = null; try { pdfStream = new FileInputStream(readFile); PDFParser pdfParser = new PDFParser(pdfStream); pdfParser.parse(); // 分析 pdf = pdfParser.getPDDocument(); int imageCounter = 1; List pages = pdf.getDocumentCatalog().getAllPages(); Iterator iter = pages.iterator(); while (iter.hasNext()) { // 全ページからイメージを抽出 PDPage page = (PDPage) iter.next(); PDResources resources = page.getResources(); Map images = resources.getImages(); if (images != null) { Iterator imageIter = images.keySet().iterator(); while (imageIter.hasNext()) { String key = (String) imageIter.next(); PDXObjectImage image = (PDXObjectImage) images.get(key); String name = key + "-" + imageCounter; imageCounter++; System.out.println("Writing image:" + name); image.write2file(name); // ファイル出力 } } } } catch (Exception e) { e.printStackTrace(); } finally { if (pdfStream != null) { pdfStream.close(); } }