Did anyone already wrote code for converting doc or docx to pdf using Word 2007 or Word 2010 pdf export capabilities?
I haven’t so far, but it shouldn’t be difficult:
CreateOLEObject
('Word.Application')
Documents.Open
ExportAsFixedFormat
Here's a basic skeleton:
uses
ComObj;
const
wdExportFormatPDF = 17;
var
Word, Doc: OleVariant;
begin
Word := CreateOLEObject('Word.Application');
Doc := Word.Documents.Open('C:\Document.docx');
Doc.ExportAsFixedFormat('C:\Document.pdf', wdExportFormatPDF);
end;
Note that I’ve declare both the Word
and Doc
variables as OleVariants, so as to be version-indepent (i.e. this code will work whether you’re using Word 2007 or 2010). You could also use the VCL Office component libraries if you wanted. If you were to do a lot of processing in the document itself, that would definitely be faster.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With