Ver Mensaje Individual
  #1  
Antiguo 03-03-2015
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Reputación: 21
URBANO Va por buen camino
Question 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.
__________________
El saber no ocupa lugar.
Responder Con Cita