12

多くのユーザーに展開された Silverlight 5 OOB アプリケーション (昇格されたアクセス許可を持つ) があります。これらのユーザーの何人かは、印刷物が白紙になるか、または非常に薄いと報告しています。これらのプリンタは Word 文書を正しく印刷しますが、私のプリンタでは問題を再現できません。

すべてのユーザーは Windows XP SP3 32 ビットを使用しており、私は Win7 64 ビットで開発しています。

誰もがこの問題を前に見たように? または、これを引き起こしている可能性のある考えはありますか?

大変助かりました。

どうもありがとう、アンドリュー

4

1 に答える 1

1

私は解決策を得る必要があります

まず、新しい 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 と Post-Script プリンターのサポートにより、PostScript エミュレーターを備えた多くのプリンターは互換性がない可能性がありますが、デフォルトではビットマップ印刷にはなりません。この回避策はこれを修正し、LOB タイプのアプリケーションでの印刷を少し安定させます。

于 2013-01-30T05:25:24.183 に答える