skimemo


skimemo - 日記/2013-11-04/PDFWriter(apwlibrary)で日本語出力を の変更点


#blog2navi()
*PDFWriter(apwlibrary)で日本語出力を [#yd56b636]

androidでPDFファイルを作成するためにぐぐったところ、[[PDFWriter:http://sourceforge.net/projects/apwlibrary/]]が良いという事がわかりました。ただ、日本語に対応していません。~
~
とりあえずダウンロードしてソースを確認すると、意外とシンプルです。~
サンプルのデモも付いており、動作を確認してみると、テキストが出力されるようになっています。~
~
''ん? PDFなのにテキスト?''~
~
と思っていろいろ調べてみると、どうやらPDFファイルというのはテキストで記述できることが分かりました。([[超わかりやすい参考文献:http://www.kobu.com/docs/pdf/pdfxhand.htm]])~
~
それらを参考に、日本語フォント指定をできるようにしてみました。~
ただし、かなりなんちゃってなので、以下の制限があります。~
--フォントは埋め込まない(方法が分からなかった)
--フォント幅も結構適当(埋め込まないと等幅になるらしい)
--エンコードはSJIS(90ms-RKSJ-H)固定(Unicodeにトライしたけど何故かうまくいかなかった)
--androidの標準(のはずの)Droid Sans Japaneseが指定できない(トライしたけど何故か表示されなかった)


一応以下のフォント指定が可能ですが、PDFファイル内の属性として指定可能なだけで、フォント幅はすべて一定です。~
|フォント名|指定文字列|
|MSゴシック|MS_GOTHIC|
|MS明朝|MS_MINCHO|
|MSPゴシック|MSP_GOTHIC|
|MSP明朝|MSP_MINCHO|
|メイリオ|MEIRYO|
~
使用例:
#code(java){{
	// PDF作成(A4ヨコ)
	PDFWriter  mPDFWriter = new PDFWriter(PaperSize.A4_HEIGHT, PaperSize.A4_WIDTH);
	// フォント指定
	mPDFWriter.setFont(JapaneseFonts.MEIRYO);
	mPDFWriter.addTextAsHex(X, Y, fontSize, JapaneseFonts.stringToSjisHex("abcihjk全角もじれつ"));
	// ファイルに出力
            :
}}
~
出力例:
#ref(zenkakumojiretsu.png)
~
** 必要なもの [#d3087c7d]
+ apwlibraryをダウンロード
+ 以下のファイルを追加・置き換える
-- [[JapaneseFonts.java:http://www.webdb.co.jp/~atsumi/skimemo/htmlinsert/JapaneseFonts.java]]
-- [[Page.java:http://www.webdb.co.jp/~atsumi/skimemo/htmlinsert/Page.java]]
-- [[PDFWriter.java:http://www.webdb.co.jp/~atsumi/skimemo/htmlinsert/PDFWriter.java]]


以上です。フォントファイルを埋め込もうと頑張りましたが挫折しました。PDFのフォーマット難しい・・・。~
なお、apwlibraryはBSDライセンスです。(上記ソースもBSDライセンスです)~
~
参考文献:~
 手書きPDF入門 - http://www.kobu.com/docs/pdf/pdfxhand.htm~
 Portable document format(Adobe) - http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf


RIGHT:Category: [[[android>日記/Category/android]]] - 11:57:23
----
RIGHT:&blog2trackback();
- comment1, http://buta-apap-caff.org/ Buy Fioricet without prescription,  =]], http://orderpaxil.org/ Order Paxil Online,  106143,  -- [[Kbyabavj]] &new{2014-04-16 (水) 05:45:55};

#comment(above)
#blog2navi()