有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java在网络打印机中打印pdf

伙计们,我一直在用java打印pdf。 我写的代码如下:

`

public static void main(String[] args) throws PrinterException, PrintException, IOException{
        DocFlavor docflavor = new DocFlavor.INPUT_STREAM ("application/octet-stream");
    //  DocFlavor docflavor = DocFlavor.SERVICE_FORMATTED.PAGEABLE;
/*      DocFlavor flavor = DocFlavor.SERVICE_FORMATTED.;*/
        PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
        DocFlavor[] docF = printService.getSupportedDocFlavors();
        for(int i = 0; i<docF.length;i++){
            System.out.println(docF[i]);
        }
        FileInputStream fis = new FileInputStream("pathofpdffile");



        Doc pdfDoc = new SimpleDoc(fis, docflavor, null);


        DocPrintJob printJob = printService.createPrintJob();
        PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();

        aset.add(new Copies(1));
        aset.add(Sides.ONE_SIDED);
        printJob.print(pdfDoc,aset);

        fis.close();

}`

上面的代码初始化了打印活动,但问题是打印时我只得到编码字符。我无法得到确切的文件

第二,如果我将DocFlavor更改为SERVICE_格式。PAGEABLE,它会抛出一个错误

java.lang.IllegalArgumentException: data is not of declared type
at javax.print.SimpleDoc.<init>(Unknown Source)
at com.calculator.main.PrintingTest.main(PrintingTest.java:42)

第三,如果我将DocFlavor更改为INPUT_STREAM。PDF,它会作为错误抛出

`Exception in thread "main" sun.print.PrintJobFlavorException: invalid flavor
at sun.print.Win32PrintJob.print(Unknown Source)
at com.calculator.main.PrintingTest.main(PrintingTest.java:49)`

所有这些我都在网络打印机上尝试。 任何帮助都是徒劳的


共 (1) 个答案

  1. # 1 楼答案

    只需将代码更改为使用AUTO_SENSE,如下所示

    InputStream inputStream = new FileInputStream("C://test.pdf");
    Doc doc = new SimpleDoc(inputStream, DocFlavor.INPUT_STREAM.AUTOSENSE,null);