Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   impresion por comandos con pdfcreator (https://www.clubdelphi.com/foros/showthread.php?t=87827)

URBANO 03-03-2015 11:25:14

impresion por comandos con pdfcreator
 
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.

QuarkBcn 04-03-2015 10:20:39

Hola
 
Este código NO funciona a partir de la version 1.7.3 de PDFCreator. Según comentan han reescrito todo el interface COM.

Si alguien sabe como hacerlo funcionar de nuevo con la nueva versión del PDFCreator, que lo comente. Si logro averiguarlo por otro camino, lo comentaré aquí.

Saludos !!!

URBANO 04-03-2015 14:40:00

Tienes razón, lo he probado y con la versión 2.0 no funciona. Pero para la solución que estoy buscando me vale la versión del pdfcreator 1.7.3.

Luego si alguien puede aportarme alguna idea, lo agradezco.


La franja horaria es GMT +2. Ahora son las 19:28:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi