수색…


비고

iText의 첫 번째 버전에는 하나의 글꼴 클래스 만있었습니다. 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 파일). 두 번째 매개 변수는 인코딩 (예 : CP1251 키릴 문자)이고 세 번째 매개 변수는 글꼴의 하위 집합을 포함해야하는지 나타냅니다.

BaseFont 클래스는 beginText() , setFontAndSize() , setTextMatrix() , showText() , endText() 시퀀스를 사용하여 코드에서 텍스트 객체를 만들 때와 같이 가장 낮은 수준에서 내용을 추가 할 때 사용됩니다. 일반적으로 PDF 전문가 인 경우이 저수준 접근 방식을 사용합니다. PDF 구문에 대해 잘 모르는 경우 이러한 시퀀스를 사용하지 않아야합니다.

BaseFont 클래스를 사용하여 Font 객체를 만들 수도 있습니다.

Font russian = new Font(bf_russian, 12);

이제 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() 메서드를 사용하여 간단히 수행 할 수 있습니다.

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.comiText 7 : Building Blocks 튜토리얼.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow