XPS ドキュメントの印刷に問題があります。最初の印刷は正しく機能しますが、その画像でわかるように、印刷ダイアログと印刷が破損して表示されます。
DocumentPaginator をパラメーターとして使用するものや、印刷ダイアログの PrintDocument 関数など、Write 関数の他のオーバーロードを使用しようとしましたが、どちらも機能しませんでした。
結果はプリンターの選択に依存することに気付きました。Microsoft XPS Document Writer を使用すると正しく動作しますが、実際のプリンターや PDF プリンターを使用すると正しく動作しませんでした。
問題を再現する最も簡単なコードは次のとおりです。
public void Execute(object parameter)
{
var printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
PrintDocument(
"xps_document_filename.xps",
printDialog);
}
}
private static void PrintDocument(string documentPath, PrintDialog printDialog)
{
using (var xpsDocumentSource = new XpsDocument(documentPath, FileAccess.Read))
{
XpsDocumentWriter xpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(printDialog.PrintQueue);
xpsDocumentWriter.Write(xpsDocumentSource.GetFixedDocumentSequence());
}
}