Java-апплет PDF-печать - PullRequest
       1

Java-апплет PDF-печать

1 голос
/ 24 ноября 2011

Я пытаюсь создать Java-апплет, который печатает файл PDF и отправляет его на принтер этикеток, а не по умолчанию.Я исследовал desktop.print, но не смог понять, как указать принтер.

Это код, который у меня есть, я пытался искать решения, но остановился.Я подписал апплет и выдает ошибку, в которой говорится, что ошибка приложения 0

import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.print.*;
import javax.print.*;  
import javax.print.attribute.*;   
import javax.print.attribute.standard.*; 


public class printPDF extends JApplet {

    public void init(){ 
            String uri = System.getProperty("user.home") + "\\jobbase\\print.pdf"; 

            DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;


            PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
            aset.add(new PrinterName("label", null));
            aset.add(new Copies(1));


            PrintService[] pservices =
                    PrintServiceLookup.lookupPrintServices(flavor, aset);

            if (pservices.length > 0) {

                    DocPrintJob printJob = pservices[0].createPrintJob();

                    try{
                        FileInputStream fis = new FileInputStream(uri);
                        Doc doc = new SimpleDoc(fis, flavor, null);


                        try {
                            printJob.print(doc, aset);
                        } catch (PrintException e) { 
                            System.err.println(e);
                        }

                        } catch(IOException ioe){
                            ioe.printStackTrace(System.out);
                    }
            } else {
                    System.err.println("No suitable printers");
            }
    }
}

Ответы [ 3 ]

0 голосов
/ 02 декабря 2011

Привет, вы можете проверить это сообщение в блоге http://bfo.com/blog/2009/09/28/silently_print_a_pdf_from_a_web_browser.html

0 голосов
/ 15 апреля 2014

Если вы знаете название принтера, вы можете добиться этого.В одном клиенте мне требовалась тихая печать: если присутствовал принтер с именем appprinter, я использовал его, если нет, то пробовал по умолчанию.Это отлично сработало.

Для печати я использую ICEPDF .

Кейт: спасибо за предложение, честно говоря, IcePDF довольно прост, этот пример включен в исходный кодкод, который вы можете скачать по ссылке выше.Чтобы получить необходимый PrinterService (он же принтер), вы можете удалить весь пользовательский ввод, запрашиваемый с клавиатуры, и просто использовать тот, который вам нужен.

Итак, в версии 5.0.5: [install-folder] /examples/printservices/PrintService.java

  1. удалить пользовательский выбор printservice: строки от 106 до 155
  2. добавить вместо:

    PrintService selectedService=null;
    for (int j=0;j<services.length;j++) {
        if ("myprintername".equalsIgnoreCase(services[j].getName())) {
            selectedService=aux[j];
        }
    }
    

Надеюсь, теперь это более полезно.

С уважением.

0 голосов
/ 24 ноября 2011

Вы не можете просто отправить PDF на принтер, если не знаете, что он может это понять. Большую часть времени вам нужно растеризовать его на клиенте. Я пишу статью в блоге, объясняющую варианты на http://www.jpedal.org/PDFblog/2010/01/printing-pdf-files-from-java/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...