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

列挙型Enumについて

列挙型のクラスであるEnumについてのメモです。 ちなみにEnumの読み方はイナムまたはイニュームだそうです。 Contents1 列挙型とは?1.1 基本の使い方1.2 key=value的な使い方 …

no image

mavenのリモートリポジトリについて

JPAでO/Rマッパーに慣れてからというもの通常のSQLをごりごり書くのが億劫になってきました。 億劫というかいろいろとリスクがありますね。 問題点としてはコンパイルするときにエラーが検知できなかった …

no image

JSONへの変換

近年はJavaSciprtを利用した動的なサイトが多いため、データのやり取りをAjaxで行うことも多かったりします。 JavaScriptの場合、データをJSON形式で扱うため、サーバー側からレスポン …

no image

StreamのMap処理

Javaのstreamですが知れば知るほどいろいろな機能がありますね。 基本的にプログラムって配列(コレクション含む)とオブジェクトの処理が中心になるので、配列の処理をいかにうまくできるかは非常に大事 …

no image

JPAでのリレーション(アノテーション使用)

JPAでリレーションを管理するとき、最初はアノテーションでやろうとしたんですが、結局やり方がわからずコンストラクタ式をかいて対処してました。 JPAでのリレーションに関して 外部キー制約があるやり方は …