Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java小程序PDF打印_Java_Pdf_Applet - Fatal编程技术网

Java小程序PDF打印

Java小程序PDF打印,java,pdf,applet,Java,Pdf,Applet,我正在尝试构建一个java小程序,它可以打印PDF文件并将其发送到标签打印机,而不是默认的打印机。我浏览了desktop.print,但无法确定如何指定打印机 这就是我所拥有的代码,我曾试图寻找解决方案,但最终被卡住了。我已经签署了小程序,它给我的错误只是说应用程序错误0 import java.io.*; import java.net.*; import javax.swing.*; import java.awt.print.*; import javax.print.*; impor

我正在尝试构建一个java小程序,它可以打印PDF文件并将其发送到标签打印机,而不是默认的打印机。我浏览了desktop.print,但无法确定如何指定打印机

这就是我所拥有的代码,我曾试图寻找解决方案,但最终被卡住了。我已经签署了小程序,它给我的错误只是说应用程序错误0

import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.print.*;
import javax.print.*;  
import javax.print.attribute.*;   
import javax.print.attribute.standard.*; 


public class printPDF extends JApplet {

    public void init(){ 
            String uri = System.getProperty("user.home") + "\\jobbase\\print.pdf"; 

            DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;


            PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
            aset.add(new PrinterName("label", null));
            aset.add(new Copies(1));


            PrintService[] pservices =
                    PrintServiceLookup.lookupPrintServices(flavor, aset);

            if (pservices.length > 0) {

                    DocPrintJob printJob = pservices[0].createPrintJob();

                    try{
                        FileInputStream fis = new FileInputStream(uri);
                        Doc doc = new SimpleDoc(fis, flavor, null);


                        try {
                            printJob.print(doc, aset);
                        } catch (PrintException e) { 
                            System.err.println(e);
                        }

                        } catch(IOException ioe){
                            ioe.printStackTrace(System.out);
                    }
            } else {
                    System.err.println("No suitable printers");
            }
    }
}

除非您知道打印机可以理解,否则不能将PDF发送到打印机。大多数情况下,您需要在客户机上对其进行光栅化。我写了一篇博客文章,解释了

上的选项,如果您知道打印机的名称,就可以实现这一点。在一个客户端中,我需要静默打印:如果有一台名为
appprinter
的打印机,我就使用它,如果没有,我就使用默认打印机。结果很好

我用它来印刷

凯特:谢谢你的建议,老实说,IcePDF非常简单,这个例子包含在源代码中,你可以从上面的链接下载。为了获得所需的PrinterService(又名printer),您可以删除键盘请求的所有用户输入,只使用您想要的名称

因此,在5.0.5版中:[安装文件夹]/examples/printservices/PrintService.java

  • 删除printservice的用户选择:第106至155行
  • 改为添加:

    PrintService selectedService=null;
    for (int j=0;j<services.length;j++) {
        if ("myprintername".equalsIgnoreCase(services[j].getName())) {
            selectedService=aux[j];
        }
    }
    
    PrintService selectedService=null;
    
    for(int j=0;jsp)是如何让代码使这成为一个有用的答案的。就目前的情况而言,您是说这是可以做到的,但没有说明如何做到。