0

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());
    }
}
4

0 に答える 0