【问题标题】:How to print .MSG into PDF如何将 .MSG 打印成 PDF
【发布时间】:2011-07-10 13:52:41
【问题描述】:

我有 1000 封电子邮件(.msg 格式),我想将它们转换为 PDF 文件。
读取 .MSG 文件已被要求here

但对我来说,问题是打印 .msg 电子邮件,就像从“文件 -> 打印”一样。

有没有一种简单的方法可以将 .msg 电子邮件打印为 PDF?

【问题讨论】:

  • 我会考虑使用PDFSharp。通过这些示例,创建基本的 PDF 文件非常容易。对于这类工作,我认为你真正需要的只是。使用 Outlook Redemption 获取数据,使用 PDFSharp 创建您的 pdf。

标签: .net pdf printing outlook msg


【解决方案1】:

如果您希望以编程语言实现解决方案,而不是手动打印每条消息,您可以考虑使用 Aspose.Network 和 Aspose.Words for .NET 组件。他们共同将 MSG 文件转换为 PDF。

  1. Aspose.Network for .NET 用于加载 MSG 并保存为 MHTML 格式
  2. Aspose.Words for .NET 用于加载 MHTML 并生成 PDF 或任何其他支持的格式

查看this page 的示例代码。它对 TIFF 进行 MSG,但您可以稍微修改并提供任何支持的格式,包括 PDF、DOC、DOCX 等。

【讨论】:

    【解决方案2】:
        Dim objItem, objFSO, strFile, input, fileExt, strHtml, strPdf, msg,    wordDoc, wordApp, tempFileFolder
    
        Const olFormatHTML = 5
        Const wdFormatPDF = 17
    
    
        input = Wscript.Arguments(0)
    
        ' Create a File System object
        Set objFSO = CreateObject( "Scripting.FileSystemObject" )
    
         ' Check if the Word document exists
        If objFSO.FileExists(input) Then
            Set objItem = objFSO.GetFile(input)
            strFile = objItem.Path  
        Else
            WScript.Echo "FILE OPEN ERROR: The file does not exist" & vbCrLf
            WScript.Quit
        End If
    
        fileExt = Right(strFile,3)
    
        If fileExt <> "msg" Then
            WScript.Echo "FILE ERROR: The file extension is not .msg" & vbCrLf
            WScript.Quit
        End If
    
        strHtml = objItem.Path + ".html"
        strPdf = objItem.Path + ".pdf"
    
        Set Outlook = CreateObject("Outlook.Application")
        Set msg = Outlook.CreateItemFromTemplate(objItem.Path) 
        msg.SaveAs strHtml, olFormatHTML
        Outlook.Quit
    
        Set wordApp = CreateObject( "Word.Application" )    
        wordApp.Documents.Open strHtml
        Set wordDoc = wordApp.ActiveDocument
        wordDoc.SaveAs strPdf, wdFormatPDF
        wordDoc.Close
        wordApp.Quit
    
    
        If objFSO.FileExists(strHtml) Then
            objFSO.DeleteFile(strHtml)
        End If
    
        tempFileFolder = objItem.Path & "_files"
        If objFSO.FolderExists(tempFileFolder) Then
            objFSO.DeleteFolder(tempFileFolder)
        End If
    

    【讨论】:

      【解决方案3】:

      您可以使用MsgViewer Pro 之类的应用程序。

      它具有“从命令行打印”功能,您可以在批处理模式下使用它。

      注意:我没有使用此查看器,但我认为这可能是一个不错的建议。

      【讨论】:

        猜你喜欢
        • 2010-10-29
        • 1970-01-01
        • 2019-02-10
        • 1970-01-01
        • 2014-04-04
        • 1970-01-01
        • 1970-01-01
        • 2012-12-06
        • 2011-05-31
        相关资源
        最近更新 更多