Почему диалоговое окно PrinterJob [JAVA] по-прежнему отображается на главном компьютере, даже если другие пользователи получают к нему доступ по сети? - PullRequest
0 голосов
/ 13 февраля 2012

Добрый день!

В настоящее время я работаю над программой, которая должна печатать определенные данные непосредственно на принтер.К счастью, я столкнулся с PrinterJob и утилитой Printable на Java.Вот код:

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.После нажатия кнопки появится диалоговое окно, в котором вы сможете выбрать свой принтер и расположить макет страницы (альбомная / книжная, размер бумаги и т. Д. И т. Д.).Допустим, я развернул свой веб-сайт (через Tomcat) в «Компьютер A» и «компьютер B» получает доступ и пытается использовать функцию печати, в результате всплывающее диалоговое окно для печати по-прежнему отображается «Компьютер A»,Может ли кто-нибудь помочь мне решить эту проблему?Заранее спасибо!

С уважением, Oneb

1 Ответ

0 голосов
/ 13 февраля 2012

Поскольку код работает на главном компьютере. Я полагаю, вам нужно загрузить документ / распечатку на удаленный компьютер («Компьютер B») и распечатать его там.

...