请问如何实现连续打印多个图像文件?(100分)

  • 主题发起人 主题发起人 yyluo
  • 开始时间 开始时间
打印一个和打印多个没有什么区别啊?
你可以详细点说
 
可能打印的起始位置不一样吧。
 
我在详细说一下我遇到的问题,我现在需要实现的功能是将在一个特定目录下的所有
JPEG图像文件打印出来.
我对打印不熟悉,不知道如何直接打印JPEG文件,所以我用了很笨的办法,就是把JPEG
文件先转化成BMP文件,然后再打印他们,我用了一个循环可是打印时确只打了第一幅图
还有对于文件流stream这个概念我也不很清楚,我有这样一个想法不知是否可行:就是
把所有要打印的文件通过文件流做成一个大的图型文件,然后在打印这个文件来实现
多页打印.
下面是我的程序,请大家看看问题出在哪里:
begin
//新建所有BMP文件
app1:=form1.Picline;
while(app1<>nil) do
begin
jpegtobmp1.jpegfile:='c:/temp/s'+inttostr(app1^.num)+'.jpg';
jpegtobmp1.bmpfile:='c:/temp/p'+inttostr(app1^.num)+'.bmp';
jpegtobmp1.CopyJpegToBmp;
i:=i+1;
app1:=app1^.Next;
end;

Printer.BeginDoc;
ScaleX := GetDeviceCaps(printer.Handle, logPixelsX);
ScaleY := GetDeviceCaps(printer.handle, logPixelsY);
for j:=1 to i-1 do
begin
image1.picture.graphic.loadfromfile('c:/temp/p'+inttostr(j)+'.bmp');
R := Rect(0, 0, Image1.Picture.Width * scalex div 75, Image1.Picture.height*scaley div 75);
Printer.Canvas.StretchDraw(R, Image1.Picture.Graphic); // **
end;
printer.EndDoc; // **
end;
 
难道你用是不是D4?
我没做过jpeg的打印,但D4中jpeg与bmp是在同等位置的。
Printer.Canvas.StretchDraw(R, Image1.Picture.Graphic); 中的graphic
直接使用jpeg句柄应该没有问题。你可以声明一TJpegImage变量(jpeg单元中)
代替graphic试试。如上述方法可用,就不涉及流的问题了。
另外,如果你要打印一目录下的jpeg图像,为何用image呢?
不用的话,如下代码可以实现你的要求:
var jp:tjpegimage;

...
jp:=tjpegimage.create;

Printer.BeginDoc;
ScaleX := GetDeviceCaps(printer.Handle, logPixelsX);
ScaleY := GetDeviceCaps(printer.handle, logPixelsY);
for j:=1 to i-1 do
begin
jp.loadfromfile('c:/temp/p'+inttostr(j)+'.jpg');
R := Rect(0, 0,?? ,??);
Printer.Canvas.StretchDraw(R, jp); // **
end;
printer.EndDoc; // **
jp.free;
 
1.关于打印的问题,建议你看一看DELPHI关于TPRINTER的HELP,里面有
一个例子,可以看出你的错误:
>for j:=1 to i-1 do
>begin
> image1.picture.graphic.loadfromfile('c:/temp/p'+inttostr(j)+'.bmp');
> R := Rect(0, 0, Image1.Picture.Width * scalex div 75,Image1.Picture.height*scaley div 75);
> Printer.Canvas.StretchDraw(R, Image1.Picture.Graphic);
^^^^^^^^^^^^^^在这里应该加Printer.NewPage();
>end;
不用NewPage(),当然不可能有多页了.
2.在D4中JPEG当然可以和BMP互换,如menxin所说.另外,在D3的光盘中,有JPEG
的控件,其实就是D4使用的那个,只要装上去,就和D4一样了.
 
多谢各位的指点,我用的是D3,D3下也有TJPEGIMAGE类,我试了试menxin提供的代码,
但是发现只能打印黑白的图像,彩色图像打出来是一张白纸,请问这是什么原因呢?
总是麻烦大家,真是不好意思.
 
不知这与你的打印机是否有关?
 
我的打印机是HP-6L,应该没有问题的,补充一点黑白图打出来的效果也很差.
今天我又在D4下试了一下,也不行,真头疼!
 
单页的JPEG文件的打印问题已经解决了,确实是我的打印机的问题,我换了一台机器后
就好了,但是当我打印多个文件时,它倒是打了多张,但是每一张都是第一个文件的内容
我查了以前的问题,发现也有人遇到了同样的问题,但不知如何解决?
 
多人接受答案了。
 
后退
顶部