Der oben gepostete Code ist in Ordnung, es scheitert wahrscheinlich eher an den Parametern.
Ich empfehle, einen stdout-Handler zu implementieren:
Delphi-Quellcode:
function GSStdIn(ACaller: Pointer; ABuffer: PAnsiChar; ALen: Integer): Integer;
stdcall;
begin
Result := StrLen(ABuffer);
end;
function GSStdOut(ACaller: Pointer; ABuffer: PAnsiChar; ALen: Integer): Integer;
stdcall;
var
sBuffer :
string;
iChar : Integer;
begin
for iChar := 0
to ALen - 1
do
sBuffer := sBuffer + ABuffer[iChar];
sGSOutput := sGSOutput + sBuffer;
Result := ALen;
end;
...
@gsapi_set_stdio := GetProcAddress(hDllInst, '
gsapi_set_stdio');
if gsapi_set_stdio(instance, @GSStdIn, @GSStdOut, @GSStdOut) <> 0
then
raise Exception.Create('
Could not set stdio functions');
In der Variable sGSOutput werden so alle Ausgaben (z.B. Fehlermeldungen) von GhostScript gespeichert.