C# PDFライブラリ比較: IronPDF対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は、ラテン文字以外のスクリプトである中国語、日本語、アラビア語、ヘブライ語、ロシア語、タイ語、およびあらゆる他のUnicode言語をレンダリングします。 顧客自身の言語で請求書、明細書、手紙を作成するアプリは、この技術に依存して正しく読める出力を生成します。
右から左への複雑なスクリプト
アラビア語やヘブライ語のような右から左の言語は、文字間のバイディレクショナルなテキストや文脈に応じた文字形成を含め、エンジンによって処理されます。 それを手作業で正しく行うのは非常に難しいので、ブラウザのテキストエンジンに頼ることで、レイアウトのバグのカテゴリを完全に排除できます。
一つの文書に複数の言語
混合言語文書がサポートされており、単一の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コンテナやサーバーレス機能では失敗します。 国際的なテキストがローカルでレンダリングされるが、デプロイされるとボックスになってしまう場合、エンコーディングよりも先にフォントを疑ってください。 バンドルされたウェブフォント、またはサーバーに書体をインストールすることで解決します。

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。