【发布时间】:2011-06-27 05:05:43
【问题描述】:
我创建了一个 Java Applet,它将在 IE 中用于从远程服务器打印图像。
我从我的主网页将小程序加载到一个新的弹出窗口中,它打印正常,但它在打印时锁定了新的弹出浏览器窗口。
打印作业完成后,弹出窗口会再次响应。
主浏览器窗口在打印期间保持正常运行。
在打印过程中我可以做些什么来让它打印出来,这样弹出窗口就不会被锁定?
package javaprint;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.awt.print.*;
import java.io.IOException;
import java.io.InputStream;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
public class jPrinter implements Printable
{
String ASP_NET_SessionId = null;
ArrayList<URL> pages = new ArrayList<URL>();
BufferedImage lastImage = null;
int lastRequestedIndex = 1;
public EcPrinter(ArrayList<URL> pages, String sessionId)
{
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
ImageIO.setUseCache(false);
this.pages = pages;
ASP_NET_SessionId = sessionId;
}
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
{
if (pageIndex < pages.size())
{
URL url = pages.get(pageIndex);
BufferedImage img = null;
if (pageIndex == lastRequestedIndex)
{
img = lastImage;
}
else
{
URLConnection connection = url.openConnection(Proxy.NO_PROXY);
connection.setRequestProperty("Cookie", "ASP.NET_SessionId=" + ASP_NET_SessionId);
InputStream is = connection.getInputStream();
img = ImageIO.read(is);
lastImage = img;
}
graphics.drawImage(img, 0, 0, null);
return PAGE_EXISTS;
}
return NO_SUCH_PAGE;
}
}
【问题讨论】:
标签: java asp.net html internet-explorer cross-browser