我正在使用C#编写的UWP应用程序,我需要转换为pdf: -办公文件(doc,docx,xls,xlsx,ppt,pptx) - 图片 -网页
该应用程序必须能够在x86,x64,ARM,ARM64体系结构中工作。
我知道市场上有第三方转换器库,但是只有少数几个可以在ARM64上下文或UWP中工作。
我的想法是(在Windows 10中)使用“ Microsoft PDF打印机”,该打印机允许用户将大多数文件格式保存为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文件,是否应该将其转换为字节数组并将其设置在某个地方?
谢谢。
答案 0 :(得分:0)
在使用PrintDocument类时,应按照以下示例将要打印的文件读入文件流:https://docs.microsoft.com/en-us/dotnet/api/system.drawing.printing.printdocument?view=netframework-4.8
我个人更喜欢使用Microsoft.Office.Interop库来打印Word和Excel。使用这些工具,您只需加载文档,将打印机设置为“ Adobe PDF”,然后保存文档。
答案 1 :(得分:0)
在UWP中,我们使用PrintDocument
打印UIElement
。这是官方的tutorial。这是代码sample。
如何打印网页
在打印之前,我们需要先获取WebViewBrush
。请参考这种情况reply以获取Web内容。然后查看上面的代码示例以将WebViewBrush
打印为pdf。我已经回答了类似的情况,您可以refer。
如何打印文件
UWP PrintDocument
仅支持打印UIElement
,因此我们需要使用uwp控件显示文件内容然后进行打印。有关详细步骤,请参阅官方代码示例场景4。