C# PDF 라이브러리 비교: IronPDF vs iText 7, PDFSharp, Aspose, Syncfusion, QuestPDF 등
여기서 작업은 변환이 아닌 정확성입니다. 이는 일본어, 아랍어 또는 태국어 텍스트가 생성된 PDF에서 빈 상자나 깨진 문자가 되지 않도록 막아줍니다. IronPDF는 Chrome 엔진을 사용하기 때문에 Chrome 브라우저에서 올바르게 표시되는 모든 문자는 PDF에서도 올바르게 표시됩니다. 메커니즘은 간단합니다: RenderingOptions.InputEncoding을 UTF-8로 설정하고 HTML에서 문자 세트를 선언하여 엔진과 문서가 바이트를 읽는 방법에 동의하게 합니다.
using IronPdf;
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8;
var pdf = renderer.RenderHtmlAsPdf(
"<html><head><meta charset='utf-8'></head><body>こんにちは世界</body></html>");
pdf.SaveAs("utf8.pdf");Imports IronPdf
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8
Dim pdf = renderer.RenderHtmlAsPdf("<html><head><meta charset='utf-8'></head><body>こんにちは世界</body></html>")
pdf.SaveAs("utf8.pdf")다국어 및 현지화된 문서
이것은 일상적인 경우입니다. IronPDF는 중국어, 일본어, 아랍어, 히브리어, 러시아어, 태국어 및 기타 비 라틴 문자 스크립트를 렌더링하며 모든 유니코드 언어를 지원합니다. 고객의 언어로 송장, 명세서 또는 편지를 작성하는 모든 앱은 실제로 올바르게 읽히는 출력에 의존합니다.
오른쪽에서 왼쪽 및 복합 스크립트
아랍어와 히브리어 같은 우측에서 좌측으로 쓰는 언어는 양방향 텍스트 및 문맥에 따른 문자 형성 등을 엔진이 처리합니다. 손으로 올바르게 해결하기는 매우 어려운 작업이므로, 브라우저의 텍스트 엔진에 의존하면 전체 레이아웃 버그 카테고리를 제거할 수 있습니다.
한 문서, 여러 언어
혼합 언어 문서는 지원되며, 단일 PDF가 여러 스크립트를 동시에 포함할 수 있습니다: 양자 계약서나 평행 번역을 가진 제품 자료 등이 가능합니다. 페이지 자체 예시는 일본어, 아랍어, 태국어를 함께 렌더링합니다.
특수 기호 및 임의 입력
전체 언어를 넘어, UTF-8은 통화 기호, 수학 기호 및 억양이 있는 유럽 문자 등을 포함하여 €, £, ¥, 억양이 있는 이름을 혼합한 문서도 충실하게 렌더링합니다. 텍스트가 데이터베이스, API, 사용자 제출로부터 도착할 때 가장 중요합니다: 데이터 언어를 제어할 수는 드물지만, 인코딩은 제어할 수 있습니다.
보통은 인코딩 아닌 폰트
인코딩은 엔진에 바이트를 어떻게 읽을지 알려줍니다. 폰트는 글리프가 존재하는지 결정합니다. 정확한 UTF-8과 CJK 또는 아랍어 글리프가 없는 폰트를 함께 사용하면 여전히 빈 상자가 나올 수 있습니다. 인코딩이 문제가 아니었습니다; 누락된 서체가 문제였습니다.
확실한 해결책은 CSS에서 웹 폰트를 지정하는 것입니다. IronPDF는 이를 완전히 지원합니다:
const string html =
"<html><head><meta charset='utf-8'>" +
"<style>body { font-family: 'Noto Sans JP', sans-serif; }</style>" +
"<link href='https://fonts.googleapis.com/css2?family=Noto+Sans+JP&display=swap' rel='stylesheet'>" +
"</head><body>こんにちは世界</body></html>";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8;
renderer.RenderHtmlAsPdf(html).SaveAs("utf8-webfont.pdf");Imports System.Text
Const html As String = "<html><head><meta charset='utf-8'>" &
"<style>body { font-family: 'Noto Sans JP', sans-serif; }</style>" &
"<link href='https://fonts.googleapis.com/css2?family=Noto+Sans+JP&display=swap' rel='stylesheet'>" &
"</head><body>こんにちは世界</body></html>"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.InputEncoding = Encoding.UTF8
renderer.RenderHtmlAsPdf(html).SaveAs("utf8-webfont.pdf")이는 위장된 배포 문제에 불과합니다. 폰트가 있는 당신의 기계에서 잘 작동하고, 폰트가 없는 축소된 Linux 컨테이너나 서버리스 함수에서는 실패합니다. 국제 텍스트가 로컬에서는 렌더링되지만 배포 후에는 상자로 변한다면, 인코딩보다 폰트를 의심해야 합니다. 번들된 웹 폰트거나 서버에 폰트를 설치하면 해결됩니다.

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.