import java.applet.Applet;
import java.awt.Graphics;
import javax.print.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.*;
import java.io.*;
import java.awt.Image;
import java.awt.MediaTracker;public class PrintFileTest extends Applet {
String imageFile;
String imageFile1;
Image image;
Image image1;
Image img;
public void init() {
imageFile = getParameter("picture");//从HTMl上面获得参数
imageFile1 = getParameter("picture1"); image = getImage(getDocumentBase(),imageFile); image1 = getImage(getDocumentBase(),imageFile1); prepareImage(image,this);
prepareImage(image1,this); MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image,0);
tracker.addImage(image1,0); try{
tracker.wait(0);
}catch(Exception ignore){ }
} public void start() {
printMap();
} public void stop() {
// printMap();
} public void destroy() { }
public void paint(Graphics g) {
g.drawImage(image1,0,0,this);
} public void printMap(){
String filename = imageFile;//从HTMl上面获得参数传给打印对话框
//出问题的地方!!!!
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); DocFlavor flavor = DocFlavor.INPUT_STREAM.JPEG; PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
PrintService service = ServiceUI.printDialog(null, 200, 200,printService, defaultService, flavor, pras);
if (service != null) {
try
{ DocPrintJob job = service.createPrintJob();
FileInputStream fis = new FileInputStream(filename);
DocAttributeSet das = new HashDocAttributeSet(); Doc doc = new SimpleDoc(fis, flavor, das);
// PageFormat format = job.pageDialog(attributes);
job.print(doc, pras);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
<html>
<head>
<title>test applet</title>
</head>
<body>
<br>
<applet
code = "PrintFileTest.class"
archive = "print.jar"
name = "hello"
width = "500"
height = "400"
hspace = "0"
vspace = "0"
align = "center"
>
<param name="picture" value="0519/666.jpg">//用来打印的
<param name="picture1" value="0519/666.jpg">//用来在HTML上显示的
</applet>
</body>
</html>
这是很完整的程序! PrintFileTest.class 和HTML文件放在./文件夹下面,而666.jpg放在./0519/下面.
当运行这个*.html文件时上面可以显示666.jpg文件,可是不能把这个文件打印出来
当你把<param name="picture" value="0519/666.jpg">改为<param name="picture" value="D:/./0519/666.jpg">时就可以打印出来!
肯定是我的printMap()写的不好。谁知道怎么修改,能把相对的路径的图片打印出来!
import java.awt.Graphics;
import javax.print.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.*;
import java.io.*;
import java.awt.Image;
import java.awt.MediaTracker;public class PrintFileTest extends Applet {
String imageFile;
String imageFile1;
Image image;
Image image1;
Image img;
public void init() {
imageFile = getParameter("picture");//从HTMl上面获得参数
imageFile1 = getParameter("picture1"); image = getImage(getDocumentBase(),imageFile); image1 = getImage(getDocumentBase(),imageFile1); prepareImage(image,this);
prepareImage(image1,this); MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image,0);
tracker.addImage(image1,0); try{
tracker.wait(0);
}catch(Exception ignore){ }
} public void start() {
printMap();
} public void stop() {
// printMap();
} public void destroy() { }
public void paint(Graphics g) {
g.drawImage(image1,0,0,this);
} public void printMap(){
String filename = imageFile;//从HTMl上面获得参数传给打印对话框
//出问题的地方!!!!
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); DocFlavor flavor = DocFlavor.INPUT_STREAM.JPEG; PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
PrintService service = ServiceUI.printDialog(null, 200, 200,printService, defaultService, flavor, pras);
if (service != null) {
try
{ DocPrintJob job = service.createPrintJob();
FileInputStream fis = new FileInputStream(filename);
DocAttributeSet das = new HashDocAttributeSet(); Doc doc = new SimpleDoc(fis, flavor, das);
// PageFormat format = job.pageDialog(attributes);
job.print(doc, pras);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
<html>
<head>
<title>test applet</title>
</head>
<body>
<br>
<applet
code = "PrintFileTest.class"
archive = "print.jar"
name = "hello"
width = "500"
height = "400"
hspace = "0"
vspace = "0"
align = "center"
>
<param name="picture" value="0519/666.jpg">//用来打印的
<param name="picture1" value="0519/666.jpg">//用来在HTML上显示的
</applet>
</body>
</html>
这是很完整的程序! PrintFileTest.class 和HTML文件放在./文件夹下面,而666.jpg放在./0519/下面.
当运行这个*.html文件时上面可以显示666.jpg文件,可是不能把这个文件打印出来
当你把<param name="picture" value="0519/666.jpg">改为<param name="picture" value="D:/./0519/666.jpg">时就可以打印出来!
肯定是我的printMap()写的不好。谁知道怎么修改,能把相对的路径的图片打印出来!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货