0

itextsharp XMLWorker ライブラリを使用して HTML を PDF に解析しようとしています。正常に動作していますが、一部の Unicode 文字 (トルコ語) を PDF にレンダリングできません。

この問題についていくつかのブログを読みましたが、それらはすべて、Unicode 文字をサポートするフォントを登録することを提案しています。次に、外部 css ファイルで、使用するフォント ファミリを指定する必要があります。

html
{
    font-family: 'Arial Unicode MS';
}

私もArial家族で全部やってみました。家族もhtmlで設定してみました。

<body face = 'Arial'>

それらのどれも機能していません。フォントは問題なく登録され、外部 CSS ファイルも機能しています。

これは、HTMLをPDFに変換する方法です。

string arialuniTff = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF");
FontFactory.Register(arialuniTff);

// Resolve CSS
var cssResolver = new StyleAttrCSSResolver();
var cssFile = XMLWorkerHelper.GetCSS(new FileStream(Server.MapPath("~/Content/Editor.css"), FileMode.Open));
cssResolver.AddCss(cssFile);

// HTML
CssAppliers ca = new CssAppliersImpl();
HtmlPipelineContext hpc = new HtmlPipelineContext(ca);
hpc.SetTagFactory(Tags.GetHtmlTagProcessorFactory());

// PIPELINES
PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
HtmlPipeline htmlPipe = new HtmlPipeline(hpc, pdf);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, htmlPipe);

XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
StringReader sr = new StringReader("<html><head></head><body>" + topMessage.Replace("<br>", "<br></br>") + "</body></html>");
p.Parse(sr);
4

2 に答える 2