0
美好的一天!即使通過網絡訪問其他人,PrinterJob [JAVA]對話框仍會出現在主機中,爲什麼?
我目前正在研究需要將某些數據直接打印到打印機的程序。幸運的是,我已經在Java中運行了PrinterJob和Printable實用程序。下面是代碼:
SWFPrintableUtil oUtil = new SWFPrintableUtil(sResult);//SWFPrintableUtil implements Printable
PrinterJob oPrinterJob = PrinterJob.getPrinterJob();
oPrinterJob.setPrintable(oUtil);
boolean bDoPrint = oPrinterJob.printDialog();
if (bDoPrint)
{
try
{
oPrinterJob.print();
}
catch (PrinterException e)
{
e.printStackTrace();
}
}
else
{
;
}
這是它實現了打印接口的代碼:
@Override
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException {
if (pageIndex != 0)
{
return NO_SUCH_PAGE;
}
System.out.println(csContents);
Graphics2D g2d = (Graphics2D) graphics;
int nX = (int) pageFormat.getImageableX();
int nY = (int) pageFormat.getImageableY();
g2d.translate(nX, nY);
Font oFont = new Font("Serif", Font.PLAIN, 8);
FontMetrics oMetrics = graphics.getFontMetrics(oFont);
int nLineHeight = oMetrics.getHeight();
BufferedReader oReader = new BufferedReader(new StringReader(csContents));
String sLine = "";
try
{
while((sLine = oReader.readLine()) != null)
{
nY = nY + nLineHeight;
g2d.drawString(sLine, nX, nY);
}
}
catch (IOException e)
{
e.printStackTrace();
}
return PAGE_EXISTS;
}
顯然,這個代碼可以做我想做的。點擊按鈕後,此代碼將通過網頁觸發。我已經在Tomcat服務器中部署了這個網頁。單擊該按鈕後,會出現一個對話框,供您選擇打印機並佈置頁面(橫向/縱向,紙張尺寸等)。比方說,我已經在「計算機A」和「計算機B」中部署了我的網站(通過Tomcat)並嘗試使用打印功能,但發生的情況是彈出的打印對話框仍顯示爲「計算機A」 。任何人都可以幫我解決這個問題嗎?提前致謝!
問候, ONEB
嗨!美好的一天,所以你說我的情況是絕望的?在訪問主機的計算機上,打印設置對話框將不會出現? – Oneb 2012-02-14 03:54:18
是的,我認爲是。我想你有一個運行在你的tomcat服務器上的servlet。當你在那裏打印作業時,它將在服務器計算機上運行。我很確定無法讓Java在客戶端計算機上顯示「打印設置」對話框。你可以嘗試的是在你的網站上使用一個鏈接來打開使用JavaScript的打印對話框。 – hage 2012-02-14 11:30:36
謝謝!我會嘗試你的建議。 – Oneb 2012-02-16 02:43:28