0

ローカル プリンターで 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ファイルを本当に印刷する必要がありますか?

4

0 に答える 0