2012-01-10 3 views
-1

Я написал короткий vbscript, который открывает документ Word, редактирует несколько закладок и сохраняет в новый .doc-файл.vbscript для преобразования слова doc в pdf

Теперь мне нужно преобразовать это в pdf-файл, который достаточно прост, чтобы сделать что-то вроде cutePDF (отправив его на виртуальный принтер), но я бы хотел автоматизировать этот шаг.

Может ли кто-нибудь помочь с любыми идеями в vbscript, необходимых для этого процесса, будь то автоматизация этапа печати или другой метод.

Большое спасибо

Dave

+0

Я быстрый поиск Google нашел это http://bytescout.com/products/ developer/pdfdocscoutsdk/pdfdocscout_example_vbscript.html –

+0

Но это для того, чтобы создать pdf-код из кода, мне нужно преобразовать слово doc, которое у меня уже есть. – Dave

ответ

0

По MS вы можете сохранить как/в PDF в Word 2010 без дополнений; Word 2007 нуждается в надстройке, см. here для кода VBScript. В любом случае что-то вроде

objDoc.SaveAs <FullPathToOutputFile>, wdFormatPDF 

должен делать трюк без привлечения «принтера».

Для антикварных версий Слова варианты (в порядке убывания соотношения усилий/усиления):

  1. обновление Слово
  2. Запись макроса печати на принтер PDF и порт, код на VBScript
+0

К сожалению, я не упомянул, что использую слово 2003. Любой способ сделать это с помощью метода принтера? – Dave

0

Если вы используете Word 2003, вам понадобится какая-то внешняя библиотека/файл для преобразования.

Возможно, что-то вроде этого: http://www.verypdf.com/pdfcamp/word-to-pdf-converter.html, похоже, имеет параметр командной строки.

1

Я как-то написал blog article on this matter. Преобразование может быть выполнено следующим образом:

Function DocToPdf(docInputFile, pdfOutputFile) 

    Dim fileSystemObject 
    Dim wordApplication 
    Dim wordDocument 
    Dim wordDocuments 
    Dim baseFolder 

    Set fileSystemObject = CreateObject("Scripting.FileSystemObject") 
    Set wordApplication = CreateObject("Word.Application") 
    Set wordDocuments = wordApplication.Documents 

    docInputFile = fileSystemObject.GetAbsolutePathName(docInputFile) 
    baseFolder = fileSystemObject.GetParentFolderName(docInputFile) 

    If Len(pdfOutputFile) = 0 Then 
    pdfOutputFile = fileSystemObject.GetBaseName(docInputFile) + ".pdf" 
    End If 

    If Len(fileSystemObject.GetParentFolderName(pdfOutputFile)) = 0 Then 
    pdfOutputFile = baseFolder + "\" + pdfOutputFile 
    End If 

    ' Disable any potential macros of the word document. 
    wordApplication.WordBasic.DisableAutoMacros 

    Set wordDocument = wordDocuments.Open(docInputFile) 

    ' See http://msdn2.microsoft.com/en-us/library/bb221597.aspx 
    wordDocument.SaveAs pdfOutputFile, wdFormatPDF 

    wordDocument.Close WdDoNotSaveChanges 
    wordApplication.Quit WdDoNotSaveChanges 

    Set wordApplication = Nothing 
    Set fileSystemObject = Nothing 

End Function 

Важно, однако, закрыть файлы. Обратите внимание, что для этого требуется Word 2007 с плагином PDF или Word 2010+.

0

RafaelCreateObject("Word.Application") для создания нового процесса MSWord. В моей системе этот код не закрывает корректный процесс. но этот код работает правильно

Const wdExportAllDocument = 0 
Const wdExportOptimizeForPrint = 0 
Const wdExportDocumentContent = 0 
Const wdExportFormatPDF = 17 
Const wdExportCreateHeadingBookmarks = 1 

if Wscript.Arguments.Count > 0 Then 
    ' Get the running instance of MS Word. If Word is not running, Create it 
    On Error Resume Next 
    Set objWord = GetObject(, "Word.Application") 
    If Err <> 0 Then 
     Set objWord = CreateObject("Word.Application") 
    End If 
    On Error GoTo 0 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFile = objFSO.GetFile(WScript.Arguments(0)) 
    Set objDoc = objWord.Documents.Open(WScript.Arguments(0),,TRUE) 

    'Export to PDF using preferred settings 
    pdf = objWord.ActiveDocument.ExportAsFixedFormat(_ 
     WScript.Arguments(1), _ 
     wdExportFormatPDF, False, wdExportOptimizeForPrint, _ 
     wdExportAllDocument,,, _ 
     wdExportDocumentContent, _ 
     False, True, _ 
     wdExportCreateHeadingBookmarks _ 
    ) 

    'Quit MS Word 
    objWord.DisplayAlerts = False 
    objWord.Quit(False) 
    set objWord = nothing 
    set objFSO = nothing 
Else 
    msgbox("You must select a file to convert") 
End If 

Если этот код сэкономить на word2pdf.vbs, можно назвать с помощью этой команды в CMD:

wscript word2pdf.vbs input.docx output.pdf 
Смежные вопросы