0

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ヘッダーを完全に分割できれば、この問題を解決できます...現時点ではわかりません。

何か考えがありますか?私にお知らせください!

ありがとう。

4

1 に答える 1

0

レポートをテキストとしてエクスポートしてから、そのcrcを比較します。

これが最も簡単な解決策です。

メタファイル要素を列挙することもできますが、それはより困難になります。

于 2012-06-12T21:45:32.607 に答える