【问题标题】:unable to save print document to xps无法将打印文档保存到 xps
【发布时间】:2017-12-26 11:51:09
【问题描述】:

我正在使用以下代码在应用程序启动路径中将打印的文档另存为 XPS:

PrintDocument pd = new PrintDocument();
pd = PreparePrintDocument();
pd.PrinterSettings.PrintFileName = Application.StartupPath+"\\backup.xps";
pd.PrinterSettings.PrintToFile = true;
pd.PrinterSettings.PrinterName = "Microsoft XPS Document Writer";
pd.Print();
pd.Dispose();

这在某些 PC 上运行良好,但在其他一些 PC 中会出现以下错误:

“试图读取或写入受保护的内存。这通常是 指示其他内存已损坏。”

当我将默认打印机设置为 XPS 时,代码适用于所有系统,但当我将其更改为网络打印机时,错误再次出现。

【问题讨论】:

  • 您可以发布用于保存 XPS 文件的代码吗?我认为问题可能在那里......
  • 我在问题中添加的
  • 上面的代码在某些系统中可以正常工作。但在某些系统中只会出现错误
  • @Isma 您提供的答案稍作修改。谢谢
  • 在您的回答中,我添加了这一行 pd.DefaultPageSettings.PrinterSettings.PrinterName ="Microsoft XPS Document Writer" 以及将打印机名称设置为 XPS

标签: c# winforms printing


【解决方案1】:

尝试使用“使用”块而不是自己处理文档:

using(PrintDocument pd = new PrintDocument()) 
{
    pd = PreparePrintDocument();
    pd.PrinterSettings.PrintFileName = 
    Application.StartupPath+"\\backup.xps";
    pd.PrinterSettings.PrintToFile = true;
    pd.PrinterSettings.PrinterName = "XPS";
    pd.DefaultPageSettings.PrinterSettings.PrinterName ="Microsoft XPS Document Writer"        
    pd.Print();
}

【讨论】:

    猜你喜欢
    • 2019-05-09
    • 2010-10-04
    • 1970-01-01
    • 2016-05-30
    • 2011-02-17
    • 2012-05-03
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多