jueves, septiembre 01, 2011

Imprimir PDF por codigo desde Navision Classic

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;

1 comentario:

  1. Hola muchas gracias por el codigo, pero estaria bien que pusieras las variables globales que usaste, para principiantes como yo. Saludos.

    ResponderEliminar