2

window.print()Java バッキング Bean プロセスでJavaScript コマンドを変更する必要があります。

ここでは、Jsf1.2 を使用しています

プログラマティックとして、ウェブページを印刷し、

window.print() を使用します。これにより、ページを印刷するプリンターを選択するための1つのメニューが開きます。

今、私はこのプロセスを Java Bean メソッド呼び出しで圧縮する必要がありますが、とにかくうまくいきません。

私が実際に必要としているのは、ウェブページの印刷ボタンをクリックしたときです。選択したプリンターで直接印刷します(このプリンターの選択は、PrintServiceLookup.lookupPrintServicesメソッドを使用してバッキングBeanで行われます。この選択は私にとって適切に機能します。)

これは、question印刷用にボタンをクリックしてJava Beanでページ全体のコンテンツを取得する方法です。

ここでもう1つ問題があります

以下のコードで単純な文字列印刷を行うと、コンパイル時と実行時にコードにエラーは表示されませんが、プリンターでの印刷中にエラーが表示されます(画像の下)。私はネットワーク プリンターを使用しているオンライン調査からこのコードを取得します。

ここに画像の説明を入力

印刷コード::

try{
            System.out.println("getHtmlData = "+getHtmlData());
            PrintService[] printServices;
            String testData = "Hello World my first java print";
            InputStream is = new ByteArrayInputStream(testData.getBytes());
            DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
            PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
            System.out.println("getPrinter() = "+getPrinter()); // here i give my printer name
            printServiceAttributeSet.add(new PrinterName(getPrinter(), null));       
            printServices = PrintServiceLookup.lookupPrintServices(null, printServiceAttributeSet); 
            System.out.println("printServices len = "+printServices.length+" ::: name = "+printServices[0].getName()); ///to verify its my selected printer or not
            PrintService service = printServices[0];
            DocFlavor[] flavors = service.getSupportedDocFlavors() ;
            //display : selected printers flavors
            for (int i = 0; i < flavors.length; i++) {
                 System.out.println("\t" +flavors[i]);
            }
            Doc doc= new SimpleDoc(is, flavor, null);
            DocPrintJob job = service.createPrintJob();
            //PrintJobWatcher pjDone = new PrintJobWatcher(job);

            // Print it
            job.print(doc, null);
            is.close();
            System.out.println("print Done");  
        }catch (Exception e) {
            System.out.println("error 1 "+e.toString());
           e.printStackTrace();
        }

これはスパイ プロセスのように聞こえますが、Java Bean からページを印刷する必要があります。

更新 1:

  • 私はjsでページコンテンツを取得できますdocument.documentElement.outerHTML(実際には、htmlコンテンツを渡すためにjsを使用したくありません。これは、何も見つからない場合の最後のオプションです)。次に、inputhiddenからBeanに渡します。しかし今、このString コンテンツを印刷に使用する方法。
4

0 に答える 0