C
cnhotel
Unregistered / Unconfirmed
GUEST, unregistred user!
用的dlsoft的二维条码PDF417控件,需要在FastReport中打印该条码!
不晓得如何在FR中直接能打印这个二维条码?
现在的想法是折衷:
先将生成的二维条码导出为bmp图片,然后在FR中用Picture Object调用指定路径的图片进行打印.
遇到的问题是:
1、
这个二维条码通过自带的函数导出为bmp格式的图片在画图、AcdSee等软件中均可正常打开,打印后可以正常扫描识别!
但在Delphi中不管是Image控件还是其它的,打开该控件导出的bmp图片均提示"bitmap image is not valid"...不能加载使用?
在画图中打开后另存为bmp能加载到Image中,但打印出来后的条码无法正确扫描识别!
不知何故?
2、既然控件导出的图片不能加载,就考虑了程序导出这个图片,以下操作:
procedure Tmain_f.makebarcode;
var bmp:Tbitmap;
rect:TRect;
pScalex,pScaley:integer;
begin
try
Barcode21.SecurityLevel:=3;
Barcode21.Xunit:=10;
Barcode21.Yunit:=30;
Barcode21.Columns:=7;
Barcode21.Caption:='987654321abcdefg';
//保存图片
bmp:=Tbitmap.Create;
bmp.PixelFormat := pf4bit;
pScalex:=GetDeviceCaps((Printer.Handle),LOGPIXELSX);
pScaley:=GetDeviceCaps((Printer.Handle),LOGPIXELSY);
bmp.Width:=(Barcode21.ImageWidth*pScalex) div 5080;
bmp.Height:=(Barcode21.ImageHeight*pScaley) div 5080;
rect.Left:=0;
rect.top:=0;
rect.Right:=bmp.Width;
rect.Bottom:=bmp.Height;
bmp.Canvas.StretchDraw(rect,Barcode21.Picture.Graphic);
bmp.SaveToFile('c:/Temp.bmp');
finally
bmp:=nil;
bmp.free;
end;
end;
这样导出来的图片的问题也出现问题,就是打印后无法正常扫描识别~
控件本身的打印示例是直接发往打印机区域打印的,打印出很正常!
请问该如何是好?有没有其它方法可以解决呢?因为这个条码在标签中是指定位置摆放的,单打出标签裁减后再贴上去有违程序风格...
不晓得如何在FR中直接能打印这个二维条码?
现在的想法是折衷:
先将生成的二维条码导出为bmp图片,然后在FR中用Picture Object调用指定路径的图片进行打印.
遇到的问题是:
1、
这个二维条码通过自带的函数导出为bmp格式的图片在画图、AcdSee等软件中均可正常打开,打印后可以正常扫描识别!
但在Delphi中不管是Image控件还是其它的,打开该控件导出的bmp图片均提示"bitmap image is not valid"...不能加载使用?
在画图中打开后另存为bmp能加载到Image中,但打印出来后的条码无法正确扫描识别!
不知何故?
2、既然控件导出的图片不能加载,就考虑了程序导出这个图片,以下操作:
procedure Tmain_f.makebarcode;
var bmp:Tbitmap;
rect:TRect;
pScalex,pScaley:integer;
begin
try
Barcode21.SecurityLevel:=3;
Barcode21.Xunit:=10;
Barcode21.Yunit:=30;
Barcode21.Columns:=7;
Barcode21.Caption:='987654321abcdefg';
//保存图片
bmp:=Tbitmap.Create;
bmp.PixelFormat := pf4bit;
pScalex:=GetDeviceCaps((Printer.Handle),LOGPIXELSX);
pScaley:=GetDeviceCaps((Printer.Handle),LOGPIXELSY);
bmp.Width:=(Barcode21.ImageWidth*pScalex) div 5080;
bmp.Height:=(Barcode21.ImageHeight*pScaley) div 5080;
rect.Left:=0;
rect.top:=0;
rect.Right:=bmp.Width;
rect.Bottom:=bmp.Height;
bmp.Canvas.StretchDraw(rect,Barcode21.Picture.Graphic);
bmp.SaveToFile('c:/Temp.bmp');
finally
bmp:=nil;
bmp.free;
end;
end;
这样导出来的图片的问题也出现问题,就是打印后无法正常扫描识别~
控件本身的打印示例是直接发往打印机区域打印的,打印出很正常!
请问该如何是好?有没有其它方法可以解决呢?因为这个条码在标签中是指定位置摆放的,单打出标签裁减后再贴上去有违程序风格...
代码: