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-100 KB,而 4 MB 位图)

所以我正在寻找一些可以在 WMF 上计算 CRC 的简单方法,也许如果我可以完全拆分 WMF 标头,那么我就可以解决这个问题......我现在不知道。

你有什么想法吗?请告诉我!

谢谢。

4

1 回答 1

0

将报告导出为文本,然后比较其 crc。

这是最简单的解决方案。

您也可以枚举元文件元素,但这会更加困难。

于 2012-06-12T21:45:32.607 回答