flywolf(mailto:[email protected])
最近,我偶然發現了一個超星 -> BMP的方法。
首先,請下載最新的“超星3.4Beta 7”,安裝後,運行Delphi5,選擇Component->Import ActiveX Control,然後,你會發現“Import ActiveX”中有一個選擇為“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); //這一操作需要一段時間
j:=false;
while j=false do
begin
MyPdg.CopyToClipBoard (0,0,MyPdg.PageWidth ,MyPdg.PageHeight);
for i:=0 to clipboard.FormatCount -1 do //檢測ClipBoard中是否有位圖,因為我在調試中發現有時執行MyPdg.CopyToClipBoard (0,0,MyPdg.PageWidth ,MyPdg.PageHeight);會出錯,只有檢測到有位圖存在時,再進行復制.
if Clipboard.Formats[i]=2 then j:=true;
end;
Bmp.LoadFromClipBoardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
bmp.PixelFormat:=pf1bit ;
bmp.SaveToFile(FBmpName);
end;
另外,如果對整個目錄下的文件連續進行轉換,請在相鄰兩次轉換過程中插入
Sleep(1000);//給超星一點時間,否則她會有意見,不干活啦!!!
且 Mypdg.Visible必須設置True;
我發現轉為BMP後用清華OCR識別的效果並不好,如果各位有什麼高見,拿出來大伙公分享吧!