我得到了一份“新工作”,用QR过滤器来“存档”一些数据。
当数据结构修改并保存到数据库中时,我们使用WMF filter开始“静默打印”,我捕获文件,并将它们全部存储在日志记录中,存储在database 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是4MB的,并与10页我必须在4*10MB的循环冗余校验…( WMF每页只有85-100 KByte,而位图只有4MB)
所以我正在寻找一些简单的方法,我可以在WMF上计算CRC,也许如果我可以完全拆分WMF报头,那么我就解决了这个问题…我不知道在这一刻。
你有什么想法吗?请让我知道!
谢谢。
发布于 2012-06-13 05:45:33
将报告导出为文本,然后比较其crc。
这是最简单的解决方案。
您也可以枚举元文件元素,但这会更加困难。
https://stackoverflow.com/questions/10999623
复制相似问题