Java实现打印功能教程文件
J a v a实现打印功能
Java实现打印功能
用java实现打印,java.awt中提供了一些打印的API,要实现打印,首先要获得打印对象,然后继承Printable实现接口方法print,以便打印机进行打印,最后用用Graphics2D直接输出直接输出。
下面代码实现了简单的打印功能:
import java.awt.BasicStroke;
import java.awt.Color;
import ponent;
import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D;
import java.awt.Image; import java.awt.Toolkit;
import java.awt.RenderingHin ts;
import java.awt.font.FontRen derContext;
import java.awt.font.LineBre akMeasurer;
import java.awt.font.TextAtt ribute;
import java.awt.font.TextLay out;
import java.awt.geom.Point2D;
import java.awt.image.Buffer edImage;
import java.awt.print.Book;
import java.awt.print.PageFo rmat;
import java.awt.print.Paper;
import java.awt.print.Printa ble;
import java.awt.print.Printe rException;
import java.awt.print.Printe rJob;
import java.text.AttributedS tring;
import javax.swing.JApplet;
public class PrintTest implements Printable{
/**
* @param Graphic指明打印的图形环境
* @param PageFormat
指明打印页格式(页面大小以点为计量单位,1点为1英才的1/72,1英寸为25.4毫米。
A4纸大致为595×842点)
* @param pageIndex指明页号
**/
public int print(Grap
hics gra, PageFormat pf, int pageIndex) throws PrinterExceptio n {
System.out.prin tln("pageIndex="+pageIndex);
Component c = null;
//print string
String str = "中华民族是勤劳、勇敢和富有智慧的伟大民族。
";
//转换成Graphics2D
Graphics2D g2 = (Graphics2D) gra;
//设置打印颜色为黑色
g2.setColor(Color .black);
//打印起点坐标
double x = pf. getImageableX();
double y = pf. getImageableY();
switch(pageIndex) {
case0:
//设置打印字体(字体名称、样式和点大小)(字体名称可以是物理或者逻辑名称)
//Java
平台所定义的五种字体系列:Serif、SansSerif、Monospaced、
Dialog 和DialogInput
Font f ont = new Font("新宋体", Font.PLAIN, 9);
g2.setF ont(font);//设置字体
//Basic Stroke bs_3=new BasicStroke(0.5f);
float[] dash1 = {2.0f};
//设置打印线的属性。
//1.线宽2、3、不知道,4、空白的宽度,5、虚线的宽度,6、偏移量
g2.setS
troke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT, Basi cStroke.JOIN_MITER, 2.0f, dash1, 0.0f));
//g2.se tStroke(bs_3);//设置线宽
float heigth = font.getSize2D();//字体高度
System. out.println("x="+x);
// -1-用Graphics2D直接输出
//首字符的基线(右下部)位于用户空间中的(x, y) 位置处
//g2.dr awLine(10,10,200,300);
Image
src = Toolkit.getDefaultToolkit().getImage("D:\\EclipseWorkSpace3.1 \\Kfc-wuxi\\WebRoot\\image\\KFC.jpg");
g2.draw Image(src,(int)x,(int)y,c);
int im g_Height=src.getHeight(c);
int im g_width=src.getWidth(c);
//Syste m.out.println("img_Height="+img_Height+"img_width="+img_width) ;
g2.draw String(str, (float)x, (float)y+1*heigth+img_Height);
g2.draw
Line((int)x,(int)(y+1*heigth+img_Height+10),(int)x+200,(int)(y+1*heig th+img_Height+10));
g2.draw Image(src,(int)x,(int)(y+1*heigth+img_Height+11),c);
return PAG E_EXISTS;
default:
return NO_ SUCH_PAGE;
}
}
public static void main(St ring[] args) {
// 通俗理解就是书、文档
Book book = new B ook();
// 设置成竖打
PageFormat pf = ne w PageFormat();
pf.setOrientation(Pag eFormat.PORTRAIT);
// 通过Paper 设置页面的空白边距和可打印区域。
必须与实际打印纸张大小相符。
Paper p = new Pap er();
p.setSize(590,840);//纸张大小
p.setImageableArea(10
,10, 590,840);//A4(595 X 842)设置打印区域,其实0,0应该是72,72,因为A4纸的默认X,Y边距是72
pf.setPaper(p);
// 把PageFor mat 和Printable 添加到书中,组成一个页面
book.append(new Prin tTest(), pf);
//获取打印服务对象
PrinterJob job = PrinterJob.getPrinterJob();
// 设置打印类
job.setPageable(boo k);。
svf for java print 用户使用手册
svf for java print 用户使用手册(最新版)目录1.SVF for Java Print 简介2.安装与配置3.使用方法4.常见问题与解决方法5.总结正文【SVF for Java Print 简介】SVF for Java Print 是一款面向 Java 开发者的打印工具,它可以帮助开发者轻松地在 Java 应用程序中实现各种打印功能。
该工具支持各种主流的打印机和纸张类型,能够满足不同开发者的需求。
【安装与配置】1.下载 SVF for Java Print 的最新版本,并将其解压缩到一个合适的目录中。
2.将解压缩后的目录中的 `svfprint.jar` 文件添加到 Java 项目的类路径中。
3.在 Java 代码中,使用 `svfprint.jar` 文件中提供的类和接口来实现打印功能。
【使用方法】1.导入 SVF for Java Print 所需的类。
```javaimport com.svf.print.SVFPrint;import com.svf.print.driver.Driver;import com.svf.print.driver.DriverException;import com.svf.print.PrintException;import com.svf.print.纸张。
纸张设置;```2.创建一个 `SVFPrint` 对象,并指定打印机驱动。
```javapublic class Main {public static void main(String[] args) {SVFPrint svfPrint = new SVFPrint();try {Driver driver = svfPrint.getDriver("HP LaserJet 1020");if (driver == null) {System.out.println("未找到指定驱动,请检查驱动是否正确安装。
利用iText包实现Java报表打印
利用iText包实现Java报表打印丁振凡;王小明;吴小元;邓建明;周斌【摘要】The use of iText was introduced combing two cases of report generation in the paper. One case is that the whole content of the report file is dynamically generated by program while the other case is that the data fields is just be filled in the existing PDF report documents. The control method of report print implemented by java was also given in the paper.%结合报表制作的两种情形介绍了iText的应用方法。
一种是由程序对象动态产生整个报表文件的内容,另一种是在已存在的PDF报表文档中填写数据域以完成报表。
给出了Java实现报表打印的控制方法。
【期刊名称】《微型机与应用》【年(卷),期】2012(031)018【总页数】3页(P84-86)【关键词】Java报表;iText包;动态报表;填充型报表;报表打印【作者】丁振凡;王小明;吴小元;邓建明;周斌【作者单位】南昌铁路局,江西南昌330001;华东交通大学,江西南昌330013;华东交通大学,江西南昌330013;南昌铁路局,江西南昌330001;南昌铁路局,江西南昌330001【正文语种】中文【中图分类】TP393在信息系统应用中,报表处理一直起着比较重要的作用。
Java报表制作中最常使用的是iText组件,它是一种生成PDF报表的Java组件。
本文讨论两种形式的PDF报表处理,一种是通过程序对象生成整个PDF报表文档,另一种是利用制作好的含报表的PDF文档模板,通过在模板填写数据实现数据报表。
java批量打印图片
J ava批量打印图片解决方案有两个解决方法:直接打印一个图片集合;将多个图片放到一个文件里,再打印这个文件。
一、直接打印图片集合首先实现单个图片的打印(用到javax下的print包)。
根据图片格式选择不同的打印方式(支持gif、jpg、png格式的图片)。
其次实现多个图片的打印。
用多次调用打印程序的方式实现图片的打印,但是会出现问题:每次打印都是重复调用打印机,不能实现调用一次打印机就批量完成打印,最多实现:一次批量打印,只取一次打印机,然后多次调用这个打印机打印单张图片。
考虑将几个图片在打印前合并成一个,然后打印出来。
这种方式打印图片是将图片转化成流的形式打印,有方法实现将几个图片流数据合并成一个流,然后将流数据打印出来。
问题又出现了:这种合并流的方式是将几个不同的图片合并到一个图片里,没有分页;同时没有考虑这种流的合成方式对图片本身内容的影像(未验证)。
二、将多个图片合一,然后打印从目标达成方面考虑,将图片合一有两种格式:word和pdf。
但是考虑到是图片信息在word中显的问题,特别是技术实现和效果方面考虑,最后选择将批量图片制作成pdf格式的文件,交付打印。
目前关于将图片转换成pdf文件应用最广泛的是itext,iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。
通过iText不仅可以生成PDF 或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
这里也可以用纯加java的方式将图片呢合并成pdf文件。
在长春人事档案目录里面,有实现图片转换为pdf的源代码,大家有用到的可以去这个目录(com.yinhai.file.ImageUtils.java)里面找,里面实现了两个静态方法:1)imageToPdf(String 需要转化为pdf的图片所在文件夹,String 新生成pdf文件的路径)要将图片文件转换为pdf文件要分三步走:首先,得到需要转化的图片。
java 打印请求头的参数
java 打印请求头的参数
要打印请求头的参数,您可以使用Java中的HttpServletRequest对象来获取请求头信息。
以下是一个简单的示例代码,可以打印请求头中的所有参数:
```java
import ;
import ;
public class PrintRequestHeaders {
public static void main(String[] args) {
HttpServletRequest request = null; // 假设您已经获取到了HttpServletRequest对象
Enumeration<String> headerNames = ();
while (()) {
String headerName = ();
(headerName + ": " + (headerName));
}
}
}
```
在上面的代码中,我们首先获取到了HttpServletRequest对象,然后使用getHeaderNames()方法获取请求头中的所有参数名称。
接下来,我们使用一个while循环遍历所有参数名称,并使用getHeader()方法获取每个参数的值。
最后,我们将参数名称和值打印到控制台上。
请注意,如果您使用的是Spring框架,则可以使用Spring提供的
`HttpServletRequestWrapper`类来更方便地获取请求头信息。
例如,您可以使用`("Content-Type")`方法来获取Content-Type请求头的值。
java实现自动静默打印功能
java实现⾃动静默打印功能最近接到⼀个需求,要求实现⾃动打印功能,⼀般⽹页打印pdf需要借助浏览器的pdf组件,⽽且还要弹出打印窗⼝,再点击打印才能实现。
那么如何实现⾃动打印了,从点击⾃⼰⽹页上3次缩减到点击⼀次了?⼀.实现思路:1.读取本地打印机服务2. 服务端打印肯定不⾏需要⼀个客户端3.应⽤程序需要和本地打印服务通信,发送不同的打印指令本想⾃⼰⽤Python写⼀个打印控件的,但是时间来不及啊。
⼆.采⽤技术知识(以⾃动打印pdf为例)1. java操作⽂件流2. javascripte3. pdfjs4. Lodop打印控件三.技术细节1. 关于lodop预览打印是开源免费,但是静默打印是需要收费的,直接使⽤静默打印会在打印纸张最下⾯出现⽔印,我们只需要将打印机纸张⼤⼩就可以将⽔印打印在⽆效位置,这样在打印的结果上就不会出现⽔印了2. pdfjs使⽤版本不能太⾼,我这⾥使⽤ 1.4.137。
ps:如果找不到对应版本请与评论与我联系,我分享给⼤家四.上代码⼀.后端核⼼⽅法主要是将pdf⽂件转成base64编码public static String encodeBase64File(File file) throws Exception {FileInputStream inputFile = new FileInputStream(file);byte[] buffer = new byte[(int)file.length()];inputFile.read(buffer);inputFile.close();return new BASE64Encoder().encode(buffer);}⼆.前端核⼼代码1.在html⽂件body需要插⼊<canvas id="thepdfcanvas2" style="display:none;"></canvas>2. 需要在html页⾯引⼊lodop打印js,pdfjs<script type="text/javascript" src="../static/js/print/LodopFuncs.js"></script><script type="text/javascript" src="../static/js/pdfjs-dist/build/pdf.js"></script><script type="text/javascript">var LODOP=getLodop(document.getElementById('LODOP_OB'),document.getElementById('LODOP_EM'));</script>3.发送ajax请求向后端返回pdf⽂件流,通过pdfjs绘制pdf成图⽚可以进⾏属性调节,进⽽调⽤print静默打印function printOneURL(pdfUrl,preview){var params = {"path": pdfUrl};$.sendDefaultAjax(jsPPath + "/printModel/print.do", params,function (data) {if (data.code === 0) {var pdfData = atob(data.msg);PDFJS.workerSrc ='../static/js/pdfjs-dist/build/pdf.worker.js';//从pdf⽂件对象逐页获取page,并调⽤toImageAndPrint函数打印内容PDFJS.getDocument({data: pdfData}).then(function getPdfHelloWorld(pdf) {//此适⽤pdf只有⼀个page情况pdf.getPage(1).then(function getPageHelloWorld(page) {//scale调节⽣成的画布图⽚⼤⼩,与清晰度有关,需要调整。
Java_实现iReport打印
iReport报表打印功能代码编写环境系统:windows xp开发工具:Myeclipes6.0JDK版本:Java6(jdk6.0,jre6.0)服务器:Tomcat5.5Ireport版本:iReport-2.0.5 windows 安装版(iReport-2.0.5-windows-installer.exe)实现步骤一、iReport-2.0.5安装。
选择安装路径默认安装(一直点击下一步)。
二、将iReprot的jasperreports-2.0.5.jar文件复制到Myeclipes中你工程的WEB-INF/lib目录下。
jasperreports-2.0.5.jar文件所在位置在你iReprot的安装路径下,我的是C:\Program Files\JasperSoft\iReport-2.0.5\lib。
三、要实现打印的Jsp文件编写,Jsp文件中打印按钮或者打印连接应该提交给一个javascript,具体代码如:<a href="javascript: print(${exammanage.oid })"><fontcolor="blue">打印</font></a>javascript代码如下function print(oid){if(!confirm("确定要打印该资格证吗?"))return ;window.showModalDialog('${ctx}/exam/exammanage/examprint_cert.jsp?oid='+oid,'','dialogWidth:50px;dialogHeight:150px;dialogTop:1000px;dialogLef t:1000px');document.forms[0].flg.value = "0";document.forms[0].action="${ctx}/ExamPermitPrint.html";document.forms[0].submit();}代码解释:1、window.showModalDialog('${ctx}/exam/exammanage/examprint_cert.jsp?oid='+oid,'','dialogWidth:50px;dialogHeight:150px;dialogTop:1000px;dialogLef t:1000px');此段的功能是显示打印提示窗口,我的文件是WebRoot路径下/exam/exammanage/路径下的examprint_cert.jsp文件,而且需要传一个你所要打印的记录的唯一字段(数据库中唯一代表一条记录的字段),我这里用OID。
java实现打印套打功能
String str = value[i];
int[ temp = position[i];
int x = temp[0];
int y = temp[1];
//设置打印字体(字体名称、样式和点大小)
Font font = new Font("新宋体", Font.PLAIN, 9);
pj.setPrintable(printTest, pf);
if (pj.printDialog()) { //弹出打印对话框,打印对话框,用户可以通过它改变各种选项,例如:设置打印副本数目,页面方向,或者目标打印机。
try {
pj.print();
} catch (PrinterException e) {
PrinterJob pj = PrinterJob.getPrinterJob();//创建一个打印任务
PageFormat pf = PrinterJob.getPrinterJob().defaultPage();
Paper paper = pf.getPaper();
//设置页面高和宽,A4纸为595,842
double pageWidth = 595;
double pageHeight = 810;
paper.setSize(pageWidth, pageHeight);
paper.setImageableArea(0, 0, pageWidth, pageHeight);
pf.setOrientation(NDSCAPE); //设置打印方向,LANDSCAPE为横向,打印方向默认为纵向
JavaWeb实现文件上传下载功能实例详解
JavaWeb实现⽂件上传下载功能实例详解在Web应⽤系统开发中,⽂件上传和下载功能是⾮常常⽤的功能,今天来讲⼀下JavaWeb中的⽂件上传和下载功能的实现。
⽂件上传概述1、⽂件上传的作⽤例如⽹络硬盘!就是⽤来上传下载⽂件的。
在智联招聘上填写⼀个完整的简历还需要上传照⽚呢。
2、⽂件上传对页⾯的要求上传⽂件的要求⽐较多,需要记⼀下:必须使⽤表单,⽽不能是超链接表单的method必须是POST,⽽不能是GET表单的enctype必须是multipart/form-data在表单中添加file表单字段,即<input type=”file” name=”xxx”/><form action="${pageContext.request.contextPath }/FileUploadServlet"method="post" enctype="multipart/form-data">⽤户名:<input type="text" name="username"/><br/>⽂件1:<input type="file" name="file1"/><br/>⽂件2:<input type="file" name="file2"/><br/><input type="submit" value="提交"/></form>3、⽐对⽂件上传表单和普通⽂本表单的区别通过httpWatch查看“⽂件上传表单”和“普通⽂本表单”的区别。
⽂件上传表单的enctype=”multipart/form-data”,表⽰多部件表单数据;普通⽂本表单可以不设置enctype属性:当method=”post”时,enctype的默认值为application/x-www-form-urlencoded,表⽰使⽤url编码正⽂当method=”get”时,enctype的默认值为null,没有正⽂,所以就不需要enctype了对普通⽂本表单的测试:<form action="${pageContext.request.contextPath }/FileUploadServlet" method="post">⽤户名:<input type="text" name="username"/><br/>⽂件1:<input type="file" name="file1"/><br/>⽂件2:<input type="file" name="file2"/><br/><input type="submit" value="提交"/></form>通过httpWatch测试,查看表单的请求数据正⽂,我们发现请求中只有⽂件名称,⽽没有⽂件内容。
java从文件中读取数据并存入对象中的方法
一、概述在软件开发中,经常会遇到需要从文件中读取数据并存入对象中的情况,尤其是在使用Java语言进行编程时。
掌握Java从文件中读取数据并存入对象中的方法对于开发者来说是非常重要的。
本文将介绍Java中实现该功能的常用方法,并结合实例详细讲解。
二、使用Java读取文件的方法1. 使用File类和Scanner类读取文件Java中可以使用File类和Scanner类来读取文件中的数据。
首先通过File类创建文件对象,然后通过Scanner类来读取文件中的内容。
以下是一个简单的示例代码:```javaimport java.io.File;import java.io.FileNotFoundException;import java.util.Scanner;public class ReadFromFile {public static void m本人n(String[] args) {try {File file = new File("data.txt");Scanner scanner = new Scanner(file);while (scanner.hasNextLine()) {String data = scanner.nextLine();System.out.println(data);}scanner.close();} catch (FileNotFoundException e) {System.out.println("File not found");e.printStackTrace();}}}```2. 使用BufferedReader类读取文件除了Scanner类,还可以使用BufferedReader类来读取文件中的数据。
与Scanner类不同,BufferedReader类提供了更高效的读取方式。
以下是一个使用BufferedReader类读取文件的示例代码:```javaimport java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class ReadFromFile {public static void m本人n(String[] args) {try {BufferedReader reader = new BufferedReader(new FileReader("data.txt"));String line = reader.readLine();while (line != null) {System.out.println(line);line = reader.readLine();}reader.close();} catch (IOException e) {System.out.println("IO Exception");e.printStackTrace();}}}```以上是使用Java读取文件的基本方法,开发者可以根据实际需求选择合适的方式来读取文件中的数据。
java实现调用打印机代码
java实现调⽤打印机代码接⼝ PrintService 是 DocPrintJob 的⼯⼚。
PrintService 描述了打印机的功能,并可查询它来了解打印机⽀持的属性 1package com.tj.print;23import java.io.File;4import java.io.FileInputStream;56import javax.print.Doc;7import javax.print.DocFlavor;8import javax.print.DocPrintJob;9import javax.print.PrintService;10import javax.print.PrintServiceLookup;11import javax.print.ServiceUI;12import javax.print.SimpleDoc;13import javax.print.attribute.DocAttributeSet;14import javax.print.attribute.HashDocAttributeSet;15import javax.print.attribute.HashPrintRequestAttributeSet;16import javax.swing.JFileChooser;1718public class PrintDemo1 {19public static void main(String[] args) {20 JFileChooser fileChooser = new JFileChooser(); // 创建打印作业21int state = fileChooser.showOpenDialog(null);22if (state == fileChooser.APPROVE_OPTION) {23 File file = fileChooser.getSelectedFile(); // 获取选择的⽂件24// 构建打印请求属性集25 HashPrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();26// 设置打印格式,因为未确定类型,所以选择autosense27 DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;28// 查找所有的可⽤的打印服务29 PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);30// 定位默认的打印服务31 PrintService defaultService = PrintServiceLookup32 .lookupDefaultPrintService();33// 显⽰打印对话框34 PrintService service = ServiceUI.printDialog(null, 200, 200,35 printService, defaultService, flavor, pras);36if (service != null) {37try {38 DocPrintJob job = service.createPrintJob(); // 创建打印作业39 FileInputStream fis = new FileInputStream(file); // 构造待打印的⽂件流40 DocAttributeSet das = new HashDocAttributeSet();41 Doc doc = new SimpleDoc(fis, flavor, das);42 job.print(doc, pras);43 } catch (Exception e) {44 e.printStackTrace();45 }46 }47 }48 }49 }。
