実現したいこと
PDFで帳票のようなものを出力したいと考えています。
iTextを使用しています。
iTextのバージョンは5です。
発生している問題
PDFファイル自体は作成されるのですが、日本語の文章が出力されません。
コードは以下のようになっています。
Kotlin
1 private fun pdfCreate() { 2 val fontHeader = Font( 3 BaseFont.createFont("res/font/logotypegothic.ttf","UTF-8",BaseFont.NOT_EMBEDDED), 4 30f, 5 Font.BOLD 6 ) 7 fontHeaderH.color = BaseColor.BLACK 8 9 val file = File("itext.pdf") 10 if (file.exists()) file.delete() 11 val oust = openFileOutput("itext.pdf", Context.MODE_PRIVATE) 12 val pdf = Document(PageSize.A4, 10f, 10f, 10f, 10f) 13 PdfWriter.getInstance(pdf, oust) 14 pdf.open() 15 val paragraph = Paragraph("こんにちは世界", fontHeader) 16 pdf.add(paragraph) 17 val tabel = PdfPTable(1) 18 val cell = PdfPCell(Phrase("サンプルテキスト", fontHeader)) 19 tabel.addCell(cell) 20 val tabel2 = PdfPTable(floatArrayOf(9f, 1f)) 21 val cell1 = PdfPCell(Phrase("nantoka kontoka")) 22 val cell2 = PdfPCell(Phrase("nantoka kontoka")) 23 tabel2.addCell(cell1) 24 tabel2.addCell(cell2) 25 pdf.add(tabel) 26 pdf.add(tabel2) 27 pdf.close() 28 } 29 30
上記のコードを実行して保存したPDFには、「こんにちは世界」「サンプルテキスト」などの日本語の文章は非表示になり、「nantoka kontoka」という英字でのテキストは表示されました。
日本語のPDFを作成するにあたり、こちらのページを参考にし、
fontHeaderのところを
Kotlin
1 2val fontHeader = Font( 3 BaseFont.createFont( 4 "HeiseiKakuGo-W5", 5 "UniJIS-UCS2-H", 6 BaseFont.NOT_EMBEDDED), 7 15f, 8 Font.BOLD 9 ) 10
というように書きましたが、"HeiseiKakuGo-W5"と"UniJIS-UCS2-H"が認識されない、というエラーが出てクラッシュしたので、リソースディレクトリに置いたフォントを指定しました。こちらはクラッシュせず通りました。
iTextで日本語を出力するにあたり、自分が見落としている足りない設定などがあるのでしょうか。
教えて頂けると幸いです。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。