Hola
@Yuri.
Esto lo hago en ACU Cobol, espero te sirva.
Código COBOL:
*ESTO LO USO PARA IMPRIMIR UNA FACTURA.
*PDFCREATOR COMO DESDE LÍNEA DE COMANDOS.
SPECIAL-NAMES.
copy "Word.def".
copy "pdfcreator.def".
.
WORKING-STORAGE SECTION.
77 PDF-cre handle of CLSPDFCREATOR.
77 PDF-OPT handle of CLSPDFCREATOROPTIONS.
PROCEDURE DIVISION.
IF CHOSEN-PRINTER = "PDFCreator"
*ARMO UN NOMBRE DE ARCHIVO CON LOS DATOS DE LA FACTURA
STRING NOMBRE-CLI DELIMITED BY " "
"-"
LETFAC-CRE
"-"
SUCFAC-CRE
"-"
NUMFAC-CRE
".PDF" DELIMITED BY SIZE INTO NOMBRE-ARCHIVO
END-STRING
*EL PDF SE GUARDA EN UNA CARPETA (SI NO EXISTE LA CREO EN ESTE MOMENTO)
MOVE 1 TO COPIAS
MOVE SPACES TO CARPETA-FACTURAS
STRING UNIDIR
CLIDIR
"FACTURAS" DELIMITED BY SIZE INTO CARPETA-FACTURAS
CALL "C$MAKEDIR" USING CARPETA-FACTURAS
*CONFIGURO PDFCREATOR PARA AUTOGUARDADO CON LOS DATOS : NOMBRE DE ARCHIVO Y CARPETA
create @CLSPDFCREATOR OF PDFCREATOR handle in PDF-cre
create @CLSPDFCREATOROPTIONS OF PDFCREATOR
handle in PDF-OPT
MODIFY PDF-cre, cSTART("NoprocessingAtStartup",0)
modify pdf-CRE, @cOption("Useautosave",1)
MOVE SPACES TO ADJUNTO
STRING CARPETA-FACTURAS DELIMITED BY SPACE
""
NOMBRE-ARCHIVO DELIMITED BY SIZE INTO ADJUNTO
modify pdf-CRE, @cOption("autosavedirectory",
CARPETA-FACTURAS)
modify pdf-CRE, @cOption("autosaveFilename",
NOMBRE-ARCHIVO)
modify pdf-CRE, @cOption("autosaveFormat",0)
modify pdf-CRE, @cOption("AutosaveStartStandardProgram",0)
modify pdf-CRE, @cClearCache()
END-IF.
* A partir de aca la impresión se maneja normalmente como si fuera una impresora cualquiera
* y al finalizar la impresión cierro PDFCreator y aviso al usuario.
IF CHOSEN-PRINTER = "PDFCreator"
DISPLAY MESSAGE "La factura ha sido guardada en la carpet"
"a : " CARPETA-FACTURAS H"0A"
"Con el nombre : " NOMBRE-ARCHIVO
END-IF.
** La variable ADJUNTO se usa si el .pdf se quiere enviar por correo.