問題タブ [documentpaginator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - バックグラウンド スレッドでの WPF コンポーネントの作成
私は報告システムに取り組んでおりDocumentPage
、DocumentPaginator
. これらのドキュメントには、インスタンス化される多くのWPF コンポーネントXpsDocumentWriter
が含まれているため、ページネーターは、後で(実際のプリンターに送信されます) に送信されるときに正しいものを含めます。
私の問題は、インスタンスの作成にかなりの時間がかかることです(Windowsがアプリケーションを凍結としてマークするのに十分です)ので、バックグラウンドスレッドDocumentPage
でインスタンスを作成しようとしました.WPFはそれらの属性がGUI スレッド。また、これまでに作成されたページ数を示すプログレス バーを表示したいと考えています。したがって、GUI上で2つのことを並行して起こそうとしているようです。
この問題は説明が難しく、どのように対処すればよいか本当にわかりません。要するに:
- 一連の
DocumentPag
e を作成します。- これらにはWPF コンポーネントが含まれます
- これらはバックグラウンド スレッドで作成するか、アプリケーションがフリーズしないように他のトリックを使用します。
- 各ページが作成された後、WPF ProgressBarを更新する必要があります。
これを行う適切な方法がない場合は、代替のソリューションとアプローチを歓迎します。
.net - WPF DocumentPaginator および DocumentPage の予期しないトリミング
複数のページに WPF キャンバスを印刷しようとしています。
ページ幅に収まるように拡大縮小してから、各ページのキャンバスをクリッピングして変換することに完全に満足しています。すべての非常に単純な数学。
私が理解していないのは、印刷可能領域の寸法を取得する方法と、印刷先をプリンターに伝える方法です。何を試しても、使用している値は用紙のサイズであるように見えるため、プリンターが用紙の端まで印刷できないため、トリミングが発生します。
機能には次のプロパティがあります。
「撮影可能」エリアとは?それは私がコンテンツを入れることができる紙の領域ですか?私はそう推測します:
しかし、下と右の余白はどうですか?この情報はどこにありますか?
PageSize
のプロパティを何DocumentPaginator
に設定する必要がありますか? これをから設定する必要がありcapabilities.PageImageableArea
ますか?または、dialog.Print()
関数がこれを設定していて、それから読み取る必要があるだけGetPage()
ですか?
最後に、 を返すとき、3 つのジオメトリ引数、およびDocumentPage
に何を渡しますか?pageSize
bleedBox
contentBox
ありがとう :)
wpf - 任意のビジュアルで動作する DocumentPaginator?
どんなビジュアルも簡単に印刷できます。
1ページよりも大きいものを印刷するのは難しいです。
私は立ち往生しています。ドキュメントは不足しており、できる限り取得しました。
任意のビジュアル (または UIElement) を取り、それを複数のページに分割できる DocumentPaginator を拡張するクラスを誰かが持っているかどうか疑問に思っています。作成しようとしましたが、最初のページを何度も印刷する以外に何もできません。
お願いします、そこにあるすべてのリンクを見ました。質問を具体的に満たさないリンクを貼り付けても意味がありません。実務経験は+になります。
wpf - WPF DocumentPaginator は、印刷ジョブが完了するまですべての DocumentPages をメモリに保持しますか?
WPF の DocumentPaginator に関する厳密に理論的な質問:
WPF DocumentPaginator クラスを使用して複数ページのドキュメントを印刷する場合、ページネータは、ドキュメントの印刷が完了するまで、印刷ジョブの履歴を介して要求されたすべての DocumentPages をメモリに保持しますか? それとも、印刷ジョブが終了する前に (つまり、メモリを解放するために) 不要になった DocumentPages を破棄しますか? 例外を発生させずに、印刷中に古い/不要な DocumentPages を解放するようにページネーターに手動で指示する方法はありますか?
このたびはご協力いただき、誠にありがとうございました。
c# - DocumentViewer での「高速」表示
DocumentViewer と DocumentPaginator で達成できるものなど、ドキュメントのプレビューを表示する必要がある WPF アプリケーションを構築しています。ただし、レポートを XPS に変換して DocumentViewer に読み込むと、レポートが大きい場合 (表示する必要がある一般的なレポートのように) が非常に遅くなることがわかっています。
これにより、残りのページが DocumentViewer に「ロード」されている間に、レポートの最初の数ページの表示を開始する何らかの方法があるのではないかと考え始めました。
このようなことが可能かどうか誰にもわかりますか?もしそうなら、どうやってそれを機能させようとすることを提案しますか? レポートをより速く表示するための解決策をオンラインで探し回るのに数時間費やしましたが、何も思いつきませんでした。
完全な開示のために、この場合、表示する必要があるレポートは HTML で作成されています。DocumentViewer を使用するには XPS に変換する必要があることはわかっていますが、HTML をすばやく表示する方法を知っている人がいれば、それも紹介してください。「印刷プレビュー」タイプのモードで表示する必要があるため、WebBrowser コントロールを使用できません。 HTML サイトを「ページ分割」する方法を決定するための優れたアルゴリズムは、おそらくこの問題の解決策につながるだけでなく、それを表示するカスタム コントロールを作成することもできます。DocumentPaginator を使用しますが、出力されるファイルは XPS であり、DocumentViewer の問題に戻ります。
繰り返しますが、どんな助けも大歓迎です。ありがとうございました!
wpf - XpsDocumentWriter で GetPageAsync を介して DocumentPaginator を非同期的に使用する方法は?
ここでの考え方は、XpsDocumentWriter または PrintDialog で使用したい DocumentPaginator があるということです。どちらにも、ページネータを指定して印刷するオプションがあるためです。XpsDocumentWriter.Write[Async] または PrintDialog.PrintDocument のいずれかを使用すると、派生 DocumentPaginator クラスでオーバーライドした GetPage と GetPageAsync を介してページネーターにアクセスします。
ページネーターを手動で使用し、ビジュアルをドキュメント ライターに供給する以外に、DocumentPaginator の Asyc 関数の使用をトリガーする方法はありますか?
wpf - wpf / c# で横向き印刷と縦向き印刷を混在させる
WPF / C# アプリで、DocumentPaginator を使用していくつかのページを印刷しています。ただし、横向きモードと縦向きモードで 1 つの印刷ジョブ ページを混在させたいと考えています。たとえば、ページ 1 を縦向きに、ページ 2 を横向きに、ページ 3 を縦向きにします。
ただし、横向きを反映するように PageSize (DocumentPaginator からのオーバーライド) を変更すると、ページは縦向きモードのままになります。
つまり、
これは、印刷されるページ番号に依存するため、Orientation または PageSize を以前に Landscape に設定することはできないと思います...
1 つの印刷ジョブで縦向きと横向きを混在させるためのアイデア、提案、回避策はありますか?
ありがとう!R.
c# - DocumentPaginatorを実装するときの空白ページ
私は次のようなPaginatorを実装しようとしています:
コンパイルして実行しますが、ページが空白(白)です。'canvas'は、System.Windows.Controls.Canvasのインスタンスです。
ScrollViewerのような画面上のコンテナに入れると、完全にレンダリングされます。
動作しているのは、ページのサイズがキャンバスのサイズに設定されていることだけです。私は何が欠けていますか?
c# - Xps ドキュメントのページ サイズを設定する方法
XPS ドキュメントをFixedDocumentで保存しようとしています。これまでのところ、ページサイズを変更できませんでした。カスタムサイズに変更するにはどうすればよいですか?
この質問に対する最初の回答に基づいてコードを作成しました。より具体的には、次のコードを使用しています。
ユーザー コントロールを XPS ドキュメントにコピーし、正常にコピーしますが、前述のとおり、既定の用紙サイズを使用します。
プロパティを使用しDocumentPaginator.PageSize
て新しいページ サイズを設定しようとしましたが (インスタンス化した後FixedDocument
)、そのプロパティに割り当てたものは無視されるようです。結果の XPS ドキュメントのページは、既定の用紙サイズを保持します。
段階的に実行すると、PageSize
プロパティの値が実際に変更されていることがわかります。そのため、新しい値がDocumentPaginator
.
さまざまなオンライン リソースを見つけましたが、いずれもまだ問題を解決していません。
- MS Social でのこのフォーラムの投稿では、プロパティの設定が機能すると主張しています
PageSize
が、私が知る限りではそうではありません。 - ドキュメントは、プロパティの設定が機能すると主張し、
PageSize
私が試したことと同じことを行う例を提供します。(それ以外は、このドキュメントページに基づいて、使用する数値の単位さえわかりません。) DocumentPage.Size
ドキュメントはプロパティも指していますが、そのプロパティは公開して変更することはできません。別のページ サイズを取得するためだけに、ドキュメントにページを追加する前に、ページ クラスをオーバーライドする必要がありますか?- このフォーラムへの投稿でも同じ問題が説明されていますが、その答えは私には無意味に思えます。
DocumentPaginator
プロパティを一度しか使用していないため、インスタンスを保存できる「(...).DocumentPaginator を再度呼び出す」ことはありません。 - この質問は有望に思えますが、実際にはページ サイズに関するものではなく、特定のページ上の画像の縮尺に関するものです。
- 前述の
PageSize
プロパティ (ここではデフォルトのサイズに設定されているようです) の他に、このチュートリアルではWidth
とのHeight
プロパティを使用しますFixedPage
。ただし、簡単なテストのためにこれらに正のランダム値を割り当てると、XPS ドキュメントが破損しているように見え、XPS Viewer でドキュメントを開くときにエラー メッセージが表示されます。
wpf - WPF FlowDocumentPageViewer
(ヘッダーとフッターを含む)のカスタム実装があり、DocumentPaginator
このページをで使用したいFlowDocumentPageViewer.
どうすればいいですか?カスタムDocumentPaginatorにIDocumentPaginatorSourceを実装しようとしましたが、FlowDocumentPageViewerが例外をスローします。"FlowDocumentPageViewer supports only FlowDocument as content."