Przez więcej badań w Internecie rozwiązałem mój problem. Daję to tutaj tym, którzy mogą tego potrzebować;
wywnioskowałem roztwór z tej strony internetowej:
http://webmoli.com/2008/11/03/java-print-pdf/
Uwaga: Musisz zainstalować PdfRenderer .jar biblioteki do projektu, aby uruchomić kod podany na stronie internetowej: Kod początkowo w PrintPdf .java tutaj nie daje mojego rozwiązania, ale autor dodał metodę w sekcji komentarzy, aby ustawić różne drukarki do drukowania w środowisku wykonawczym.
Metoda jest:
/**
* Sets the printer service to be used for printing
*
* @param argPrintServiceName
* @throws PrinterException
*/
public void setPrintService(String argPrintServiceName) throws PrinterException {
PrintService[] printServices = PrinterJob.lookupPrintServices();
int i;
for (i = 0; i < printServices.length; i++) {
if (printServices[i].getName().equalsIgnoreCase(argPrintServiceName)) {
printerJob.setPrintService(printServices[i]);
break;
}
}
if (i == printServices.length) {
throw new PrinterException(“Invalid print service name: ” + argPrintServiceName);
}
}
trzeba wprowadzić kilka zmian na tej metodzie. Ponieważ printerJob nie jest zmienną globalną, nie wpłynie to na drukowanie.Aby zrobić ten parametr zestaw powrotny tej metody do Printservice jak:
public static PrintService setPrintService(String argPrintServiceName) throws PrinterException {
PrintService psr = null;
PrintService[] printServices = PrinterJob.lookupPrintServices();
int i;
for (i = 0; i < printServices.length; i++) {
if (printServices[i].getName().equalsIgnoreCase(argPrintServiceName)) {
psr = printServices[i];
break;
}
}
if (i == printServices.length) {
throw new PrinterException("Invalid print service name: " + argPrintServiceName);
}
return psr;
}
W metodzie głównej wywołać metodę jak:
PrintService ps = setPrintService("Printer Name Here");
Teraz trzeba wysłać tę usługę do innych metod;
Zmień to:
PrintPdf printPDFFile = new PrintPdf(fis, "Test Print PDF");
do
PrintPdf printPDFFile = new PrintPdf(fis, "Test Print PDF", ps);
A to są inne metody, które trzeba zmienić jak:
public PrintPdf(byte[] content, String jobName, PrintService ps) throws
IOException, PrinterException
{
initialize(content, jobName, ps);
}
public PrintPdf(InputStream inputStream, String jobName, PrintService ps)
{
*
*
initialize(pdfContent, jobName, ps);
}
Dodaj ten wiersz kodu po przypisaniu pjob: pjob.setPrintService(ps);
private void initialize(byte[] pdfContent, String jobName, PrintService ps) throws
IOException, PrinterException
{
*
*
pjob = PrinterJob.getPrinterJob();
pjob.setPrintService(ps);
*
*
...
}
Ten kod działa idealnie i jest w stanie bezpośrednio drukować-pdf.
Tak, pobrałem bibliotekę i działa ona idealnie. Dzięki –