VBScript для преобразования Word DOC в PDF - PullRequest
1 голос
/ 10 января 2012

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

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

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

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

Dave

Ответы [ 4 ]

2 голосов
/ 05 марта 2014

Однажды я написал в блоге статью по этому вопросу . Преобразование может быть сделано следующим образом:

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 голосов
/ 16 декабря 2017

Рафаэль используйте CreateObject("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
0 голосов
/ 12 января 2012

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

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

0 голосов
/ 10 января 2012

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

objDoc.SaveAs <FullPathToOutputFile>, wdFormatPDF

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

Для античных версий Word возможны следующие варианты (в порядке соотношения усилия и усиления):

  1. обновление Word
  2. Запись макроса печати на принтер PDFи перенести код на VBScript
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...