2016-03-30 4 views
-1

Я разрабатываю веб-приложение на Java и должен печатать отчеты при нажатии кнопки на принтере на стороне клиента. Как реализовать? Как показать принтеры с клиентской стороны ???Печать на клиентском принтере

Я использую:

PrintService[] printers = 
PrintServiceLookup.lookupPrintServices(null, null); 

Но это на стороне сервера.

+0

Если вам нужно печатать на стороне клиента, то вам нужно использовать 'Javascript window.print () '. – androidGenX

+0

Я занимаюсь разработкой на Java, и я должен напечатать некоторый отчет @androidGenX – Landre

+0

эй, если мой ответ верный, его принять. –

ответ

1

Вы должны использовать javascript на странице клиента.

window.print() 

https://developer.mozilla.org/en-US/docs/Web/API/Window/print

Если вы хотите попробовать апплета подход взглянуть на this answer

Вы не можете сделать это по соображениям безопасности. Если бы вы могли, апплеты уже стали печально известны для печати 10+ страниц «special предлагает», когда вы посещаете недобросовестные веб-сайты.

OTOH, если клиент готов принять одно приглашение на апплет , вы можете в цифровом виде подписать код.

Также должно быть возможно достичь аналогичного результата с использованием PrintService от JNLP API без необходимости использования подписанного апплета.

как в следующем примере

import javax.jnlp.*; 
    ... 

    PrintService ps; 

    try { 
     ps = (PrintService)ServiceManager.lookup("javax.jnlp.PrintService"); 
    } catch (UnavailableServiceException e) { 
     ps = null; 
    } 

    if (ps != null) { 
     try { 

      // get the default PageFormat 
      PageFormat pf = ps.getDefaultPage(); 

      // ask the user to customize the PageFormat 
      PageFormat newPf = ps.showPageFormatDialog(pf); 

      // print the document with the PageFormat above 
      ps.print(new DocToPrint()); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    // Code to construct the Printable Document 
    class DocToPrint implements Printable { 
     public int print(Graphics g, PageFormat pageformat, int PageIndex){ 
      // code to generate what you want to print 
     } 
    } 
+0

Я разрабатываю на Java, и я должен напечатать некоторый отчет @Bolza – Landre

+0

Вы понимаете, что не можете заставить действие на принтер пользователя с сервера, не так ли? Вам нужно сделать это на стороне клиента. – Bolza

+0

Я понимаю! Я думаю, используя апплет, решаем мою проблему или javascript? @Bolza – Landre

3

как ваше требование не ясно. Я не уверен, что именно вы хотите, но для печати Вы можете использовать этот window.print()

function myFunction() { 
 
    window.print(); 
 
}
<p>Click To print.</p> 
 

 
<button onclick="myFunction()">Click</button>

Вы можете прочитать больше об этом here (простой) и here (объяснение).

Edit: И если вы хотите, чтобы распечатать содержимое элемента в виде частиц вы можете использовать эту функцию:

function myPrint(data) 
{ 
    var testPage = window.open('', 'Test Page', 'height=500,width=500'); 
    testPage.document.write('<html><head><title>Test Page</title>'); 
    testPage.document.write('</head><body >'); 
    testPage.document.write(data); 
    testPage.document.write('</body></html>'); 
    testPage.document.close(); 
    testPage.focus(); 
    testPage.print(); 
    testPage.close(); 
    return ; 
} 
+0

Я разрабатываю на Java, и я должен напечатать некоторый отчет @Anand Singh – Landre

+0

- это ваш отчет в каком-нибудь элементе html? –

+0

Я компилирую и заполняю отчеты яшмы, и я должен печатать! Извините, мой английский не очень хорош! @Anand Singh – Landre

Смежные вопросы