複数のページに WPF キャンバスを印刷しようとしています。
ページ幅に収まるように拡大縮小してから、各ページのキャンバスをクリッピングして変換することに完全に満足しています。すべての非常に単純な数学。
私が理解していないのは、印刷可能領域の寸法を取得する方法と、印刷先をプリンターに伝える方法です。何を試しても、使用している値は用紙のサイズであるように見えるため、プリンターが用紙の端まで印刷できないため、トリミングが発生します。
var capabilities = printDialog.GetPrintCapabilities(dialog.PrintTicket);
機能には次のプロパティがあります。
capabilities.PageImageableArea.ExtentWidth
// "Gets the width of the imageable area"
「撮影可能」エリアとは?それは私がコンテンツを入れることができる紙の領域ですか?私はそう推測します:
capabilities.PageImageableArea.OriginWidth
// Gets the distance from the left edge of the page to the imageable area.
しかし、下と右の余白はどうですか?この情報はどこにありますか?
PageSize
のプロパティを何DocumentPaginator
に設定する必要がありますか? これをから設定する必要がありcapabilities.PageImageableArea
ますか?または、dialog.Print()
関数がこれを設定していて、それから読み取る必要があるだけGetPage()
ですか?
最後に、 を返すとき、3 つのジオメトリ引数、およびDocumentPage
に何を渡しますか?pageSize
bleedBox
contentBox
ありがとう :)