サーチ…


備考

: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オブジェクトを作成する方法はいくつかありますが、これが最も一般的な手順です。人々は、 FontBaseFont違いによって混乱することがありましたが、常に正しいアプローチを使用しているわけではありませんでした。

私たちが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();
}

出典: developers.itextpdf.com

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チュートリアル



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow