Existen maneras de imprimir un PDF por codigo mediante C/AL.
En este ejemplo utilizaremos la impresora de Bullzip para imprimir una factura.
PrintSelCreated := FALSE;
IF NOT PrinterSelection.GET('',206) THEN BEGIN
PrinterSelection.INIT;
PrinterSelection."Report ID" := 206;
PrinterSelection."Printer Name" := 'Bullzip PDF Printer';
PrinterSelection.INSERT;
PrintSelCreated := TRUE;
END ELSE BEGIN
ActualPrinterSel := PrinterSelection."Printer Name";
PrinterSelection."Printer Name" := 'Bullzip PDF Printer';
PrinterSelection.MODIFY;
END;
CREATE(BullZipPDF);
BullZipPDF.Init;
BullZipPDF.LoadSettings;
RunOnceFile := BullZipPDF.GetSettingsFileName(TRUE);
BullZipPDF.SetValue('Output','C:\Temp\Sample.pdf');
BullZipPDF.SetValue('Showsettings', 'never');
BullZipPDF.SetValue('ShowPDF', 'no');
BullZipPDF.SetValue('ShowProgress', 'no');
BullZipPDF.SetValue('ShowProgressFinished', 'no');
BullZipPDF.SetValue('SuppressErrors', 'yes');
BullZipPDF.SetValue('ConfirmOverwrite', 'no');
BullZipPDF.WriteSettings(TRUE);
SalesInvHeader.SETRANGE("No.", '1103001');
REPORT.RUNMODAL(206,FALSE,FALSE,SalesInvHeader);
TimeOut := 0;
WHILE EXISTS(RunOnceFile) AND (TimeOut < 10) DO BEGIN
SLEEP(1000);
TimeOut := TimeOut + 1;
END;
IF PrintSelCreated THEN
PrinterSelection.DELETE
ELSE BEGIN
PrinterSelection."Printer Name" := ActualPrinterSel;
PrinterSelection.MODIFY;
END;
//Para mostrar la factura generada
HYPERLINK('C:\Temp\Sample.pdf');
//Para enviarla por email
cu400.CreateMessage('Sender','sender@mycompany.com','recipient1@yourcompany.com;recipient2@yourcompany.com','Subject','Body',TRUE);
cu400.AddAttachment('C:\Temp\Sample.pdf');
cu400.Send;
Hola muchas gracias por el codigo, pero estaria bien que pusieras las variables globales que usaste, para principiantes como yo. Saludos.
ResponderEliminar