有人已经编写了代码,使用Word 2007或Word 2010的pdf导出功能将doc或docx转换为pdf吗?
有人已经编写了代码,使用Word 2007或Word 2010的pdf导出功能将doc或docx转换为pdf吗?
CreateOLEObject
('Word.Application')
创建一个Word COM服务器对象。Documents.Open
打开文档。ExportAsFixedFormat
将文档导出为PDF格式。以下是基本框架:
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;
Word
和Doc
变量声明为OleVariants,以便实现版本无关性(即,无论您使用Word 2007还是2010,此代码都可以工作)。如果您想要的话,也可以使用VCL Office组件库。如果您在文档本身中进行了大量处理,那肯定会更快。我使用以下vbs脚本来实现。如果您需要Delphi代码,则很容易进行转换:
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