Java静默PDF(标签)打印机

标签 java pdf printing

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

我在 Google 上搜索并找到了一个无需对话框即可打印的代码。 但如果源是 .txt 文件,它就会正确打印。

如果我尝试使用此功能打印 PDF 文件,我会打印出非常奇怪的字符。

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

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.");
        }
    }
}

最佳答案

我之前的工作中已经做过类似的事情,我可以确保在不使用库的情况下这是一场小噩梦(并且我希望您的 PDF 在不知道密码的情况下不受密码保护)。

我使用了Apache PDFBox library .

网上有很多关于如何在静默模式下使用它的示例

关于Java静默PDF(标签)打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34744727/

相关文章:

java - 为什么非 volatile 方法有效?

c# - C#打印条码 Crystal 报表

macos - Mac OS X : Print directly from file/URL?

javascript - IE 6 & IE 7 打印单选按钮

java - 尝试使用 javac : package R does not exist 编译 java 源

java - 如果我创建一个签名的 Java 小程序,我可以将它托管在我想要的任何域上吗?

java - 域模型模式示例

ruby-on-rails - Ruby on Rails - 压缩和下载 pdf 文件

java - 使用 Itext 替换 PDF 文件中的字符串,但不替换字母 X

android - 是否可以在 mupdf 库中添加页面或替换页面?