vbscript将word doc转换为pdf

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vbscript将word doc转换为pdf相关的知识,希望对你有一定的参考价值。

我写了一个简短的vbscript,打开一个word文档,编辑几个书签并保存到一个新的.doc文件。

我现在需要将其转换为pdf文件,这对于像cutePDF(通过将其发送到虚拟打印机)这样的东西很简单,但我想自动执行该步骤。

任何人都可以帮助完成该过程所需的vbscript的任何想法,无论是自动化打印步骤,还是其他方法。

非常感谢

戴夫

答案

我曾经写过一个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

尽管关闭文件很重要。请注意,您需要使用带有PDF插件的Word 2007或Word 2010+来执行此操作。

另一答案

根据MS,你可以在没有附加组件的Word 2010中保存为/ PDF; Word 2007需要一个加载项,请参阅here获取VBScript代码。在任何一种情况下,像

objDoc.SaveAs <FullPathToOutputFile>, wdFormatPDF

不应该涉及'打印机'应该做的伎俩。

对于Word的古老版本,选项是(按努力/收益率的顺序):

  1. 更新Word
  2. 将打印宏记录到PDF打印机并将代码移植到VBScript
另一答案

如果您使用的是Word 2003,则需要某种外部库/文件来进行转换。

这样的事情会有所帮助:http://www.verypdf.com/pdfcamp/word-to-pdf-converter.html似乎有一个命令行选项。

另一答案

Rafael使用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

以上是关于vbscript将word doc转换为pdf的主要内容,如果未能解决你的问题,请参考以下文章

如何使用python将txt文件或PDF转换为Word doc?

***Error 应用 Alfresco Rule 将 Word Doc 转换为 PDF

如何用纯java代码实现word转pdf?

python 使用LibreOffice的命令行界面将PDF文件转换为与Microsoft Office Word兼容的doc / docx文件。

JAVA将 Word 文档转换为 PDF

如何用纯java代码实现word转pdf