Hola, necesito generar documentos en pdf. He estado revisando distintos hilos y he encontrado bastante información. Estoy valorando dos metodos de impresión a través del pdfcreator. Ambos me funcionan, pero me falta resolver pequeños errores. Os comento:
1º. Metodo (a partir de unas aportaciones de Neftali):
Código:
ShellExecute(Handle,
nil ,
Pchar('C:\Archivos de programa\PDFCreator\PDFCreator.exe'),
Pchar('/NOSTART /PF"C:\prueba.doc"'),
0,
SW_SHOWNORMAL);
Esto me funciona bien. Pero me gustaría poder pasar opciones de configuracion del pdfcreator. Esto puedo hacerlo por medio de la opcion "/OptionsFile"C:\configpdf.ini" . El problema que tengo es que no se que estructura tiene el fichero ini y no se como crearlo. He mirado si desde pdfcreator hay alguna opcion para guardar las opciones de configuracion en un fichero pero no he encontrado nada.
Alguna idea de cual es la estructura de este fichero?
2º. Metodo (a partir de aportaciones de roman):
Código:
PrinterIndex := Printer.Printers.IndexOf('PDFCreator');
if PrinterIndex <> -1 then
begin
OldPrinterIndex := Printer.PrinterIndex;
Printer.PrinterIndex := PrinterIndex;
PdfCreator := CreateOLEOBject('PDFCreator.clsPDFCreator');
try
PdfCreator.cStart();
PdfCreator.cOption('UseAutosave') := 1;
PdfCreator.cOption('UseAutosaveDirectory') := 1;
PdfCreator.cOption('AutosaveDirectory') := 'c:\';
PdfCreator.cOption('AutosaveFilename') := 'prueba'; // la extensión es opcional
PdfCreator.cOption('AutosaveFormat') := 0; // PDF format
ShellExecute(Handle, 'print', Pchar('C:\prueba.doc'), nil, nil, SW_HIDE);
finally
Printer.PrinterIndex := OldPrinterIndex;
// Cerramos el monitor
PdfCreator.cClose;
end;
end;
Este codigo me funciona bien la creacion del pdf, pero el cambio de impresora no funciona. He hecho el seguimiento al codigo, y los indices de la impresora en el "Printer" me los cambia bien, pero el "shelexecute" sigue enviado a imprimir a la impresora predeterminada y no a la que le indico. Alguna idea de donde puede estar el error?
Gracias por sus aportaciones.