Delphi と Envision Image Library で PDF を書き出す

Envision Image Library は使いやすいのですが、デモの作りと同じようにプログラムを書いたら、PDF 書き出しが非常に遅く、使えないことがわかりました。

あまりにも遅いのでドキュメントを確認してみると、遅いから推奨しないと書いてありました(^^;

せっかくなので、遅かったコードと速いコードの2種類を載せておきます。

■遅いコード

procedure TForm1.ToolButton1Click(Sender: TObject);
var
  i: Integer;
  FrameCount: Integer;
  SaveFileName: String;
begin
  if OpenDialog1.Execute then begin
    FrameCount := ImageScrollBox1.ImageCountFromFile(OpenDialog1.FileName);
    SaveFileName := ChangeFileExt(OpenDialog1.FileName, ‘.pdf’);

    ImageScrollBox1.LoadFromFile(OpenDialog1.FileName, 1);
    ImageScrollBox1.SaveToFile(SaveFileName);

    for i := 2 to FrameCount do begin
      ImageScrollBox1.LoadFromFile(OpenDialog1.FileName, i);
      ImageScrollBox1.AppendToFile(SaveFileName);
    end;
  end;
end;

フレームの数だけ AppendToFile を繰り返しています。
最初に PDF ファイルを作成するときだけは、SaveToFile です。
この方法では、AppendToFile の度に PDF の解析やらなんやら処理が必要で、枚数に二次関数的に比例して、操作が遅くなります。

■速いコード

function TForm1.GetGraphicMethod(const ImageNo: Integer;  var FreeGraphic: Boolean): TGraphic;
begin
  ImageScrollBox1.LoadFromFile(OpenDialog1.FileName, ImageNo);
  Result := ImageScrollBox1.Graphic as TGraphic;
end;

procedure TForm2.ToolButton4Click(Sender: TObject);
var
  FrameCount: Integer;
  SaveFileName: String;
  Graphic: TPdfGraphic;
  Stream: TFileStream;
begin
  if OpenDialog1.Execute then begin
    FrameCount := ImageScrollBox1.ImageCountFromFile(OpenDialog1.FileName);

    SaveFileName := ChangeFileExt(OpenDialog1.FileName, ‘.pdf’);

    Graphic := TPdfGraphic.Create;
    Stream := TFileStream.Create(SaveFileName, fmCreate);

    Graphic.MultiSaveToStream(Stream, FrameCount, GetGraphicMethod);

    Stream.Free;
    Graphic.Free;
  end;
end;

コールバック関数 GetGraphicMethod() を利用し、MultiSaveToStream を利用したコードです。
コールバック関数では、追加したい画像情報が渡されますので、引数を利用して TGraphic オブジェクトを返すことになります。

コードの視認性を良くするために、例外処理は省いています。
RAD Studio 2007 に、Trial 版のパッケージ(バージョン 2.52)を追加した状態での確認です。

10年集客し続けられるサイトを、ワードプレスで自作する9つのポイント プレゼント

【最後まで読んでくれたあなたに】

あなたは、24時間365日、自分の代わりに集客し続けてくれるWebサイトを作りたい!と思ったことはありませんか?

私はこれまで500以上のWebサイトの構築と運営のご相談に乗ってきましたが、Webサイトを作ってもうまく集客できない人には、ある一つの特徴があります。

それは、「先を見越してサイトを構築していないこと」です。
Webサイトで集客するためには、構築ではなく「どう運用するか」が重要です。

しかし、重要なポイントを知らずにサイトを自分で構築したり、業者に頼んで作ってもらってしまうと、あとから全く集客に向いていないサイトになっていたということがよく起こります。

そこで今回、期間限定で
『10年集客し続けられるサイトをワードプレスで自作する9つのポイント』
について、過去に相談に乗ってきた具体的な失敗事例と成功事例を元にしてお伝えします。

・ワードプレスを使いこなせるコツを知りたい!
・自分にピッタリのサーバーを撰びたい!
・無料ブログとの違いを知りたい!
・あとで悔しくならない初期設定をしておきたい!
・プラグイン選びの方法を知っておきたい!
・SEO対策をワードプレスで行うポイントを知りたい!
・自分でデザインできる方法を知りたい!

という方は今すぐ無料でダウンロードしてください。

期間限定で、無料公開しています。

※登録後に表示される利用条件に沿ってご利用ください

コメントを残す