Java Print 打印

Java 原生的API中有Print,使用Print可以操作打印机进行打印操作,获取打印机属性,下面是代码

打印程序(静默打印)

package com.boci.PrintPDF; 

import java.io.File;

import java.io.FileInputStream;

import javax.print.Doc;

import javax.print.DocFlavor;

import javax.print.DocPrintJob;

import javax.print.PrintService;

import javax.print.PrintServiceLookup;

import javax.print.ServiceUI;

import javax.print.SimpleDoc;
import javax.print.attribute.Attribute;
import javax.print.attribute.AttributeSet;
import javax.print.attribute.DocAttributeSet;

import javax.print.attribute.HashDocAttributeSet;

import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.standard.Chromaticity;
import javax.print.attribute.standard.Copies;
import javax.print.attribute.standard.Finishings;
import javax.print.attribute.standard.MediaSizeName;
import javax.print.attribute.standard.NumberUp;
import javax.print.attribute.standard.OrientationRequested;
import javax.print.attribute.standard.SheetCollate;
import javax.print.attribute.standard.Sides;

/**
 *
 *@author Clare
 *@Company
 *
 *Print file by javax
 *
 */

public class PrintPdfJavax {

    public static void main(String[] args) {

            File file = new File("D:/Archive/A2.pdf"); // 获取选择的文件

            // 构建打印请求属性集

            HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();

            // 设置打印格式,因为未确定类型,所以选择autosense

            DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;

            // 查找所有的可用的打印服务

            PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
            System.out.println("-------------------All services-------------------");
            for(int i=0;i<printService.length;i++){
                System.out.println(printService[i]);
            }

            // 定位默认的打印服务

            //PrintService service1 = PrintServiceLookup.lookupDefaultPrintService();
            if(printService.length>0){

                System.out.println("-------------------Choose Printer-------------------");
                System.out.println(printService[0]);
                //指定使用 Microsoft XPS Document Writer
                PrintService service = printService[0];

                //获取打印机属性
                 AttributeSet attributes = service.getAttributes();
                 for (Attribute a : attributes.toArray()) {
                        String name = a.getName();
                        String value = attributes.get(a.getClass()).toString();
                        System.out.println(name + " : " + value);
                    }
            // 显示打印对话框

            //PrintService service = ServiceUI.printDialog(null, 200, 200, printService,

            //    service1, flavor, pras);

            if (service != null) {

                try {
                    System.out.println("Begin Print PDF: "+file.getName());
                    DocPrintJob job = service.createPrintJob(); // 创建打印作业

                    FileInputStream fis = new FileInputStream(file); // 构造待打印的文件流

                    DocAttributeSet das = new HashDocAttributeSet();
                    //请求一个彩色打印机
                    pras.add(Chromaticity.COLOR);

                    //请求横向模式
                    pras.add(OrientationRequested.LANDSCAPE);

                    //美国Letter大小的纸质属性
                    pras.add(MediaSizeName.NA_LETTER);

                    // European A4 paper
                    pras.add(MediaSizeName.ISO_A4);

                    //请求装订
                    pras.add(Finishings.STAPLE);

                    //整理多个副本
                    pras.add(SheetCollate.COLLATED);

                    //请求双面
                    pras.add(Sides.DUPLEX);

                    // 2页到一个工作表
                    pras.add(new NumberUp(2));

                    //多少个副本
                    pras.add(new Copies(2));

                    Doc doc = new SimpleDoc(fis, flavor, das);

                    job.print(doc, pras);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
时间: 2024-10-17 12:51:31

Java Print 打印的相关文章

java初学打印星星以及九九乘法表

Java中打印星星,就是为了让初学者熟悉和掌握循环的使用方法: 给定一个图形如: * *** ***** ******* 第一种方式:由循环输出各个部分,再结合起来 for(int i=1;i<=4;i++){< p=""> for(int j=1;j<=7-i;j++){< p=""> system.out.print(" "); } for(int j=1;j<=2*i-1;j++){< p=&

java 实现打印当前月份的日历

实现当前日历的打印,当前日期用*来表示. 关键得出这个月的第一天是星期几. 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日数+1,m表示月份数,y表示年数. 注意1:在公式中有个与其他公式不同的地方: 把一月和二月看成是上一年的十三月和十四月, 例:如果是2004-1-10则换算成:2003-13-10来代入公式计算. 注意2:在大多数天主教国家的日历中,在1752年没有9.3-9.13,在这一年的日历中9月

20140314 java练习题-打印各种图形

1.打印直角三角形 import java.util.Scanner; public class AgeDemo { public static void main(String[] args){ //打印一个倒立的直角三角形如下: //**** //*** //** //* Scanner sc = new Scanner(System.in); System.out.println("请输入边长:"); int a = sc.nextInt(); for(int j=a;j>

Java实现打印功能-AWT Graphics2D

Java实现打印功能 用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出直接输出.下面代码实现了简单的打印功能: import java.awt.BasicStroke; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.G

C# 使用printDocument1.Print打印时不显示 正在打印对话框

C#使用printDocument1.Print打印时不显示正在打印对话框有两种方法 第一种,使用PrintController PrintController printController = new StandardPrintController(); printDocument1.PrintController = printController; printDocument1.Print(); 第二种,把窗体的TopMost设为True

window.print()打印页面指定内容(使用iframe保证原页面不失效)

使用window.print()时会出现两个问题: (1)直接使用window.print() 打印的是整页内容-->无法实现打印指定区域 (2)打印时替换body中的内容,打印完成后再替换回来-->这样会导致原来页面事件失效 使用iframe即可打印指定内容,也可保证页面不失效,具体方法如下: 1.将打印的内容独立出来为一个print.html文件,并为页面添加打印事件 <!DOCTYPE html> <html> <head> ... </head

java实现打印前台页面

核心:用window自带方法 window.print(); 打印的范围:body里内容,只要在页面能显示出来,都打印 遇到的问题:打印按钮被一起打印出来了,url也别打印出来了 解决办法:在触发打印按钮绑定的事件后,执行window.print()前将打印按钮隐藏,执行后再显示; url这个问题是浏览器设置问题,可以在浏览器打印里设置一下(百度吧): go........... 页面内容,打印按钮:绑定点击事件,点击打印调用printit(); <div id="toolbar"

Web window.print() 打印

web打印 window.print() 我只给出比较有效的,方便的打印方法,有些WEB打印是调用ActiveX控件的,这样就需要用户去修改自己IE浏览器的Internet选项里的安全里的ActiveX,将它们全部启用,有些麻烦,翻了下网络, 下面的方法是可以直接打印,而不会去修改IE的Internet选项. window.print来打印页面,页面上别的元素也会被打印处理,页头页尾的格式也不好控制.• 常用方法:大部分情况会把查询的结果绑定到DataGrid上来,然后打印DataGrid.这种

java控制台打印三角形区域

public class Triangle { public static void main(String[] args) { a(); //打印正等腰三角 b(); //打印倒等腰三角 c(); //打印直边靠左正直角三角 d(); //打印直边靠右正直角三角 e(); //打印直边靠左倒直角三角 f(); //打印直边靠右倒直角三角 g(); //打印底边靠左钝角角三角 h(); //打印底边靠右钝角角三角 } /** * 作用:打印正等腰三角 */ public static void