首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Silent PDF(标签)打印机

Java Silent PDF(标签)打印机
EN

Stack Overflow用户
提问于 2016-01-12 13:15:52
回答 1查看 479关注 0票数 0

我是一个学生,需要创建一个粉红打印功能,希望能够打印PDF。这需要基于Java。

我在谷歌上搜索,发现了一个没有对话框打印的代码。但是,如果源是.txt文件,它就会直接打印出来。

如果我尝试用这个函数打印一个PDF文件,我会得到非常奇怪的字符打印。

现在,我想问一下为什么会发生这种情况,是否有办法解决这个问题。

代码语言:javascript
复制
package org.pack.mypack.jsf;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.Size2DSyntax;
import javax.print.attribute.standard.MediaSize;

public class PrintJob {

    public static void main(String[] args) {
        PrintJob print = new PrintJob();


    }

    public PrintJob() {
        DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
        PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null);
        FileInputStream psStream = null;
        PrintRequestAttributeSet aset = null;
        aset =  new HashPrintRequestAttributeSet();

        aset.add(MediaSize.findMedia(2, 2, Size2DSyntax.INCH));

        try {
            psStream = new FileInputStream("C:\\Users\\myUser\\test\\test.pdf");
        } catch (FileNotFoundException ffne) {
            ffne.printStackTrace();
        }
        if (psStream == null) {
            return;
        }

        if (services.length > 0) {
            PrintService myService = null;
            for (PrintService service : services) {
                System.out.println(service.getName());
                if (service.getName().contains("PrinterName")) {
                    myService = service;
                    break;
                }
            }
            DocPrintJob printJob = myService.createPrintJob();
            Doc document = new SimpleDoc(psStream, flavor, null);
            try {

                printJob.print(document, aset);
            } catch (PrintException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else {
            System.out.println("No PDF printer available.");
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-12 13:38:19

我在以前的工作中做了类似的事情,我可以确保这是一个小噩梦,而不使用库(我希望您的PDF没有密码保护而不知道密码)。

我用了Apache PDFBox库

在web上有很多关于如何在静默模式下使用它的例子。

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

https://stackoverflow.com/questions/34744727

复制
相关文章

相似问题

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