Webでさらに調査することで、問題を解決しました。私はそれを必要とするかもしれない他の人々のためにここにそれを与えています。
このWebサイトからの解決策を結論付けました:
http://webmoli.com/2008/11/03/java-print-pdf/
注:ウェブサイトで指定されたコードを実行するには、PdfRenderer .jar ライブラリをプロジェクトにインストールする必要があります。実行時に印刷します。
メソッドは次のとおりです。
/**
* 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);
}
}
このメソッドにいくつかの変更を加える必要があります。printerJob はグローバル変数ではないため、印刷には影響しません。これを行うには、このメソッドの戻りパラメータを次のように PrintService に設定します。
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;
}
メインメソッドでは、次のようなメソッドを呼び出します:
PrintService ps = setPrintService("Printer Name Here");
ここで、このサービスを他のメソッドに送信する必要があります。
これを変える:
PrintPdf printPDFFile = new PrintPdf(fis, "Test Print PDF");
に
PrintPdf printPDFFile = new PrintPdf(fis, "Test Print PDF", ps);
これらは、次のように変更する必要がある他のメソッドです。
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);
}
pjob を割り当てた後に、次のコード行を追加します。pjob.setPrintService(ps);
private void initialize(byte[] pdfContent, String jobName, PrintService ps) throws
IOException, PrinterException
{
*
*
pjob = PrinterJob.getPrinterJob();
pjob.setPrintService(ps);
*
*
...
}
このコードは完全に機能し、さらに PDF を直接印刷できます。