【问题标题】:Convert System.Drawing.Printing.PrintDocument to PDF c#将 System.Drawing.Printing.PrintDocument 转换为 PDF c#
【发布时间】:2013-08-01 04:02:10
【问题描述】:

我必须使用以System.Drawing.Printing.PrintDocument 格式生成报告的第 3 方 SDK。由于我的项目不是 Windows 窗体项目(它是一个 Web 项目),我需要将此 System.Drawing.Printing.PrintDocument 转换为 PDF。我已经下载了 iTextSharp 和 SharpPDF,但它们似乎创建了一个新的 PDF。我还阅读了这里的教程:http://sharppdf.sourceforge.net/Tutorials.html。我的要求是将已有的文档转换为 PDF。使用这些库时我缺少什么吗?有人可以提供一个示例代码来实现这一点吗?

【问题讨论】:

    标签: c# pdf-generation itextsharp printdocument sharppdf


    【解决方案1】:

    安装虚拟 PDF 打印机并“打印”文档怎么样? 例如 - http://www.dopdf.com/,或http://www.cutepdf.com/products/cutepdf/writer.asp

    如何打印 PrintDocument 的代码示例,可以在这里找到http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.aspx

    另一个可能的课程是从 PrintDocument (http://msdn.microsoft.com/en-us/library/system.drawing.printing.printdocument.printpage(v=vs.80).aspx 获取图形并查看此处建议的内容 - http://www.websupergoo.com/helppdfnet/source/4-examples/20-systemdrawing.htm

    【讨论】:

    • 我不想“打印”文档。我必须将它作为 BLOB 存储在数据库中。由于“System.Drawing.Printing.PrintDocument”不可序列化,我不能使用 FileStream 流式传输它.我必须先将 System.Drawing.Printing.PrintDocument 对象转换为 .doc/pdf 或任何其他可序列化对象,然后才能将其作为 BLOB 存储在数据库中。你有使用cutepdf/dopdf的示例代码吗?
    • 当您打印到虚拟打印机时,它会创建一个 pdf 文件。然后,您可以读取该文件并将其内容存储在数据库中的 BLOB 中。这显然不是一个好的解决方案,但它是一种执行您需要的方法。
    • 感谢您提供“打印到虚拟打印机”提示。 :) 但是我该怎么做呢?能否提供一些示例代码?
    • 我还用另一种可能的行动方案更新了我的答案。它看起来更有希望。检查它是否适合您的需求,如果不适合,我将尝试提供一些代码示例。 P.S - 虽然我确实提供了打印解决方案,并且我自己曾经实施过这样的事情(并且确实有效),但我认为该解决方案并不好。它很慢,不可扩展并且还有其他问题。它只是作为最后的手段使用。
    【解决方案2】:

    您可以通过打印到 .net 中的文件来创建文档

    示例: 将 printDocument 转换为 XPS 文件,尝试代码:

    private void button8_Click(object sender, EventArgs e)
    {
       Addpage = 0;
       printDocument1.PrinterSettings.PrinterName = "Microsoft XPS Document     Writer";           
       
       printDocument1.DefaultPageSettings.PrinterSettings.PrintToFile = true;
    
       printDocument1.DefaultPageSettings.PrinterSettings.PrintFileName = "d:\\ddd11.xps";   
       printDocument1.PrintController = new StandardPrintController();
       printDocument1.Print();
    
     }​
    
     

    在未来我们会将 printDucument 转换为 pdf 文件。

    谢谢你

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2020-06-28
      • 2011-06-21
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      相关资源
      最近更新 更多