¿Alguien ya ha escrito el código para convertir doc o docx a pdf usando las capacidades de exportación en PDF de Word 2007 o Word 2010?Delphi convert doc to pdf using Word ActiveX
Respuesta
Lo hago con el siguiente script .vbs. Si lo necesita en el código de Delphi, entonces sería bastante fácil de convertir:
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
He no tan lejos, pero no debería ser difícil:
- Crear un objeto de servidor COM Palabra utilizando
CreateOLEObject
('Word.Application')
- abrir el documento con
Documents.Open
- exportar el documento a PDF utilizando
ExportAsFixedFormat
Aquí está un esqueleto básico:
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;
Tenga en cuenta que he declare, tanto los Word
y Doc
variables como OleVariants, de modo que sea versión indepent (es decir, este código funcionará ya sea que esté utilizando Word 2007 o 2010). También puede usar las bibliotecas de componentes de VCL Office si lo desea. Si tuviera que procesar mucho en el documento, definitivamente sería más rápido.
Ok, esto funciona (acabo de reemplazar OleAuto con ComObj ya que entiendo que OleAuto está en desuso). ¿Podría decirme dónde encontrar las bibliotecas de componentes de VCL Office? Recuerdo haberlas visto en Delphi 7 Palette, pero no las veo en 2009. – LaBracca
@ user193655: Me parece recordar que era una opción separada en el instalador, pero no puedo estar seguro. No los tengo en mi configuración D2010 tampoco (pero casi siempre uso variantes de todos modos, para ser más flexible, utilizo el navegador de objetos de VBA para descubrir los objetos y métodos a usar) – Martijn
- 1. Crear archivo PDF/Word (doc) dentro de la aplicación
- 2. html to .doc converter en Python?
- 3. Convertir pdf, doc, ppt a html5
- 4. Java Convert MouseEvent to ActionEvent
- 5. convert std: vector to NSArray
- 6. C# convert system.IO.Stream to Byte []
- 7. Ruby Convert String to File
- 8. LINQ Convert Dictionary to Lookup
- 9. Cómo convertir MS doc a pdf
- 10. convert System :: array to std :: vector
- 11. Word Array to String
- 12. .doc a pdf usando python
- 13. Indexando .PDF, .XLS, .DOC, .PPT usando Lucene.NET
- 14. connect to mysql using C++
- 15. Crear PDF desde Word (DOC) utilizando Apache POI e iText en JAVA
- 16. ¿Cómo mostrar el DOC/DOCX de PDF o Word dentro de la ventana de WinForms?
- 17. Convert SQL para LINQ to SQL
- 18. convert & lt to <xml document
- 19. Convertir Markdown + CSS a .doc o .pdf
- 20. Datagrid export to pdf
- 21. HTML5 to PDF serverside
- 22. Ahorra incrustado documento de Word como PDF
- 23. JSON `date (...)` to `java.Util.Date` using` org.json`
- 24. Assert call to method using Mock python
- 25. Delphi to .NET Converter
- 26. Leer/analizar/modificar documento de MS Word en Delphi sin Word Automation
- 27. Delphi SAPI Text-To-Speech
- 28. Convierte archivos Word doc o docx en archivos de texto?
- 29. Delphi 2010: EOleSysError 'no coincide el tipo' llamando control ActiveX
- 30. Convertir el archivo de Word doc a docx en un servidor sin Word
Elijo esto como respuesta porque contiene 'wdDoNotSaveChanges' que me ha ayudado mucho. Perdí 1 día y luego volví a leer esta pregunta. Sin usar esa palabra, se pide ahorrar y es muy molesto. – LaBracca