itext
フォント:iText 5とiText 7
サーチ…
備考
:iTextの最初のバージョンでは、1つのフォントのみのクラスがあったFont
。
このフォントでは、Helvetica(標準、太字、斜体、太字斜体)、Times Roman(標準、太字、斜体、太字斜体)、Courier(標準、太字斜体)の14種類のフォントファミリのFont
オブジェクトを作成できます。 、斜体、太字斜体)、記号とZapfの絵文字。
そのようなFont
オブジェクトは次のように作成されました:
Font font = new Font(FontFamily.TIMES_ROMAN);
また、フォントサイズを定義する必要がありました。たとえば、次のようになります。
Font font14pt = new Font(FontFamily.TIMES_ROMAN, 14);
デフォルトフォントはHelveticaでした。デフォルトのフォントサイズ12。
iTextは進化し、より多くのフォントがサポートされました。 BaseFont
クラスは、これらのフォントを内部的に処理するために使用されました。 BaseFont
クラスは次のように作成されました:
BaseFont bf_russian = BaseFont.createFont(
"resources/fonts/FreeSans.ttf",
"CP1251",
BaseFont.EMBEDDED);
最初のパラメータはフォントプログラムへのパス、例えばTTFファイル、2番目のパラメータはエンコード(例えばキリル文字の場合CP1251)、3番目のパラメータはフォントのサブセットを埋め込む必要があるかどうかを示します。
BaseFont
クラスは、 beginText()
、 setFontAndSize()
、 setTextMatrix()
、 showText()
、 endText()
シーケンスを使用してコード内にテキストオブジェクトを作成する場合など、コンテンツを最下位レベルで追加する場合に使用されます。通常、PDF専門家の場合にのみ、この低レベルのアプローチを使用します。 PDF構文が分からない場合は、そのようなシーケンスは使用しないでください。
また、 BaseFont
クラスを使用してFont
オブジェクトを作成することもできます。
Font russian = new Font(bf_russian, 12);
これで、 russian
フォントを使用して、 russian
語のテキストを含むParagraph
を作成できます。
iText 5にFont
オブジェクトを作成する方法はいくつかありますが、これが最も一般的な手順です。人々は、 Font
とBaseFont
違いによって混乱することがありましたが、常に正しいアプローチを使用しているわけではありませんでした。
私たちがiText 7で修正したもの:
私たちは物事をより均一にしました。現在、単一のPdfFont
クラスがあり、 PdfFontFactory
を使用してフォントを作成します。
PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);
PdfFont russian = PdfFontFactory.createFont(
"src/main/resources/fonts/FreeSans.ttf", "CP1251", true);
別のフォントサイズに切り替える場合、別のフォントオブジェクトを作成する必要はありません。異なるフォントサイズに切り替えるには、単にsetFontSize()
メソッドを使用しsetFontSize()
。
Paragraph p = new Paragraph("Hello World! ")
.add(new Text("Hallo Wereld! ").setFontSize(14))
.add(new Text("Bonjour le monde! ").setFontSize(10));
デフォルトのフォントはまだHelveticaで、デフォルトのフォントサイズは12ですが、文書のフォント(およびフォントサイズ)を定義できるようになりました。
document.setFont(font);
この場合、 font
ビルディングブロック(例えば、追加時のデフォルトフォントになりParagraph
フォントを指定せずに)。
もっと知りたい?
iText 7:Building Blocksチュートリアルの第1章であるPdfFontクラスの紹介を読んでください。 無料の電子ブックを手に入れよう!
HelloWorldInternational.java(iText 5)
このiText 5の例では、異なるフォントを使用して、異なる言語でHello Worldの例を作成します。
public void createPdf(String dest)
throws DocumentException, IOException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
Font font = new Font(FontFamily.TIMES_ROMAN);
Font font14pt = new Font(FontFamily.TIMES_ROMAN, 14);
Font font10pt = new Font(FontFamily.TIMES_ROMAN, 10);
BaseFont bf_russian = BaseFont.createFont(
"resources/fonts/FreeSans.ttf",
"CP1251",
BaseFont.EMBEDDED);
Font russian = new Font(bf_russian, 12);
BaseFont bf_cjk = BaseFont.createFont(
"resources/fonts/NotoSansCJKsc-Regular.otf",
BaseFont.IDENTITY_H,
BaseFont.EMBEDDED);
Font cjk = new Font(bf_cjk, 12);
Paragraph p = new Paragraph("Hello World! ", font);
Chunk chunk = new Chunk("Hallo Wereld! ", font14pt);
p.add(chunk);
chunk = new Chunk("Bonjour le monde! ", font10pt);
chunk.setTextRise(4);
p.add(chunk);
chunk = new Chunk(
"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u043b\u0442\u0435 \u043c\u0438\u0440! ",
russian);
p.add(chunk);
p.add(new Chunk("\u4f60\u597d\u4e16\u754c! ", cjk));
p.add(new Chunk("\uc5ec\ubcf4\uc138\uc694 \uc138\uacc4!", cjk));
document.add(p);
document.close();
}
HelloWorldInternational.java(iText 7)
このiText 7の例では、異なるフォントを使用して、異なる言語でHello Worldの例を作成します。
public void createPdf(String dest) throws IOException {
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
try (Document document = new Document(pdf)) {
PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);
PdfFont russian = PdfFontFactory.createFont(
"src/main/resources/fonts/FreeSans.ttf",
"CP1251", true);
PdfFont cjk = PdfFontFactory.createFont(
"src/main/resources/fonts/NotoSansCJKsc-Regular.otf",
PdfEncodings.IDENTITY_H, true);
document.setFont(font);
Paragraph p = new Paragraph("Hello World! ")
.add(new Text("Hallo Wereld! ").setFontSize(14))
.add(new Text("Bonjour le monde! ").setFontSize(10).setTextRise(4))
.add(
new Text("\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u043b\u0442\u0435 \u043c\u0438\u0440! ")
.setFont(russian))
.add(new Text("\u4f60\u597d\u4e16\u754c! ")
.setFont(cjk))
.add(new Text("\uc5ec\ubcf4\uc138\uc694 \uc138\uacc4!")
.setFont(cjk));
document.add(p);
}
}
出典: developers.itextpdf.comおよびiText 7:Building Blocksチュートリアル