Thema: PDF Merge

Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.300 Beiträge
 
Delphi 12 Athens
 
#19

AW: PDF Merge

  Alt 11. Feb 2021, 05:09
Moin...

ein funktionierendes Beispiel:
Delphi-Quellcode:
function TGhostscript.PDFShrink(FileName: string): Boolean;
var
  TargetFileName: string;
  InitError: Integer;
begin
  if FDLLHandle = 0 then
  begin
    if not LoadDLL(FDLLPath) then
    begin
      Result := False;
      Exit;
    end;
  end;
  try
    TargetFileName := IncludeTrailingPathDelimiter(ExtractFilePath(FileName)) + conFileNameTempPDF;
    SetLength(FParameters, 7);
    FParameters[0] := '';
    FParameters[1] := '-dNOPAUSE';
    FParameters[2] := '-dBATCH';
    FParameters[3] := '-dPDFSETTINGS=/ebook';
    FParameters[4] := '-sDEVICE=pdfwrite';
    FParameters[5] := PAnsiChar(AnsiString('-sOutputFile=' + TargetFileName));
    FParameters[6] := PAnsiChar(AnsiString(FileName));

    InitError := FGsApiInitWithArgs(FGsInstance, Length(FParameters), FParameters);
    Result := (InitError = 0);
    if InitError <> 0 then
    begin
      if Assigned(FOnError) then
      begin
        FOnError(Self, Format('Fehlercode: %d', [InitError]));
      end;
    end;
  finally
    FGsApiExit(FGsInstance);
  end;

  if Result then
  begin
    if not TToolsIO.IsFileInUse(FileName) then
    begin
      try
        TFile.Delete(FileName);
        if not TToolsIO.IsFileInUse(FileName) then
        begin
          if not RenameFile(TargetFileName, FileName) then
          begin
            if Assigned(FOnError) then
            begin
              FOnError(Self, Format('Fehler beim Umbenennen von TempPDF.pdf: %s', ['Rename']));
            end;
          end;
        end
        else
        begin
          if Assigned(FOnError) then
          begin
            FOnError(Self, Format('Fehler beim Umbenennen von TempPDF.pdf: %s', ['InUse']));
          end;
        end;
      except
        if Assigned(FOnError) then
        begin
          FOnError(Self, Format('Fehler beim Umbenennen von TempPDF.pdf: %s', ['Delete']));
        end;
      end;
    end
    else
    begin
      if Assigned(FOnError) then
      begin
        FOnError(Self, Format('Fehler beim Umbenennen von TempPDF.pdf (in Benutzung): %s', [FileName]));
      end;
    end;
  end;
end;
PS:
So eine Funktion gehört nicht auf die Form sondern in eine seperate Unit / Klasse. Dieser Klasse übergiebst du dann die Dateien...

Geändert von haentschman (11. Feb 2021 um 05:13 Uhr)
  Mit Zitat antworten Zitat