Ver Mensaje Individual
  #1  
Antiguo 12-02-2021
viverosjosem viverosjosem is offline
Baneado
 
Registrado: dic 2017
Posts: 64
Reputación: 0
viverosjosem Va por buen camino
Question Imprimir contenido Base64 como Binario

Hola amigos del foro.

Tengo la siguiente situacion:
Recibo un string en Base64 desde un servidor WebService. Este contenido Base64 se procesa y se graba en disco como un Archivo PDF.

Código Delphi [-]
...
...
...

   sB64 := jValue.ToString;

   a := copy(sB64, pos('PDF":"', sB64)+6, length(sB64)-2);

   if (pos('error', sB64) > 0) then begin
      MemoContent.Text := jValue.ToString;
      PageControl1.ActivePage := TsErrores;

      lFlag := True;  // Detenemos el timer
      lError := True;

      lResult := False;
   end
   else begin
      sFF := Folder_ArchiDTE + '\PDF\';
      DecodeFile(a, sFF + sNumBFDte + '.PDF');

...
...
...

procedure TArchiDTE.DecodeFile(const base64: String; const FileName: string);
var
  stream: TBytesStream;
begin
  stream := TBytesStream.Create(TNetEncoding.Base64.DecodeStringToBytes(base64));
  try
    stream.SaveToFile(Filename);
  finally
    stream.Free;
  end;
end;

Una vez que el archivo PDF, esta grabado en disco, lo tomo con una aplicacion externa y lo envio a la impresora de Tikets (80x80).
La forma que uso para imprimirlo es esta:

Código Delphi [-]
ShellExecute(Handle, 'open', PChar(Folder_ArchiDTE + '\PdfToPrinter.exe'), PChar(sFF + sNumBFDte + '.PDF' + ' ' + EdPrinter.Text), nil, SW_HIDE).

Esto Funciona bien!, La boleta en PDF se imprime correctamente. Pero el proceso es muy lento. Mas de 20 segundos, entre grabar el archivo, rescatarlo, y luego imprimirlo.


La pregunta es:

¿Existe la manera de poder tomar el contenido en Base64, llevarlo a binario, y luego imprimirlo en la impresora de tikets directamente? (sin tener que grabar para luego rescatar y luego imprimir).

De antemano gracias.

Saludos
Jose Miguel.
Responder Con Cita