C#のPDFSharpで漢字を表示するのに問題があります。PDF文字列を作成するプロセス中は問題ありませんが、PDFファイルを作成した後は表示されません。私は1つの解決策を見つけました
XFont font_small2 = new XFont("微软雅黑", 9, XFontStyle.Regular, options)
このソリューションはローカルホストで機能しますが、ベータサーバーでこれをリリースすると、漢字が表示されません。
フォントがベータ サーバーに正しくインストールされていることを確認し、アプリケーションに十分な権限があることを確認してください。フォントが PDF ファイルに埋め込まれていることを確認します。
PDFsharp FAQ によると、CJK フォントはサポートされていません。ただし、環境が正しく設定されていれば、サーバーとローカル コンピューターで同じ結果が得られるはずです。
どちらのソリューションも新しいバージョンの lib では機能しなかったため、ビットマップに文字を描画してからビットマップを PDF に追加するという回避策を思い付きました。
Font font = GetFont(fieldInfo, fontSize * 0.97f); // Chosen empirically
using (var imageStream = new MemoryStream())
{
// Draw string as an image
using (var bitmap = new Bitmap((int) fieldRect.Width, (int) (fieldRect.Height * 1.5f)))
using (Graphics graphics = Graphics.FromImage(bitmap))
{
graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
graphics.DrawString(fieldValue, font, Brushes.Black, PointF.Empty);
bitmap.Save(imageStream, ImageFormat.Png);
}
// Draw image on PDF
using (XImage xImage = XImage.FromStream(imageStream))
{
double labelPositionX = fieldRect.X1 + 2;
double labelPositionY = fieldRect.Y2 - 2;
xGraphics.DrawImage(xImage, labelPositionX, page.Height - labelPositionY);
}
}