2011-11-22 14 views
3

私はABFDFを使用して、PDFファイルをEMFファイル経由でローカルプリンタに印刷しています。私はこれをABC PDFのサンプル "ABCPDFView"プロジェクトに非常に基づいています。私のアプリケーションはWindows 7とWindows XPの開発ボックスで正常に機能しましたが、Windows 2003のテストボックスに移動したとき、単純な埋め込みフォント(Times New Roman 12など)は完全に間違っていました(間違った場所、 DPIはひどく間違っていた)。ABCPDFフォント印刷レイアウト - 機械依存

ここではDPIを240にハードコーディングしています。私は240x240を強制する奇妙なメインフレームのプリントドライバを使用しています。私はそのドライバーを犯人として割り引くことができます。印刷中にEMFファイルをローカルに保存すると、同じレイアウト上の問題が発生します。 PNGまたはTIFFファイルにレンダリングする場合、これは同じコード(.emfの代わりに.pngを入れてください)を使用している私のすべてのサーバー上で正常に見えます。最後に、ABCPDFViewプロジェクトを使用して手動でランダムテキストボックスをPDFに追加すると、そのテキストもEMFファイルで間違ってレンダリングされます。 (サイドノート、Acrobatを使用してPDFを印刷した場合、テキストはうまく描画されます)

更新:この問題を抱えている人にとっては有用な点はありませんでした。 RenderTextAsTextを "0"に設定することで問題を回避することができます(下記のコードを参照)。これにより、ABCPDFはテキストをポリゴンとして表示し、問題をなくします。しかし、私のEMFファイルのサイズが大幅に増え、最終的な印刷文書ではポリゴンがきれいにレンダリングされないので、これは素晴らしい解決策ではありません。

誰かがこの奇妙なフォントの問題の原因について考えていますか?

private void DoPrintPage(object sender, PrintPageEventArgs e) 
    { 
     using (Graphics g = e.Graphics) 
     { 
     //... omitted code to determine the rect, used straight from ABC PDF sample 
      mDoc.Rendering.DotsPerInch = 240 ; 
      mDoc.Rendering.ColorSpace = "RGB"; 
      mDoc.Rendering.BitsPerChannel = 8; 
      mDoc.SetInfo(0, "RenderTextAsText", "0");//the magic is right here 
      byte[] theData = mDoc.Rendering.GetData(".emf"); 
      using (MemoryStream theStream = new MemoryStream(theData)) 
      { 
       using (Metafile theEMF = new Metafile(theStream)) 
       { 
        g.DrawImage(theEMF, theRect); 
       } 
      } 
      //... omitted code to move to the next page 
     } 
+0

私はこのエラーの原因をより正確に掘り下げました。リモートデスクトップが原因であることが判明しました。私がRDPを使っているサーバーにはこの問題があります。 – Dave

答えて

0

私はもともとRDPのための1024×768解像度に切り替えることで、1920×1080の解像度でRDPingたが、問題が去っていきました。私のメインプログラムはサービスとして実行され、1024x768のRDPセッションからこのサービスを開始すると、それが修正されます。

私はABCのPDFファイルを読んで、これを説明してより洗練されたソリューションを提供できるかどうかを確認していますが、今のところこれが機能しています。

これはABC PDF 7ですので、この問題が他のバージョンにも当てはまるかどうかはわかりませんのでご注意ください。

更新:ABC PDFサポートは、そのサービスがプロセスを開始した人からの表示解像度をキャッシュしている可能性があることを確認しました。彼らは、リモートデスクトップに関する別の奇妙な問題を見て、この1024x768の回避策を使用したり、リモートでサービスを開始したりするよう奨励しました。

0

abcpdf 8の新しいバージョンにアップグレードすると、Geckoベースの独自のレンダリングエンジンがあるので、abcpdfがレンダリングにIEの組み込みサーバーバージョンを使用しているときにこのような問題を回避できます。

+0

これは、EMFにPDFをレンダリングしています。あなたが参照しているレンダリングは、HMTLファイルのみです(私は間違っている可能性があります)。残念ながら私たちは7ライセンスを取得しており、この時点で資金調達が行われているかどうかはわかりませんが、それは確かにわかります。ありがとう! – Dave

関連する問題