flywolf(mailto:flywolf@ynmail.com)
最近,我偶然發(fā)現(xiàn)了一個(gè)超星 -> BMP的方法。
首先,請下載最新的“超星3.4Beta 7”,安裝后,運(yùn)行Delphi5,選擇Component->Import ActiveX Control,然后,你會發(fā)現(xiàn)“Import ActiveX”中有一個(gè)選擇為“Pdg2 Type Library(Version 1.0)”.....,剩下的事不用我說了吧。
我的方法:
procedure TMainForm.PdgToBmp(FPdgName, FBmpName: string);//FPdgname--超星格式文件名 FBmpName--要保存的BMP文件名。
var i:integer;
j:boolean;
begin
ClipBoard.Clear;
MyPdg.LoadPage(FPdgName,0,0,10);
Mypdg.Refresh;
MyPdg.CopyToClipBoard (0,0,MyPdg.PageWidth ,MyPdg.PageHeight); //這一操作需要一段時(shí)間
j:=false;
while j=false do
begin
MyPdg.CopyToClipBoard (0,0,MyPdg.PageWidth ,MyPdg.PageHeight);
for i:=0 to clipboard.FormatCount -1 do //檢測ClipBoard中是否有位圖,因?yàn)槲以谡{(diào)試中發(fā)現(xiàn)有時(shí)執(zhí)行MyPdg.CopyToClipBoard (0,0,MyPdg.PageWidth ,MyPdg.PageHeight);會出錯,只有檢測到有位圖存在時(shí),再進(jìn)行復(fù)制.
if Clipboard.Formats=2 then j:=true;
end;
Bmp.LoadFromClipBoardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
bmp.PixelFormat:=pf1bit ;
bmp.SaveToFile(FBmpName);
end;
另外,如果對整個(gè)目錄下的文件連續(xù)進(jìn)行轉(zhuǎn)換,請?jiān)谙噜弮纱无D(zhuǎn)換過程中插入
Sleep(1000);//給超星一點(diǎn)時(shí)間,否則她會有意見,不干活啦!!!
且 Mypdg.Visible必須設(shè)置True;
我發(fā)現(xiàn)轉(zhuǎn)為BMP后用清華OCR識別的效果并不好,如果各位有什么高見,拿出來大伙公分享吧!!!