skimemo


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

_ PDFWriter(apwlibrary)で日本語出力を

androidでPDFファイルを作成するためにぐぐったところ、PDFWriterが良いという事がわかりました。ただ、日本語に対応していません。

とりあえずダウンロードしてソースを確認すると、意外とシンプルです。
サンプルのデモも付いており、動作を確認してみると、テキストが出力されるようになっています。

ん? PDFなのにテキスト?

と思っていろいろ調べてみると、どうやらPDFファイルというのはテキストで記述できることが分かりました。(超わかりやすい参考文献

それらを参考に、日本語フォント指定をできるようにしてみました。
ただし、かなりなんちゃってなので、以下の制限があります。

  • フォントは埋め込まない(方法が分からなかった)
  • フォント幅も結構適当(埋め込まないと等幅になるらしい)
  • エンコードはSJIS(90ms-RKSJ-H)固定(Unicodeにトライしたけど何故かうまくいかなかった)
  • androidの標準(のはずの)Droid Sans Japaneseが指定できない(トライしたけど何故か表示されなかった)

一応以下のフォント指定が可能ですが、PDFファイル内の属性として指定可能なだけで、フォント幅はすべて一定です。

フォント名指定文字列
MSゴシックMS_GOTHIC
MS明朝MS_MINCHO
MSPゴシックMSP_GOTHIC
MSP明朝MSP_MINCHO
メイリオMEIRYO


使用例:

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
-
!
-
!
 
-
!
    // PDF作成(A4ヨコ)
    PDFWriter  mPDFWriter = new PDFWriter(PaperSize.A4_HEIGHT, PaperSize.A4_WIDTH);
    // フォント指定
    mPDFWriter.setFont(JapaneseFonts.MEIRYO);
    mPDFWriter.addTextAsHex(X, Y, fontSize, JapaneseFonts.stringToSjisHex("abcihjk全角もじれつ"));
    // ファイルに出力
            :


出力例:

zenkakumojiretsu.png


_ 必要なもの

  1. apwlibraryをダウンロード
  2. 以下のファイルを追加・置き換える

以上です。フォントファイルを埋め込もうと頑張りましたが挫折しました。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

Category: [android] - 11:57:23


 
Last-modified: 2014-04-16 (水) 21:40:44 (2562d)