iText の iTextAsian.jar にフォントを追加するためのメモ
これは完全に不完全なメモです。 iText の iTextAsian.jar にフォントを追加する を参照してください。
[ヅラド] iText にて iTextAsianCmaps.jar と iTextAsian.jar を使った日本語フォント描画 を参考にさせていただきました。ありがとうございます。
package com.lowagie.text.pdf;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Rectangle;
public class Que {
public static void main(String[] args) throws Exception {
a7();
tt();
}
private static void tt() throws DocumentException, IOException {
CJKFont j = new CJKFont("HeiseiKakuGo-W5", "UniJIS-UCS2-HW-H", false);
System.out.println("" + j.getCidCode('M') + " " + j.getWidth('M'));
TrueTypeFontUnicode f = new TrueTypeFontUnicode(
"/usr/share/fonts/truetype/ttf-japanese-gothic.ttf",
"Identity-H", true, null, true);
for (int i = 0; i < 0xffff; ++i) {
int width = f.getWidth(i);
int cid = j.getCidCode(i);
if (width != 0 && width != 1000) {
// System.out.println(" " + i + " " + cid + " " + width);
// W=
System.out.print(" " + cid + " " + width);
}
}
// System.out.println(f);
}
public static void a7() throws Exception {
byte[] a7 = createA7();
out(a7, "/tmp/20070802_a7.pdf");
}
private static byte[] createA7() throws Exception {
// ゴシック体 HeiseiKakuGo-W5
Font font3 = new Font(BaseFont.createFont("TakaoPGothic",
"UniJIS-UCS2-HW-H",
// "Identity-H",
BaseFont.NOT_EMBEDDED), 9, Font.NORMAL);
// DPI
float dpi = 72.0f;
// A7作成
ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
Rectangle pagesize2 = PageSize.A7;
// 左端のマージン: 5ミリメートル
// 右端のマージン: 10ミリメートル
// 上端のマージン: 5ミリメートル
// 下端のマージン: 10ミリメートル
float left = mm2pixel(1f, dpi);
float right = mm2pixel(5f, dpi);
float top = mm2pixel(5f, dpi);
float bottom = mm2pixel(10f, dpi);
Document document2 = new Document(pagesize2, left, right, top, bottom);
PdfWriter writer2 = PdfWriter.getInstance(document2, baos2);
document2.open();
String text3 = "あい う え おアイウエオABCABC MIXlix";
Paragraph p3 = new Paragraph(text3, font3);
document2.add(p3);
document2.close(); // close を忘れないで
return baos2.toByteArray();
}
private static float mm2pixel(float mm, float dpi) {
// Ref. http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%83%81
// 国際インチ(international inch): 1 インチ = 25.4 ミリメートル
return mm * dpi / 25.4f;
}
private static void out(byte[] pdfdata, String file) throws Exception {
OutputStream os = new BufferedOutputStream(new FileOutputStream(file));
os.write(pdfdata);
os.flush();
}
}
0 件のコメント:
コメントを投稿