Search code examples
delphims-wordpdf-generationactivex

Delphi convert doc to pdf using Word ActiveX


Did anyone already wrote code for converting doc or docx to pdf using Word 2007 or Word 2010 pdf export capabilities?


Solution

  • I do it with the following .vbs script. If you need it in Delphi code then it would be easy enough to convert:

    Const wdDoNotSaveChanges = 0
    Const wdRevisionsViewFinal = 0
    Const wdFormatPDF = 17
    
    Dim arguments
    Set arguments = WScript.Arguments
    
    Function DOC2PDF(sDocFile)
    
      Dim fso ' As FileSystemObject
      Dim wdo ' As Word.Application
      Dim wdoc ' As Word.Document
      Dim wdocs ' As Word.Documents
    
      Set fso = CreateObject("Scripting.FileSystemObject")
      sDocFile = fso.GetAbsolutePathName(sDocFile)
      sPdfFile = fso.GetParentFolderName(sDocFile) + "\" + fso.GetBaseName(sDocFile) + ".pdf"
    
      Set wdo = CreateObject("Word.Application")
      Set wdocs = wdo.Documents
      WScript.Echo "Opening: " + sDocFile
      Set wdoc = wdocs.Open(sDocFile)
      if fso.FileExists(sPdfFile) Then
        fso.DeleteFile sPdfFile, True
      End If
      WScript.Echo "Converting to PDF: " + sPdfFile
      Set wview = wdoc.ActiveWindow.View
      wview.ShowRevisionsAndComments = False
      wview.RevisionsView = wdRevisionsViewFinal
      wdoc.SaveAs sPdfFile, wdFormatPDF
      WScript.Echo "Conversion completed"
      wdo.Quit wdDoNotSaveChanges
    
      Set fso = Nothing
      Set wdo = Nothing
    
    End Function
    
    If arguments.Count=1 Then 
      Call DOC2PDF(arguments.Unnamed.Item(0))
    Else
      WScript.Echo "Generates a PDF file from a Word document using Word PDF export."
      WScript.Echo ""
      WScript.Echo "Usage: doc2pdf.vbs <doc-file>"
      WScript.Echo ""
    End If