説明しているサイトがたくさん出てきます
いくつかライブラリがあるようでこちらから使いやすそうなのを探します
「iText」
「easyPDF」
「PDFLib」
「ApachePDFBox」
なんか簡単そうな iText を使ってみます
ココ参照
今のところ最新版の iText-5.0.5.jar をダウンロード
あとは日本語フォントの iTextAsian.jar をダウンロード
ダウンロードしたら外部JARとして追加します(Eclipse使ってます)
ここにあるソースをコピって少し書き換え実行
import java.io.*; import com.lowagie.text.pdf.fonts.*; import com.itextpdf.text.*; import com.itextpdf.text.pdf.*; public class JPDF { /** * @param args */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub FileOutputStream out = null; BufferedOutputStream bout = null; PdfWriter writer = null; Document doc = null; try { out = new FileOutputStream("test.pdf"); bout = new BufferedOutputStream(out); doc = new Document(new Rectangle(0,0,500,500)); writer = PdfWriter.getInstance(doc, bout); doc.open(); Font kaku_24 = new Font(BaseFont.createFont( "HeiseiKakuGo-W5", "UniJIS-UCS2-H", BaseFont.NOT_EMBEDDED),18); kaku_24.setColor(CMYKColor.RED); doc.add(new Paragraph("これは、サンプルです。", kaku_24)); Font mincho_12 = new Font(BaseFont.createFont( "HeiseiMin-W3", "UniJIS-UCS2-HW-H", BaseFont.NOT_EMBEDDED),12); doc.add(new Paragraph("サンプルとして作成したPDFファイルです。", mincho_12)); doc.add(new Paragraph("果たして、きれいにできたでしょうか。", mincho_12)); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (DocumentException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { doc.close(); System.out.println("ended..."); } } } |
はい、エラーがでました
com.itextpdf.text.DocumentException: Font 'HeiseiKakuGo-W5' with 'UniJIS-UCS2-H' is not recognized.
iTextAsian.jar 内にある HeiseiKakuGo-W5 と UniJIS-UCS2-H がうまく読み込めなさそうです
バージョンが上がったことによる日本語フォントの対応がうまくいっていないのが原因みたいです
iTextAsian.jar を解凍し、
com フォルダ内の lowagie フォルダを itextpdf にリネーム
再度、jar ファイルを作成
※jar ファイルの中身は zip ファイルです。拡張子名を変更しているだけです
import com.lowagie.text.pdf.fonts.*; ↓ import com.itextpdf.text.pdf.fonts.*; |
test.pdf が出力されて出来上がりです
おまけ
Java 経由で PDF の変換はできるのか
どうもフリーで公開されているライブラリを使用してでは
Word や Excel から PDF に変換できるものはなさそうです
どっちかというと変換できるのがほしかったので残念です
探し方に問題があるかもしれないので知っている方は情報求む
以下、参考サイト
0 件のコメント:
コメントを投稿