掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Ghostscriptの使い方 (ID:151302)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,jpeg; type TForm4 = class(TForm) Button1: TButton; Image1: TImage; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; PGSDLLInstance = ^TGSDLLInstance; TGSDLLInstance = record gsapi_revision: integer; argc: integer; argv: PAnsiChar; pHandle: Pointer; pDevices: Pointer; end; var Form4: TForm4; function gsapi_new_instance(var pinstance: PGSDLLInstance; caller_handle: Pointer): integer; stdcall; external 'gsdll32.dll'; function gsapi_init_with_args(instance: PGSDLLInstance; argc: integer; argv: PAnsiChar): integer; stdcall; external 'gsdll32.dll'; function gsapi_exit(instance: PGSDLLInstance): integer; stdcall; external 'gsdll32.dll'; function gsapi_delete_instance(instance: PGSDLLInstance): integer; stdcall; external 'gsdll32.dll'; implementation {$R *.dfm} procedure TForm4.Button1Click(Sender: TObject); var gsInstance: PGSDLLInstance; exitCode: integer; args: array[0..6] of PAnsiChar; inputFile, outputFile: AnsiString; BMP : TBitmap; begin BMP := TBitmap.Create; if OpenDialog1.Execute then begin inputFile := AnsiString(OpenDialog1.FileName); outputFile := ChangeFileExt(inputFile, '.bmp'); args[0] := 'pdf2bmp'; args[1] := '-dNOPAUSE'; args[2] := '-dBATCH'; args[3] := '-r600'; args[4] := '-sDEVICE=bmp256'; args[5] := PAnsiChar(AnsiString('-sOutputFile=' + outputFile)); args[6] := PAnsiChar(inputFile); gsInstance := nil; try exitCode := gsapi_new_instance(gsInstance, nil); if exitCode <> 0 then begin ShowMessage('Error: Ghostscript could not create new instance'); Exit; end; exitCode := gsapi_init_with_args(gsInstance, Length(args), @args[0]); if exitCode <> 0 then begin ShowMessage('Error: Ghostscript initialization failed with error code ' + IntToStr(exitCode)); Exit; end; // Load JPEG image into TImage //Image1.Picture.LoadFromFile(outputFile); exitCode := gsapi_exit(gsInstance); if exitCode <> 0 then begin ShowMessage('Error: Ghostscript exit code ' + IntToStr(exitCode)); end; finally gsapi_delete_instance(gsInstance); BMP.LoadFromFile(outputFile); Image1.Picture.Assign(BMP); BMP.Free; end; end; end; end. このプログラムをファイルに書き出さず、メモリストリームを使って直接Image1に表示するようにしたいのですが、どうにもうまくいきません。 どなたかご教授お願い致します。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.