¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo guardar un documento .docx como PDF a través de OLE - Guía paso a paso

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 25 Vistas
0
Cargando...

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.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola,

Puedes exportar el documento a través de OLE.

Intenta esto:

Saludos, Dieter

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

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.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¡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

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

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.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?