Java调用打印机打印指定路径图片

依赖 javax.print

package com.xgt.util;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.FileInputStream;
import java.io.IOException;

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.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.MediaPrintableArea;
import javax.print.attribute.standard.OrientationRequested;
import javax.print.attribute.standard.PrintQuality;

public class PrintUtil {
    private static final Logger logger = LoggerFactory.getLogger(PrintUtil.class);
    public static void drawImage(String fileName, int count) {
        FileInputStream fin = null;
        try {
            DocFlavor dof = null;
            if (fileName.endsWith(".gif")) {
                dof = DocFlavor.INPUT_STREAM.GIF;
            } else if (fileName.endsWith(".jpg")) {
                dof = DocFlavor.INPUT_STREAM.JPEG;
            } else if (fileName.endsWith(".png")) {
                dof = DocFlavor.INPUT_STREAM.PNG;
            }

            PrintService ps = PrintServiceLookup.lookupDefaultPrintService();

            PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
            pras.add(OrientationRequested.PORTRAIT);

            pras.add(new Copies(count));
            pras.add(PrintQuality.HIGH);
            DocAttributeSet das = new HashDocAttributeSet();

            // 设置打印纸张的大小(以毫米为单位)
            das.add(new MediaPrintableArea(0, 0, 210, 296, MediaPrintableArea.MM));
            fin = new FileInputStream(fileName);

            Doc doc = new SimpleDoc(fin, dof, das);

            DocPrintJob job = ps.createPrintJob();

            job.print(doc, pras);
            fin.close();
            logger.info("打印成功!文件:"+fileName+"数量为:"+count);
        } catch (IOException ie) {
            ie.printStackTrace();
        } catch (PrintException pe) {
            pe.printStackTrace();
        }finally {
            IOUtils.closeQuietly(fin);
        }
    }

    public static void main(String[] args) {
        new PrintUtil().drawImage("D:\\QRCodePng\\合成图.png", 1);
    }

}

原文地址:https://www.cnblogs.com/Java-Starter/p/9283575.html

时间: 2024-10-09 01:18:29

Java调用打印机打印指定路径图片的相关文章

Java 调用打印机打印图片

import java.io.FileInputStream; import java.io.IOException; import javax.print.Doc; import javax.print.DocFlavor; import javax.print.DocPrintJob; import javax.print.PrintException; import javax.print.PrintService; import javax.print.PrintServiceLooku

java 调用打印机打印文件

/** * 进行打印 * * @param file * @param saveFile * @param preFix * @param formatFile * @return * @throws NoOfficeException */ public static void doPrintDoc(File file) { if (file == null || !file.exists()) { return; } // 获取文件后缀名 int index = file.getName()

Java jacob调用打印机打印word文档

前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档. 起初用的是自带的PrintJob,但是系统提供的打印机制比不成熟完整.网上的代码也是千篇一律,在我的打印设备Canon iR2525/2530 UFRII LT上,我能获取到打印机的各属性,当前任务数.但是打印机没反应. 可参考这两篇文章: http://www.360doc.com/content/05/0916/11/332_12789.shtml http://www.ibm.com/devel

C# 调用打印机打印文件

C# 调用打印机打印文件,通常情况下,例如Word.Excel.PDF等可以使用一些对应的组件进行打印,另一个通用的方式是直接启用一个打印的进程进行打印.示例代码如下: using System.Diagnostics; string filePath = "文件路径"; string printer = "打印机"; ProcessStartInfo info = new ProcessStartInfo(); info.Arguments = "\&q

Winform将DataGridView导出Excel,调用打印机打印DataGridView

DataGridView导出Excel (这个需要 Microsoft.Office.Interop.Excel.dll  在网上下载就可以) public static void ExportExcel(string fileName, DataGridView myDGV) { string saveFileName = ""; SaveFileDialog saveDialog = new SaveFileDialog(); saveDialog.DefaultExt = &qu

JAVA调用R脚本 windwos路径下

RConnection c = new RConnection();// REXP x = c.eval("source('D:\\\\jiaoben\\\\RJava_test.R',encoding = \"UTF-8\")"); REXP x = c.eval("source('D:\\\\jiaoben\\\\Rjava_testx6.R',encoding = \"UTF-8\")");// REXP eval =

java实现二维码生成及调用打印机打印

在开发二维码打印的过程中走过几次弯路,所以在这里特意将其记录下来留作备忘.一开始参考其他博主写的文章,有介绍通过编写JAVA后台代码来获取本地默认打印机的驱动实现打印.BUT!这样就导致在本地开发测试时看似一切正常,一旦项目部署到linux环境下,就会完全失效了(JAVA后台代码去获取linux本地的打印机驱动).还有介绍并提供编写的插件的(不甚了解这块),鉴于时间要求比较苛刻,那就简单的来吧. 需求:生成带水印效果的二维码图片,可以批量预览,并连接打印机批量打印. 开发思路:1.编写二维码生成

JAVA用流在指定路径下生成文件

// 待处理的流 ByteArrayOutputStream bao = new ByteArrayOutputStream(); // 定义文件根路径:TOMCAT的temp路径 + 时间戳 String baseDir = System.getProperty("java.io.tmpdir")  + System.currentTimeMillis(); //待输出文件流对象 FileOutputStream fos = null; try { // 自定义文件路径 String

关于图片的一些说法 批量打印 批量制造图片

-------批量打印 1.如何批量处理打印图片及相片等  要求安装“ACDsee”看图软件 2.全能美图看看!看照片还能批量打印照片    要求安装”美图看看“软件 ------批量制造图片 1.以excel2003的文件为数据库   (后缀一定是.xls)    要求安装”office 或者wps“软件并且是xls文件 BarTender 9.4 创建图片控件-设置他的属性----     要求安装”BarTender 9.4“软件 2.创建图片控件 3.-设置他的属性 图片 图片处理 数据