ローカル プリンターで PDF ファイルを印刷しようとしています。問題は、プリンター ダイアログでプリンターを選択し、印刷ボタンを押しても何も起こらず、ダイアログが閉じてしまうことです。例外や警告は表示されません。プリンターが PDF ファイルを印刷していないだけです。なぜこれが起こるのかわかりません。3 台の異なるコンピューター (Windows 7 & 10) と 3 台の異なるプリンターで既にテストしましたが、常に同じ問題が発生します。
私はまた、このようなPDFBoxライブラリでそれを試しました:
try{
FileInputStream fis = new FileInputStream("C:/Users/Self/Desktop/test.pdf");
PDDocument doc = new PDDocument();
doc.load(fis);
doc.print();
}catch(FileNotFoundException ex1){
ex1.printStackTrace();
}catch(IOException ex2){
ex2.printStackTrace();
}catch(PrinterException ex3){
ex3.printStackTrace();
}
そして、次のような標準のJavaの方法で:
DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(1));
PrintService[] ps = PrintServiceLookup.lookupPrintServices(flavor, aset);
if(ps.length == 0){
throw new IllegalStateException("No Printer found");
}
PrintService myService = null;
for (PrintService printService : ps) {
if (printService.getName().equals("HP17DC1C (HP Officejet Pro 8610)")) {
myService = printService;
break;
}
}
if (myService == null) {
throw new IllegalStateException("Printer not found");
}
try{
FileInputStream fis = new FileInputStream("C:/Users/Slef/Desktop/test.pdf");
Doc pdfDoc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.AUTOSENSE, null);
DocPrintJob printJob = myService.createPrintJob();
printJob.print(pdfDoc, aset);
fis.close();
}catch(FileNotFoundException ex1){
ex1.printStackTrace();
}catch(PrintException ex2){
ex2.printStackTrace();
}catch(IOException ex3){
ex3.printStackTrace();
}
しかし、どちらの方法でも同じ問題が発生します。印刷ダイアログの後、何も起こりません。私はJavaバージョン8.66を使用しています。PDFファイルを本当に印刷する必要がありますか?