我得到了一份“新工作”来使用 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 标头,那么我就可以解决这个问题......我现在不知道。
你有什么想法吗?请告诉我!
谢谢。