JAVA实现连接本地打印机并打印文件的实现代码

实现代码一

import javax.print.*;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import java.io.File;
import java.io.FileInputStream;

public class PrintDemo1 {
  public void printPdf(String fileName) {
    //构造一个文件选择器,默认为当前目录
    File file = new File(fileName);//获取选择的文件
    //构建打印请求属性集
    PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
    //设置打印格式,因为未确定文件类型,这里选择AUTOSENSE
    DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
    //查找所有的可用打印服务
    PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
    //定位默认的打印服务
    //PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
    // 显示打印对话框
    PrintService service = ServiceUI.printDialog(null, 200, 200, printService, defaultService, flavor, pras);
    if (service != null) {

      try {
        DocPrintJob job = service.createPrintJob(); // 创建打印作业
        FileInputStream fis; // 构造待打印的文件流
        fis = new FileInputStream(file);
        DocAttributeSet das = new HashDocAttributeSet();
        Doc doc = new SimpleDoc(fis, flavor, das);
        job.print(doc, pras);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }

  public static void main(String args[]) {
    PrintDemo1 pic = new PrintDemo1();
    pic.printPdf("F:\\java资源2\\Docker视频教程\\赠送3-从Docker到Kubernetes之技术实战\\01.为什么你需要学习Docker\\01.pdf");
  }

}

代码二

package com.iba.cxx.adm.controller;

import javax.print.*;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.swing.*;
import java.io.File;
import java.io.FileInputStream;

/**
 * Created by Administrator on 2017/9/8 0008.
 */
public class TestController {

  public static void main(String[] args) {
    JFileChooser fileChooser = new JFileChooser(); //创建打印作业
    int state = fileChooser.showOpenDialog(null);
    if(state == fileChooser.APPROVE_OPTION){
      // File file = new File("D:/haha.txt"); //获取选择的文件
      File file = fileChooser.getSelectedFile();//获取选择的文件
      //构建打印请求属性集
      HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
      //设置打印格式,因为未确定类型,所以选择autosense
      DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
      //查找所有的可用的打印服务
      PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
      //定位默认的打印服务
      PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
      //显示打印对话框
      PrintService service = ServiceUI.printDialog(null, 200, 200, printService,
          defaultService, flavor, pras);
      if(service != null){
        try {
          DocPrintJob job = service.createPrintJob(); //创建打印作业
          FileInputStream fis = new FileInputStream(file); //构造待打印的文件流
          DocAttributeSet das = new HashDocAttributeSet();
          Doc doc = new SimpleDoc(fis, flavor, das);
          job.print(doc, pras);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
  }
}

好了这篇文章就介绍这么多,需要的朋友可以参考一下。

(0)

相关推荐

  • JAVA实现连接本地打印机并打印文件的实现代码

    实现代码一 import javax.print.*; import javax.print.attribute.DocAttributeSet; import javax.print.attribute.HashDocAttributeSet; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.PrintRequestAttributeSet; import java.

  • java实现连接mysql数据库单元测试查询数据的实例代码

    1.按照javaweb项目的要求逐步建立搭建起机构,具体的类包有:model .db.dao.test; 具体的架构详见下图: 2.根据搭建的项目架构新建数据库test和数据库表t_userinfo并且添加对应的测试数据; (这里我使用的是绿色版的数据库,具体的下载地址:http://pan.baidu.com/s/1mg88YAc) 具体的建立数据库操作详见下图: 3.编写包中的各种类代码,具体参考代码如下: UserInfo.java /** * FileName: UserInfo.jav

  • Java如何调用TSC打印机进行打印详解

    前言 最近项目中用到了打印机,最开始的完全不懂,现在弄好了,所以做了总结,该篇包括后台的调用打印(两种方式)跟前端的js的打印,但是只有IE现在支持打印,而且如果想远程连接打印机,二维码的生成和直接由打印机的命令进行操作,就要把修改浏览器的安全配置,下面再做详细的介绍 第一种后台打印:     使用javax中的PrintServiceLookup类进行打印,可以直接调用默认的打印机,也可以使用下列的方法进行筛选打印: PrintServiceLookup.lookupMultiDocPrint

  • Python调用Windows命令打印文件

    1.Python调用Windows命令打印文件 Windows命令行打印文件使用print 命令,具体用法可使用help print查看.下面是使用Python调用print指令执行打印文件功能的代码: import os def printer(filename): printername = r"/D:\\A340\hpLaser" cmd = "print " + printername + " " + filename print &qu

  • Java多线程实现FTP批量上传文件

    本文实例为大家分享了Java多线程实现FTP批量上传文件的具体代码,供大家参考,具体内容如下 1.构建FTP客户端 package cn.com.pingtech.common.ftp; import lombok.extern.slf4j.Slf4j; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; import java.io.*; import java.net

  • java删除指定目录下指定格式文件的方法

    本文实例为大家分享了java删除指定目录下指定格式文件的具体代码,供大家参考,具体内容如下 正在看疯狂java讲义这本书,发现源码中有我不需要的class文件,想批量把它删除 代码如下: import java.io.File; public class Main { static int count = 0; public static void main(String[] args) { //路径 String path="/media/lcy/Data/Workspaces/java/cr

  • java两个线程同时写一个文件

    本文实例为大家分享了java两个线程同时写一个文件的具体代码,供大家参考,具体内容如下 1.多线程    线程是程序执行流的最小单元.是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源.一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行.由于线程之间的相互制约,致使线程在运行中呈现出间断性.线程也有就绪.阻塞和运行三种基本状态.就绪状态是指线程具备运行的所有条

  • python连接打印机实现打印文档、图片、pdf文件等功能

    引言 python连接打印机进行打印,可能根据需求的不同,使用不同的函数模块. 如果你只是简单的想打印文档,比如office文档,你可以使用ShellExecute方法,对于微软office的文档.pdf.txt等有用,你可以尝试下: 如果你输入某些数据,文字信息,就想直接把它发送给打印机打印,那么可以尝试使用win32print: 如果你有一张图片,那么你可以结合python的Python Imaging Library(PIL)和win32ui模块进行打印: 普通打印 ShellExecut

  • Java远程连接Linux服务器并执行命令及上传文件功能

    最近再开发中遇到需要将文件上传到Linux服务器上,至此整理代码笔记. 此种连接方法中有考虑到并发问题,在进行创建FTP连接的时候将每一个连接对象存放至 ThreadLocal<Ftp> 中以确保每个线程之间对FTP的打开与关闭互不影响. package com.test.utils; import java.io.BufferedInputStream; import java.io.File; import java.io.FileFilter; import java.io.FileIn

  • Java 解决读写本地文件中文乱码的问题

    Java 解决读写本地文件中文乱码的问题 前言: 在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码.原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式.通常,假如自己不修改的话,windows自身采用的编码格式是gbk(而gbk和gb2312基本上是一样的编码方式),而IDE中Encode不修改的话,默认是utf-8的编码,这就是为什么会出现乱码的原因.当在OS下手工创建并写入的txt文件(gbk),用程序直接去读(utf-8),就会乱码.为了避免可

随机推荐