0

私はC1ReportViewerコントロールを使用していますが、既にC1フォーラムに質問を投稿していますが、同様の問題を抱えていたかどうかを確認するためにここに投稿します。コントロールは、SilverlightのPrintDocument()メソッドを使用します。Silverlight 5印刷が正しく行われていません。

Silverlight 5でこのコントロールからCrystalレポートを印刷すると、レポートが文字化けして印刷されることがあります。異なるサイズのテキスト、テーパライン、および一般的には位置がずれます。また、レポート全体を印刷することもほとんどありません。

私はいくつかのプリンタに制限し、32ビットドライバを使用するマシンでのみ問題を絞りました。これとSilverlight 5に加えられた変更に基づいて、私はこの問題がPostScriptとの互換性を前提としていると仮定しています。しかし、私たちの製品はLOBアプリケーションなので、PS互換のプリンタとプリンタドライバを強制することはほとんど問題になりません。

したがって、Silverlight 5のドキュメントに基づいて、これが実際にポストスクリプトの問題であれば、PrintDocument()メソッドはデフォルトのビットマップメソッドにフェールバックする必要があります。 Am I correct in understanding that vector printing in SilverLight 5 will only work with a Postscript printer?

私の質問は、stackoverflowです:誰もSilverlight 5での印刷で同様の問題が発生しましたか、誰かがCrystal Reports/PDFの印刷に成功しましたか?そして、誰かが持っている機会がない場合、どのような解決方法が思い浮かびますか?感謝

グレッグ

答えて

0

私は、このための解決策を考え出すことができました。組み込みのC1印刷機能を使用する代わりに、ビットマップ印刷を強制するコードを書くことができました。

まず、新しいPrintDocumentを作成し、PrintPageイベント用のハンドラを追加しました。

mobjPrintDocument = New PrintDocument 
RemoveHandler mobjPrintDocument.PrintPage, AddressOf Print_Report 
AddHandler mobjPrintDocument.PrintPage, AddressOf Print_Report 

印刷するときはいつでも、PrintDocumentのPrintBitmap関数を呼び出すことができます。ここでは、ユーザーが[印刷]ボタンをクリックしたときに実行します。

Private Sub xbtnPrint_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) 
    mintPageIndex = 0 
    mobjPrintDocument.PrintBitmap(FileName) 
    End Sub 

ここで重要な部分があります。上記のように、PrintPageイベントにフックすることによってターゲットとするコンテンツをハイジャックすることができます。 e.PageVisualを任意のビジュアルxaml要素に設定でき、PrintBitmapがそれを処理します。ここではGetPages関数を使用して、各ページ(pdfviewer要素)を確実に印刷するようにループします。しかし、私が言ったような視覚的な要素を指すことができます。

Private Sub Print_Report(sender As System.Object, e As PrintPageEventArgs) 
    e.PageVisual = xobjReportViewer.GetPages(mintPageIndex) 
    mintPageIndex += 1 
    e.HasMorePages = mintPageIndex < xobjReportViewer.GetPages.Count 
    End Sub 

e.HasMorePagesは、あなたが終了するまで、あなたは、このイベントの発火を強制することができます。

これは誰かに役立つことを期待しています。 Silverlight 5とPostScriptプリンタサポートでは、PostScriptエミュレータを持つプリンタの多くは互換性がないかもしれませんが、ビットマップ印刷にはデフォルトではありません。この回避策では、LOBタイプのアプリケーションで印刷を少し安定させることができます。

関連する問題