Ms word 将电子邮件转换为PDF
我花了很多精力试图将电子邮件转换成Ms word 将电子邮件转换为PDF,ms-word,Ms Word,我花了很多精力试图将电子邮件转换成PDF 我使用的是Delphi10.4,尽管这与问题无关 我想出了一个解决方案,包括以任何格式从电子邮件中提取正文(HTML、RTF或TXT)。如果电子邮件是MSG格式,我使用INDY进行此操作或Outlook 然后,我将正文保存到文件中,并通过自动化使用msword打开它。然后,只需将Word文档保存为PDF格式 然而,msword似乎不能很好地读取html文件 从我尝试过的大量电子邮件样本中,我遇到了几个难以解决的问题 示例: html表格扩展到文档页面宽
PDF
我使用的是Delphi10.4
,尽管这与问题无关
我想出了一个解决方案,包括以任何格式从电子邮件中提取正文(HTML
、RTF
或TXT
)。如果电子邮件是MSG
格式,我使用INDY
进行此操作或Outlook
然后,我将正文保存到文件中,并通过自动化使用msword
打开它。然后,只需将Word
文档保存为PDF
格式
然而,msword
似乎不能很好地读取html
文件
从我尝试过的大量电子邮件样本中,我遇到了几个难以解决的问题
示例:
表格扩展到文档页面宽度之外。我通过计算页面宽度来解决这个问题,将有问题的表的宽度设置为固定的,并将其设置为页面宽度,最后根据新的宽度按比例调整其列的大小html
- 在我尝试处理带有
表格的电子邮件之前,这种方法一直很有效,每行的列数/单元格数都不同。那会导致撞车。我通过处理异常,逐行遍历每个表,并使用其单元格而不是列来解决这个问题html
- 表格单元格中的图像通常与单元格和页面宽度重叠。通过迭代所有
,检查它们是否在表中,如果在表中,则将其宽度设置为单元格宽度来解决InlineShapes
所以我的问题是,有人知道更好的处理方法吗?例如,是否有一些简单的方法可以让Word在加载时“很好地”格式化
html
,以便它以可读的方式显示并保存到PDF
,类似于在Outlook
中打开同一封电子邮件时的外观。您是否尝试过使用Outlook Inspector对象的WordEditor属性?这将返回邮件的Microsoft Word文档对象模型,您可以从该模型直接导出为PDF
这是一个基本的例子
Private Sub Demo()
Dim MailItem As MailItem
Dim FileName As String
FileName = "C:\Users\Sam\Desktop\Email.pdf"
Set MailItem = ActiveExplorer.Selection.Item(1)
With MailItem.GetInspector
.WordEditor.ExportAsFixedFormat FileName, 17
.Close 0
End With
MsgBox "Export complete"
End Sub
嗨,马克,自从你提到你使用Delphi,你有没有试过使用Synopse mORMot report?您可以查看以下关于HTML和PDF之间转换的帖子。由于其他原因,Synopse在我要查看的工具列表中,但还没有时间这样做。为了这个目的,我也会看一看。我不知道。这很有用,我会在MSG文件中试用,虽然它不能解决非MSG邮件的问题。