Cita:
Empezado por manelb
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; PdfCreator.cOption('AutosaveFormat') := 0;
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'); try
PdfCreator.Initialize();
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 ShowMessage( 'El trabajo no ha llegado a la cola de impresión después de 15 segundos.' );
oTrabajo := PdfCreator.NextJob;
oTrabajo.SetProfileByGuid( 'DefaultGuid' );
oTrabajo.ConvertTo( RutaGuardar+'\'+NombreFichero+'.pdf' );
if ( not oTrabajo.IsFinished ) or ( not oTrabajo.IsSuccessful ) then
raise Exception.Create( 'Error al convertir' );
finally
while not FileExists(RutaGuardar+'\'+NombreFichero+'.pdf') do
Application.ProcessMessages;
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!