itext
글꼴 : iText 5 대 iText 7
수색…
비고
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
객체를 만드는 다른 방법이 있지만 가장 일반적인 절차입니다. 사람들은 때로 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()
메서드를 사용하여 간단히 수행 할 수 있습니다.
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 튜토리얼.