QRフィルターでデータを「アーカイブ」する「新しい仕事」がありました。
データ構造が変更されてデータベースに保存されると、WMFフィルターを使用して「サイレント印刷」を開始し、ファイルをキャッチして、データベースBLOBのログレコードにすべて保存します。
すべて問題ありませんでしたが、同じレポートを繰り返さないようにするために後で必要になります。
「タイムスタンプQRフィールド」を無効にしましたが、記録が繰り返されました。
データベースにCRCを入れ、ページデータ(WMF)から計算しました。
興味深いのは、プログラムを終了すると、新しく生成されたWMFが変更されたため、CRCも変更されたことです。
これはQRが原因だと思ったので、簡単なDelphiプログラムで確認しました。
procedure TForm1.BitBtn1Click(Sender: TObject);
var
WMF : TMetaFile;
mfc : TMetaFileCanvas;
begin
WMF := TMetaFile.Create;
mfc := TMetaFileCanvas.Create(WMF, 0);
try
WMF.Width := 1000;
WMF.Height := 1000;
mfc.Brush.Color := clRed;
mfc.FillRect(Rect(0, 0, 100, 100));
finally
mfc.Free;
WMF.SaveToFile('test1.wmf');
WMF.Free;
end;
end;
アプリを再起動すると、新しいwmfファイルが以前とは異なります。
wmfをbmp.Canvasにストレッチすることで問題を解決すると思いましたが、すべてのbmpが4 MBであり、10ページで4 * 10 MBでCRCする必要があるため、ロギングが遅くなりました...(WMFページあたりわずか85〜100Kバイト対4MBビットマップ)
だから私はWMFでCRCを計算できる簡単な方法を探しています。おそらくWMFヘッダーを完全に分割できれば、この問題を解決できます...現時点ではわかりません。
何か考えがありますか?私にお知らせください!
ありがとう。