Word Interop SaveAs2 as PDF

时间:2017-02-08 14:20:46

标签: .net vb.net pdf office-interop

我试图将文件另存为PDF。我的原始代码可以保存为word文档..

Imports Word = Microsoft.Office.Interop.Word
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim objDoc As Word.Document = objWordApp.Documents.Open(appPath & "\PackListTemplate.dotm", [ReadOnly]:=True)
        objDoc = objWordApp.ActiveDocument
        With objDoc

...

    .SaveAs2(FileName:=savepath & soNumber & "_" & localDateTimeFileName & ".doc", AddToRecentFiles:=True, ReadOnlyRecommended:=True)

这就是我要将代码更改为...

.SaveAs2(savepath & "Packing Lists - " & soNumber & ".pdf", Word.WdSaveFormat.wdFormatPDF, AddToRecentFiles:=True, ReadOnlyRecommended:=True)

问题是弹出“应用程序保存为对话框”一词。这并不理想,因为这应该是自动化的。当我使用FileName:=时,一切都按照我的预期运作。但是当我在PDF保存中使用该位时,出于某种原因它并不像我的Word.WdSaveFormat.wdFormatPDF。它会在W中强调Word

我在这里缺少什么?感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

Interop使用在安装MS Office时注册的COM库。只要您尝试以编程方式操作文档的计算机安装了MS Office,此方法就可以正常工作。更好的方法是使用工具包,即使没有安装MS Office,也可以合并模板文档和数据(例如,在服务器上)。您需要准备模板Word文档,对其进行格式化并在其中放置占位符,以使数据显示在最终文档中。然后,您可以在.NET应用程序中准备数据,并根据模板文档和数据调用文档生成。生成的文档可以保存为docx,pdf或xps文件,也可以以任何格式流式传输到客户端。如果您想了解更多信息,可以查看一些示例here。最终,只需两行代码即可获得最终文档:

// Instancing report engine, by assigning the data source
DocumentGenerator dg = new DocumentGenerator(DataAccess.GetOrderById(7)); 
// Generating report by specifying the report template and the resulting report (as file paths) 
dg.GenerateDocument("example.docx", "example_output.docx");

答案 1 :(得分:0)

在关闭文档时使用:

.Close(Word.WdSaveOptions.wdDoNotSaveChanges);

它对我有效。