vbscript将word doc转换为pdf

时间:2012-01-10 16:54:17

标签: vbscript

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

我现在需要将其转换为pdf文件,这可以直接用于像cutePDF(通过将其发送到虚拟打印机),但我想自动执行该步骤。

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

非常感谢

戴夫

4 个答案:

答案 0 :(得分:2)

我曾写过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+来执行此操作。

答案 1 :(得分:0)

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

objDoc.SaveAs <FullPathToOutputFile>, wdFormatPDF

应该在不涉及'打印机'的情况下完成。

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

  1. 更新Word
  2. 将打印宏录制到PDF打印机并将代码移植到VBScript

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

Rafael 使用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 创建新的MSWord流程。在我的系统中,此代码不会正确关闭字处理。但是这段代码是正确的

word2pdf.vbs

如果此代码保存在wscript word2pdf.vbs input.docx output.pdf 上,则此命令可以在cmd:

中调用
boolean