【问题标题】:System.Printing namespace set printer page sourceSystem.Printing 命名空间设置打印机页面源
【发布时间】:2016-05-03 06:40:29
【问题描述】:

我正在尝试通过 System.Printing 命名空间打印 XPS 流

    Stream stm = pdftron.PDF.Convert.ToXps(pdfdoc);

    LocalPrintServer localPrintServer = new LocalPrintServer();
    PrintQueueCollection pqc = localPrintServer.GetPrintQueues();
    PrintQueue defaultPrintQueue = localPrintServer.GetPrintQueue(_PrinterName);
    MemoryStream ms = defaultPrintQueue.GetPrintCapabilitiesAsXml();


    // Call AddJob
    System.Printing.PrintTicket printTicket = defaultPrintQueue.DefaultPrintTicket;


    PrintSystemJobInfo myPrintJob = defaultPrintQueue.AddJob();

    Stream myStream = myPrintJob.JobStream;//may be this line is wrong, can you suggest alternative?
    myStream = stm;//may be this line is wrong, can you suggest alternative?
    myStream.Close();//may be this line is wrong, can you suggest alternative?
    var inp= defaultPrintQueue.GetPrintCapabilities().InputBinCapability;
    System.Printing.PrintTicket newprintTicket = XpsPrinterUtils.ModifyPrintTicket(printTicket, "psk:JobInputBin", "NS0000:" + _PaperSource);
    System.Printing.ValidationResult vr = defaultPrintQueue.MergeAndValidatePrintTicket(printTicket, newprintTicket);// this line giving exception while changing page source merge and validate
    myPrintJob.Commit();

XpsPrinterUtils.ModifyPrintTicket from github

代码不工作,我被这个卡住了。

任何人对此都有很好的想法或解决方案,可以使用 system.printing 命名空间打印(pdftron 获得的 Xps 文件流)并动态更改页面源。

【问题讨论】:

  • myPrintJob.JobStream = stm; 而不是从 Stream myStreammyStream.Close(); 的 3 行,这是我可以快速发现的至少 1 个错误
  • @SynerCoder 是的,这些行可能是错误的,但我尝试了很多并且更改代码的时间太多了......所以......你可以理解......我从源代码获得的代码可能是错误的/更改.

标签: c# asp.net printing system.printing pdftron


【解决方案1】:

我没有测试,但这似乎更接近正确的解决方案。

Stream stream_source = pdftron.PDF.Convert.ToXps(pdfdoc);
Stream stream_sink = myPrintJob.JobStream;
stream_source.CopyTo(stream_sink);

您可能希望通过将 stream_sink 创建为磁盘上文件的流来测试上述内容,并验证 stream_source.CopyTo(stream_sink) 是否按预期工作。如果是这样,那么任何剩余的问题都是使用 System.Printing API,而不是 PDFNet。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多