2017-02-08 4 views
0

Я пытаюсь сохранить файлы в формате PDF. Мой исходный код работает, чтобы сохранить как текстовый документ ..Word Interop SaveAs2 как PDF

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.

Что мне здесь не хватает? Любая помощь приветствуется!

+0

Когда я вспыхивают код из с утверждением, что проблема следует ... 'objDoc.WdSaveFormat.wdFormatPDF' The O в objDoc показывает красная подчеркивание с ошибкой «Именованный аргумент ожидается» – Flibertyjibbet

+0

Закончено объявить его как «Word.WdSaveFormat.wdFormatPDF» и использовать close (false). По какой-то причине мне не нужно было указывать, что я не хотел сохранять, когда закрывал шаблон, когда я создавал файл типа документа. – Flibertyjibbet

ответ

0

Interop использует библиотеки COM, зарегистрированные во время установки MS Office. Это работает до тех пор, пока машина, где вы пытаетесь манипулировать документами программно, имеет установленный 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");