首页 > 解决方案 > 如何通过“Microsoft 打印到 PDF”以编程方式将文件和网页打印到 PDF?

问题描述

我正在开发一个用 c# 编写的 UWP 应用程序,我需要转换为 pdf:-办公文档(doc、docx、xls、xlsx、ppt、pptx)-图像-网页

该应用程序必须在 x86、x64、ARM、ARM64 架构中工作。

我知道市场上有第三方转换器库,但只有少数在 ARM64 环境或 UWP 中工作。

我的想法是使用(在 Windows 10 中)允许用户将大多数文件格式保存为 PDF 的“Microsoft PDF 打印机”。

我发现很多帖子都在问同样的问题,但没有一个真正包含有用的答案。

我找到并测试的代码如下:

PrintDocument doc = new PrintDocument()
{
//DocumentName = safeDir + fileName,
    PrinterSettings = new PrinterSettings()
    {
        // set the printer to 'Microsoft Print to PDF'
        PrinterName = "Microsoft Print to PDF",

        // tell the object this document will print to file
        PrintToFile = true,


        // set the filename to whatever you like (full path)
        PrintFileName = safeDir + fileName,
    }
};
doc.Print();

上面的代码生成一个有效但为空的 pdf。我应该如何设置原始文件内容?

例如,如果我有一个名为myreport.docx的 Word 文件,我是否应该将其转换为字节数组并将其设置在某个地方?

先感谢您。

标签: c#pdfuwpconvertersvirtual-printer

解决方案


使用 PrintDocument 类时,您应该将尝试打印的文件读取到文件流中,如下面的示例所示:https ://docs.microsoft.com/en-us/dotnet/api/system.drawing.printing.printdocument ?view=网络框架-4.8

我个人更喜欢使用 Word 和 Excel 的 Microsoft.Office.Interop 库进行打印。有了这些,您只需加载文档,将打印机设置为“Adobe PDF”,然后保存文档。


推荐阅读