超难,照片打印的问题

Emily000 2010-03-04 05:51:05
printer.BeginDoc; //开始打印
////////////打印照片信息//////////////////////////
ms:=tmemorystream.Create;
jp:=TJpegImage.Create;
TBlobField(udm.frmDM.AQxyzl.FieldByName('xy_zp')).SaveToStream(ms);
ms.Position:=0;
jp.LoadFromStream(ms);//读取照片
bmp := TBitmap.Create;
bmp.Width := 700;
bmp.Height := 900;
bmp.Canvas.StretchDraw(Rect(0, 0, bmp.Width, bmp.Height), jp);//将照片放大到合适的打印大小
jp.Assign(bmp);
printer.Canvas.Draw(FieldByname('c_djb11x').AsInteger,FieldByname('c_djb11y').AsInteger,jp);

ms.Free;
jp.Free;
bmp.Free;
printer.EndDoc;

用这段代码打印的照片可以用匪夷所思来相容
有的电脑能打出来,有的打不出,有的换个安装盘符能打出来,有的换个桌面能打出来??????这是为什么???
...全文
141 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangjing1979666 2010-03-05
  • 打赏
  • 举报
回复
路过学习,打印问题一直是头痛的问题
Emily000 2010-03-04
  • 打赏
  • 举报
回复
printer.Canvas.StretchDraw(Rect(FieldByname('c_djb11x').AsInteger, FieldByname('c_djb11y').AsInteger, FieldByname('c_djb11x').AsInteger+700, FieldByname('c_djb11y').AsInteger+900), jp);
这样可以了,谢谢你,明天测试通过就结贴。
Emily000 2010-03-04
  • 打赏
  • 举报
回复
rect 的位置设置很奇怪,图片打出来反的,请问谁有设置位置的参数说明呀??
Emily000 2010-03-04
  • 打赏
  • 举报
回复
谢谢,我刚才也简化了,
printer.Canvas.StretchDraw(Rect(FieldByname('c_djb11x').AsInteger, FieldByname('c_djb11y').AsInteger, 700, 900), jp);//
但是打出来的图片变形了,而且不是设置的位置
wzwcn 2010-03-04
  • 打赏
  • 举报
回复
你可以试打不了的测试打别的看看行不行,说不定是网络问题。还有你的代码还能再简化:

printer.BeginDoc; //开始打印
////////////打印照片信息//////////////////////////
ms:=tmemorystream.Create;
jp:=TJpegImage.Create;
TBlobField(udm.frmDM.AQxyzl.FieldByName('xy_zp')).SaveToStream(ms);
ms.Position:=0;
jp.LoadFromStream(ms);//读取照片
printer.Canvas.StretchDraw(Rect(FieldByname('c_djb11x').AsInteger, FieldByname('c_djb11y').AsInteger, 700, 900), jp);//将照片放大到合适的打印大小
printer.EndDoc;

ms.Free;
jp.Free;
Emily000 2010-03-04
  • 打赏
  • 举报
回复
试过了,我一开始也以为是释放的太早。但是改了之后仍然是,有时候能打出来,有时候一张也打不出。
同样的客户端装在7台配置完全一样的机器上。但是有三台可以正常打印,有四台不能打印,三台其中有一台是因为换了个盘符,有一个是换了个桌面。-_-!
我简直是抓狂了,从没有碰到这样的问题。
wzwcn 2010-03-04
  • 打赏
  • 举报
回复
试试这样正常吗:
printer.BeginDoc; //开始打印
////////////打印照片信息//////////////////////////
ms:=tmemorystream.Create;
jp:=TJpegImage.Create;
TBlobField(udm.frmDM.AQxyzl.FieldByName('xy_zp')).SaveToStream(ms);
ms.Position:=0;
jp.LoadFromStream(ms);//读取照片
bmp := TBitmap.Create;
bmp.Width := 700;
bmp.Height := 900;
bmp.Canvas.StretchDraw(Rect(0, 0, bmp.Width, bmp.Height), jp);//将照片放大到合适的打印大小
printer.Canvas.Draw(FieldByname('c_djb11x').AsInteger,FieldByname('c_djb11y').AsInteger,bmp);


printer.EndDoc;

ms.Free;
jp.Free;
bmp.Free;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧