Hola,
Puedes exportar el documento a través de OLE.
Intenta esto:
Saludos, Dieter
Avalados por :
Hola Geeks,
Tengo un requisito para manipular un documento MS-Word (.docx) a través de OLE (Object Link Enabling) y guardarlo como PDF en el sistema local.
He utilizado WORD.BASIC como objeto y logré manipular el documento (.docx) y guardarlo en el mismo formato .docx.
Pero estoy enfrentando un desafío técnico al intentar guardar el documento (.docx) como PDF.
¿Alguien puede guiarme sobre cómo guardar el .docx como PDF a través de OLE ? He buscado en muchos blogs y foros pero no he encontrado una solución adecuada para guardar el documento manipulado (.docx) como PDF.
Adjunto el código que utilicé para la manipulación del documento (.docx).
CREATE OBJECT lv_word 'WORD.BASIC'.
CALL METHOD OF lv_word 'FILEOPEN' EXPORTING #1 = <<file_path>>.
CALL METHOD OF lv_word 'ViewHeader'.
CALL METHOD OF lv_word 'EDITREPLACE'
EXPORTING
#01 = <<Find_Word>>
#02 = <<Replace_word>>
#03 = 0
#04 = 0
#05 = 0
#06 = 0
#07 = 0
#08 = 0
#09 = 0
#10 = 1
#11 = 0
#12 = 1.
CALL METHOD OF lv_word 'CloseViewHeaderFooter'.
CALL METHOD OF lv_word 'FILESAVEAS' EXPORTING #1 = <<file_path>>.
CALL METHOD OF lv_word 'DOCCLOSE' EXPORTING #1 = 2.
CALL METHOD OF lv_word 'APPCLOSE'.
Gracias y saludos,
Saivignesh Sudarsan.
Hola,
Puedes exportar el documento a través de OLE.
Intenta esto:
Saludos, Dieter
Hola Simone Milesi,
Muchas gracias por tu información tan importante, a partir de la cual he encontrado la solución para guardar el archivo .docx en formato PDF.
Me siento agradecido y feliz
Gracias y saludos,
Saivignesh Sudarsan.
¡Hola!
Cuando invoques el método SaveAs, pasa como segundo parámetro '17' -> es el valor para guardar como pdf
Lo obtuve de otro foro
¡Listo! Descubrí cómo hacerlo.
Resulta que el número 17 es el FormatType para PDF, así que solo tienes que hacer algo como esto:
document.SaveAs(filename, 17)
No vi ninguna documentación al respecto, pero empezamos desde 0 como FormateType y una vez que llegamos a 17, ¡se creó un PDF válido!
La referencia es de un blog de Ruby, pero utiliza Win OLE para lograrlo, así que creo que puedes hacer lo mismo
Ruby en Windows: Guardar documentos de Microsoft Office como PDFs
Avísame si funciona
Hola Geeks,
Gracias por tu respuesta pude obtener una idea de ambos ( Simone Milesi & Dieter Gröhn ) .
pero no estaba seguro de cómo usar los parámetros de los métodos para guardar el archivo .docx como pdf.
así que durante mi búsqueda, encontré un hilo (que se muestra a continuación) que fue útil.
Ahora permíteme explicar cómo logré el objetivo (guardar el archivo .docx en formato pdf usando OLE).
Paso - 1:
Inicialmente usé WORD.BASIC para manipular el archivo .docx.
Adjunto el código que utilicé (como se mencionó anteriormente)
CREATE OBJECT lv_word 'WORD.BASIC'.
CALL METHOD OF lv_word 'FILEOPEN' EXPORTING #1 = <<file_path>>.
CALL METHOD OF lv_word 'ViewHeader'.
CALL METHOD OF lv_word 'EDITREPLACE'
EXPORTING
#01 = <<Find_Word>>
#02 = <<Replace_word>>
#03 = 0
#04 = 0
#05 = 0
#06 = 0
#07 = 0
#08 = 0
#09 = 0
#10 = 1
#11 = 0
#12 = 1.
CALL METHOD OF lv_word 'CloseViewHeaderFooter'.
CALL METHOD OF lv_word 'FILESAVEAS' EXPORTING #1 = <<file_path>>.
CALL METHOD OF lv_word 'DOCCLOSE' EXPORTING #1 = 2.
CALL METHOD OF lv_word 'APPCLOSE'.
Paso - 2:
Ahora, usé WORD.APPLICATION para guardar el archivo manipulado en pdf.
create object lv_wordapp 'word.application'.
set property of lv_wordapp 'Visible' = 0.
call method of lv_wordapp 'Documents' = v_worddoc.
call method of lv_worddoc 'Open'
exporting
#1 = 'C:\ <FILENAME.DOCX>'.
call method of lv_wordapp 'ActiveDocument' = lv_wordadoc.
call method of lv_wordadoc 'Content' = lv_wordcont.
call method of lv_wordadoc 'SaveAs'
exporting
#1 = 'C:\ <FILENAME.PDF>'
#2 = 17.
call method of lv_wordapp 'Quit'.
free object lv_wordapp .
El archivo PDF se genera con éxito.
Finalmente encontré una solución y el código anterior funciona perfectamente bien
Gracias a todos
Gracias y Saludos,
Saivignesh Sudarsan.
contacto@primeinstitute.com
(+51) 1641 9379
(+57) 1489 6964
© 2024 Copyright. Todos los derechos reservados.
Desarrollado por Prime Institute