Converter JPG para PDF usando a DLL GSDLL32.DLL em uma aplicação DELPHI

24/03/2023

0

Boa tarde!
Tenho uma pequena aplicação que converte arquivos PDF para JPG usando a dll ''GSDLL32.DLL'' do GhostScript.
Porém não estou conseguindo fazer o inverso , ou seja converter um arquivo JPG em PDF.
O trecho do código é o abaixo. Está faltando algum parâmetro ?

function TUnir.JuntaPdfs(outPdf: ansistring; const files: array of ansistring; pdfa : boolean): Integer;
const
  GS_ARG_ENCODING_UTF8  = 1;
  e_Quit = -990;
var
  code, code1, gsargc, i: Integer;
  gsargv: array of pansichar;
  minst: PGSAPIrevision;
begin
  frmAviso.lblDescricao.Caption := ''''''''''''''''Unindo os arquivos informados.'''''''''''''''';
  frmAviso.gaugProgress.MaxValue:= 100;
  frmAviso.gaugProgress.Progress:= 0;
  setlength(gsargv, length(gsargv) + 1);
  gsargv[high(gsargv)] := ''''''''''''''''gs'''''''''''''''';
  setlength(gsargv, length(gsargv) + 1);
  gsargv[high(gsargv)] := ''''''''''''''''-q'''''''''''''''';
  setlength(gsargv, length(gsargv) + 1);
  gsargv[high(gsargv)] := ''''''''''''''''-sDEVICE=pdfwrite'''''''''''''''';
  setlength(gsargv, length(gsargv) + 1);
  gsargv[high(gsargv)] := ''''''''''''''''-sPAPERSIZE=a4'''''''''''''''';
  frmAviso.gaugProgress.Progress:= 10;
  frmAviso.gaugProgress.Repaint;
  frmAviso.gaugProgress.Progress:= 30;
  frmAviso.gaugProgress.Repaint;
  setlength(gsargv, length(gsargv) + 1);
  gsargv[high(gsargv)] := ''''''''''''''''-dNOPAUSE'''''''''''''''';
  setlength(gsargv, length(gsargv) + 1);
  gsargv[high(gsargv)] := ''''''''''''''''-dBATCH'''''''''''''''';
  setlength(gsargv, length(gsargv) + 1);
  gsargv[high(gsargv)] := pansichar(''''''''''''''''-sOutputFile='''''''''''''''' + AnsiToUtf8(outPdf));
  for i := Low(files) to High(files) do
  begin
    setlength(gsargv, length(gsargv) + 1);
    gsargv[high(gsargv)] := pansichar(''''''''''''''''-c (''''''''''''''''+files[i]+'''''''''''''''') viewJPEG'''''''''''''''');
  end;
  gsargc := length(gsargv);
  code := gsapi_new_instance(@minst, nil);
  frmAviso.gaugProgress.Progress:= 50;
  frmAviso.gaugProgress.Repaint;
  if (code < 0) then result := 1
  else begin
     code := gsapi_set_arg_encoding(minst, GS_ARG_ENCODING_UTF8);
     if (code = 0) then  code := gsapi_init_with_args(minst, gsargc, @gsargv[0]);
     code1 := gsapi_exit(minst);
     if ((code = 0) or (code = e_Quit)) then  code := code1;
     gsapi_delete_instance(minst);
     if ((code = 0) or (code = e_Quit)) then result := 0;
  end;
  frmAviso.gaugProgress.Repaint;
  frmAviso.gaugProgress.Progress:= 100;
end;




Desde já agradeço.
William Maciel

William Maciel

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar