skillup

技術ブログ

Java

JavaでのPDF出力

投稿日:

JavaでのPDFファイルをダウンロードしたいと要望があって社内アプリの開発をしていましたが、思った以上にバグがでてかなり長期戦になりました。

やりたいことは

  • ボタンを押すとファイルのダウンロードが始まる
  • ファイル名は日本語
  • PDFファイルには日本語の表示
  • 帳票なので表を表示したい
  • 使うものはすべてフリーのもの

以上です。

というか現段階でまだできていないんですけどね・・・

一応つまづいたところなどを。

ファイルの日本語名

かなり大変でした。

理屈自体もよくわかってません(汗)

とりあえずコードを書いておきます。iTextというPDFのライブラリを使っています。

http://d.hatena.ne.jp/maachang/20110730/1312008966

mimeタイプ一覧

http://www.geocities.co.jp/Hollywood/9752/mime.html

byte変換

http://javatechnology.net/java/byte-string/

http://a4dosanddos.hatenablog.com/entry/2014/01/28/235133

これで進めてきたのですが、肝心の帳票に出力する部分で日本語フォントが使えないことが発覚。

ここの対応で行けるようなのですが私は駄目でした・・・(汗)

http://ohwhsmm7.blog28.fc2.com/blog-entry-127.html

比較的新しいライブラリということでApachePDFBoxというものを使い始めましたが、日本語表記やテーブル表記も難しく依存関係でもエラーがでました。

一応下記にそれぞれの対処したものとリンクを書いておきます。

apachePDFbox自体の使い方

http://weblabo.oscasierra.net/java-pdfbox-1/

http://qiita.com/EichiSanden/items/8f142782f0b3f997b377

日本語文字列
http://labs.uchicom.com/pdfbox/create_japanese_text.jsp

テーブル文字列
http://fahdshariff.blogspot.jp/2010/10/creating-tables-with-pdfbox.html

ApachPDFBoxの依存関係
https://pdfbox.apache.org/1.8/dependencies.html

テーブルのサンプルなど
githubより
https://github.com/eduardohl/Paginated-PDFBox-Table-Sample

いろいろ調べましたが検索スキルなどがいまだに未熟ですね・・・・

なんとか公式ページを手探りで読んだり、上司にきいたりしながらエラーは消えましたが、いまだゴールにはたどり着けていません(汗)

うまくいったらまた書きます・・・

 

-Java
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

JPAでのデータベースとの同期

このブログでも何回か書いてきたJPAですが、新規レコードをインサートさせた際IDを取得し、そのIDをもとに何らかのキーを作る、そういう処理があったので紹介させていただきます。 何回か書いてますが、JP …

no image

Map,KeySetでのSteam

日常で一番よく使うMapループ系処理について Map KeySetのStreamでの書き方 Map<String,String>でEntrySetではなく、KeySetで展開したいときなど …

no image

Git→Jenkinsの連携 その2

以前、このエントリーでGitとjenkinsの連携に関して書いたんですが、今回jenkinsとgitのソースが別環境にあるケースの構築をしたのでメモしておきます。 Contents1 Jenkinsで …

no image

例外処理について

Javaの例外処理について書きます。 自分はPHPメインでやってきましたので、この例外についてはうろ覚えでした。 PHPだと例外処理はあるんですが、まああんまり使わなかったり、理解がいい加減でもなんと …

no image

glassfishとDB接続 ~CUI操作~

JavaEEではDBを使うときにglassfish内で設定が必要です。 基本的にはGlassFishでDB接続などのようにブラウザで管理画面から情報を入力することが可能です。 ただCUIや設定ファイル …