Ver Mensaje Individual
  #8  
Antiguo 09-05-2018
QuiqueSalamanca QuiqueSalamanca is offline
Miembro
 
Registrado: mar 2014
Posts: 35
Reputación: 0
QuiqueSalamanca Va por buen camino
Cita:
Empezado por manelb Ver Mensaje
Saludos a todos...

No se si alguien ha solucionado este tema, pero yo lo estoy revisando ahora.

He conseguido evitar el error de esta linea

Código Delphi [-]
PdfCreator := CreateOLEOBject('PDFCreator.clsPDFCreator');

cambiándola por esta otra encontrada en un ejemplo de VB

Código Delphi [-]
PdfCreator := CreateOLEObject('PDFCreator.PDFCreatorObj');

pero a continuación se produce un error en todas las siguientes

Código Delphi [-]
    PdfCreator.cStart();
    PdfCreator.cOption('UseAutosave') := 1;
    PdfCreator.cOption('UseAutosaveDirectory') := 1;
    PdfCreator.cOption('AutosaveDirectory') := RutaGuardar;
    PdfCreator.cOption('AutosaveFilename') := NombreFichero; // la extensión es opcional
    PdfCreator.cOption('AutosaveFormat') := 0; // PDF format

con el mensaje: "Method cStart not supoorted by automation object."


¿ Alguna idea ?

Sigo investigando ....
Buenas, prueba esto:

Código Delphi [-]
OldPrinterIndex := FormImprimePaciente.PrnPaciente.PrinterSettings.PrinterIndex;
  FormImprimePaciente.PrnPaciente.PrinterSettings.PrinterIndex := PrinterIndex;
  PdfCreator := CreateOLEOBject('PDFCreator.JobQueue'); //La cola de impresion
  try
    PdfCreator.Initialize(); //Empieza la guerra    

    FormImprimePaciente.PrnPaciente.ReportTitle := 'BIA_Test: Datos Paciente';
    With FormImprimePaciente Do begin
      If FileExists(ModuloDatos.TablaCentroTrabajoNombreLogo.AsString) then
        QRLogo.Picture.LoadFromFile(ModuloDatos.TablaCentroTrabajoNombreLogo.AsString)
      Else QRLogo.Picture := nil;
      QRLogo.Stretch := ModuloDatos.TablaCentroTrabajoAjusteLogo.AsBoolean;
      QRLabel94.Caption := ModuloDatos.TablaCentroTrabajoNombre1.AsString;
      QRLabel24.Caption := ModuloDatos.TablaCentroTrabajoNombre2.AsString;
      QRLabel95.Caption := ModuloDatos.TablaCentroTrabajoLinea1.AsString;
      QRLabel99.Caption := ModuloDatos.TablaCentroTrabajoLinea2.AsString;
      QRLabel96.Caption := ModuloDatos.TablaCentroTrabajoLinea3.AsString;
      QRLabel2.Caption:=ModuloDatos.TablaPacientesAPELLIDOS.AsString;
      QRLabel4.Caption:=ModuloDatos.TablaPacientesNOMBRE.AsString;
      QRLabel6.Caption:=ModuloDatos.TablaPacientesDIRECCION.AsString;
      QRLabel8.Caption:=ModuloDatos.TablaPacientesPROVINCIA.AsString;
      QRLabel10.Caption:=ModuloDatos.TablaPacientesCIUDAD.AsString;
      QRLabel12.Caption:=ModuloDatos.TablaPacientesPOSTAL.AsString;
      QRLabel14.Caption:=ModuloDatos.TablaPacientesFECHA.AsString;
      QRLabel16.Caption:=ModuloDatos.TablaPacientesTELEFONO.AsString;
      QRLabel17.Caption:=ModuloDatos.TablaPacientesFAX.AsString;
      QRLabel26.Caption:=ModuloDatos.TablaPacientesCORREO.AsString;
    end;

    Screen.Cursor := crHourGlass;
    FormImprimePaciente.PrnPaciente.Prepare;
    FormImprimePaciente.PrnPaciente.Print;

    if not ( PdfCreator.WaitForJob( 15 ) ) then //15 segundos de espera para que llegue a la cola
      ShowMessage( 'El trabajo no ha llegado a la cola de impresión después de 15 segundos.' );

    oTrabajo := PdfCreator.NextJob; //Obtenemos el trabajo de impresión
   
    oTrabajo.SetProfileByGuid( 'DefaultGuid' ); //DefaultGuid crea un PDF normal...

    oTrabajo.ConvertTo( RutaGuardar+'\'+NombreFichero+'.pdf' ); //Convertimos el trabajo, debe ser la ruta con el nombre del PDF CON EXTENSION!
   
   if ( not  oTrabajo.IsFinished )     or      //Si no ha terminado o no ha tenido exito
      ( not  oTrabajo.IsSuccessful ) then
     raise Exception.Create( 'Error al convertir' );


  finally
  // Cuidado que puede quedarse en bucle... 
  // método rudimentario para saber cuando terminó de crearse el archivo
    while not FileExists(RutaGuardar+'\'+NombreFichero+'.pdf') do
      Application.ProcessMessages;
    // Cerramos el monitor
    PdfCreator.cClose;
    PdfCreator := Unassigned;
  end;
  Screen.Cursor := crDefault;
  FormPrincipal.KillTask('PdfCreator.exe');
  FormImprimePaciente.PrnPaciente.PrinterSettings.PrinterIndex := OldPrinterIndex;

Nota: la variable oTrabajo debe ser del mismo tipo que el objeto PdfCreator

Ya nos dices!
Responder Con Cita