java 连接打印机实现打印PDF文件的功能

java 连接打印机打印PDF文件

需求背景是导出excel并且打印,excel导出设置和转PDF网上有很多资料,本文只记录连接打印机打印PDF的部分。

1: 需要引入maven配置

        <dependency>
            <groupId>org.apache.pdfbox</groupId>
            <artifactId>pdfbox</artifactId>
            <version>2.0.21</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>

2:java代码 连接打印机实现打印PDF文件功能

 public static void main(String[] args) {
        try {
            //打印的pdf文件
            File file = new File("D:/export/告警数据_1678774217351.pdf");
            String printerName = "HPAA80D5";//打印机名称
            PDDocument document = PDDocument.load(file);
            PrinterJob job = findPrintService(printerName);
            configPageStyle(document, job);
            // 开始打印
            job.print();
        }catch (Exception e){
            log.error("异常", e.getMessage());
        }
    }

    /**
     * 根据打印机名称匹配打印机
     * @param printerName
     * @return
     * @throws Exception
     */
    public static PrinterJob findPrintService(String printerName) throws Exception{
        //获取打印驱动
        PrinterJob job = PrinterJob.getPrinterJob();
        // 遍历查询本地打印机名称
        for (PrintService service : PrinterJob.lookupPrintServices()) {
            String psName = service.toString();
            // 匹配对应的打印机
            if (psName.contains(printerName)) {
                job.setPrintService(service);
                return job;
            }
        }
        throw new RuntimeException("打印失败,未找到名称为" + printerName + "的打印机。");
    }

    /**
     * 设备打印属性
     * @param document
     * @param job
     */
    public static void configPageStyle(PDDocument document, PrinterJob job) {
        //设置纸张的大小和打印区域
        Paper paper = new Paper();
        paper.setSize(590,840);
        paper.setImageableArea(10,10, 590,840);

        PageFormat pageFormat = new PageFormat();
        pageFormat.setPaper(paper);
        //设置页面打印方向
        pageFormat.setOrientation(PageFormat.PORTRAIT);

        Book book = new Book();
        book.append(new PDFPrintable(document, Scaling.ACTUAL_SIZE), pageFormat, 1);
        //设置打印类
        job.setPageable(book);
    }
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java连接打印机并启动打印txt文件,需要使用Java打印API。以下是一个简单的示例代码: ```java import java.io.FileInputStream; 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; public class PrintUtility { public void printTextFile(String filePath) { try { // 获取默认打印机服务 PrintService service = PrintServiceLookup.lookupDefaultPrintService(); // 创建打印任务 DocPrintJob printJob = service.createPrintJob(); // 设置打印内容 FileInputStream fis = new FileInputStream(filePath); DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; Doc doc = new SimpleDoc(fis, flavor, null); // 启动打印任务 printJob.print(doc, null); fis.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的示例代码中,我们首先获取了默认打印机的PrintService对象。然后,我们创建了一个打印任务,将打印内容设置为txt文件的内容,并启动打印任务。 需要注意的是,如果txt文件的编码格式不是默认编码格式(通常是UTF-8或GBK),则需要在创建SimpleDoc对象时指定正确的编码格式,例如: ```java DocFlavor flavor = DocFlavor.INPUT_STREAM.TEXT_PLAIN_UTF_8; // UTF-8编码 DocFlavor flavor = DocFlavor.INPUT_STREAM.TEXT_PLAIN_GBK; // GBK编码 ``` 另外,如果需要打印其他格式的文件,可以根据文件类型选择不同的DocFlavor,例如: ```java DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF; // PDF文件 DocFlavor flavor = DocFlavor.INPUT_STREAM.PNG; // PNG图片文件 ``` 需要注意的是,不同的打印机可能支持的打印格式不同,因此在选择打印机打印格式时需要进行测试和验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值