0

Adobe Reader で PDF が正しく表示されません。他の PDF リーダーでは問題ないので、これは構文の問題であるに違いありません。Adobe Reader は PDF 構文により厳密であると聞いています。フォントは本来の 2 倍の大きさに見えますが、水平方向の間隔は正しいため、フォントが重なり合っています。

これは私の C# コードです (フォント作成コードはこの投稿の最後にあります)。

Font officialUseFont = EmbeddedResources.CreateDesignFont(webform);
PdfContentByte officialUseCanvas = _stamper.GetOverContent(3);
ColumnText.ShowTextAligned(officialUseCanvas, Element.ALIGN_CENTER, new Phrase(webform.Text, officialUseFont), posX, posY, 0);

ランタイム v2.0.50727 で iTextSharp 5.4.2.0 を使用しています。PDF フォントのプロパティ

以前はキリル文字と中国語のアルファベットが機能していなかったので、いくつかのフォントを埋め込んだに違いありませんが、現在は機能しています。PDF に存在するフォーム フィールドには、問題なくキリル文字が入力されています。問題を引き起こすのはキャンバスだけです。ここに画像の説明を入力

public Font CreateDesignFont(IForm webform)
{
    var baseFont = GetBaseFont(fontNamespace.Length, selectedFontName);
    return new Font(baseFont, webform.FontSize);
}
    private static BaseFont GetBaseFont(int fontNamespaceLength, string selectedFontName)
    {

        byte[] fontBuffer;
        using (var stream = (Assembly.GetExecutingAssembly().GetManifestResourceStream(selectedFontName)))
        {
            fontBuffer = new byte[stream.Length];
            stream.Read(fontBuffer, 0, fontBuffer.Length);
        }
        var fontfile = selectedFontName.Substring(fontNamespaceLength);
        var customFont = BaseFont.CreateFont(fontfile, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, BaseFont.CACHED, fontBuffer, null);
        return customFont;
    }
4

2 に答える 2

0

この問題は、私が .otf フォントを使用していたことが原因でした。.ttf に変更すると、問題はなくなりました。

于 2013-08-29T17:56:34.677 に答える
0

あなたが提供しているコード スニペットは十分ではありません。問題は、あなたがしたときに何が起こるかに起因しますEmbeddedResources.CreateDesignFont(webform);

フォントが Adob​​e Reader に表示されない場合は、フォントが埋め込まれていません。多分あなたはそう思うかもしれませんが、PDF ビューアの動作から判断すると、そうではありませんでした。

ドキュメント プロパティ、より具体的には [フォント] タブのスクリーン ショットを提供できますか?

アップデート

独自のコード スニペットを作成しようとしましたが、問題を再現できませんでした。だから私はあなたのコードをもう一度見て、フォントをキャッシュしているのを見ましたが、WINANSIエンコードを使用してArialMTを使用してページ1のフィールドに入力しています.IMO(確認する時間がありません) を使用してキャッシュから同じフォントを使用することと互換性がありませんIDENTITY_H。フォントをキャッシュしない場合 (フォント バイトを自分で既にキャッシュしている場合は、フォントをキャッシュに格納する必要はありません)、問題はおそらく解決されます。

于 2013-08-14T12:59:22.537 に答える