首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Applet PDF打印

Java Applet PDF打印
EN

Stack Overflow用户
提问于 2011-11-25 00:37:50
回答 2查看 6.5K关注 0票数 1

我正在尝试构建一个java applet,它打印PDF文件并将其发送到标签打印机,而不是默认的打印机。我研究了desktop.print,但无法解决如何指定打印机的问题。

这是我拥有的代码,我试图寻找解决方案,但最终被卡住了。我已经对applet进行了签名,它给我的错误只是说明应用程序错误0

代码语言:javascript
复制
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");
            }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2011-11-25 01:01:57

除非您知道打印机能够理解PDF,否则您无法将其发送到打印机。大多数情况下,您需要在客户端对其进行光栅化。我在http://www.jpedal.org/PDFblog/2010/01/printing-pdf-files-from-java/上写了一篇博客文章来解释这些选项

票数 0
EN

Stack Overflow用户

发布于 2014-04-15 05:11:54

如果您知道打印机的名称,就可以做到这一点。在一个客户机中,我需要静默打印:如果存在名为appprinter的打印机,我会使用它,如果没有,我会尝试使用默认打印机。这一切都很好。

对于打印,我使用ICEPDF

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

因此,在版本5.0.5中: install-folder/examples/printservices/PrintService.java

  1. delete user selection printservice:第106到155行
  2. 改为添加:

用于(int j=0;j的PrintService selectedService=null;

希望现在它更有用。

诚挚的问候。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8260175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档