急求:JAVAWEB实现文件打印的问题

公司的OA是JAVAWEB 的,现在想增加一个功能,自动调用一台网络上的打印机打印OA服务器上指定路径下的文件(一般都是WORD或者EXCEL的日报,报表之类的),这个好实现吗?打印机不是直接配置在服务器上的,是一台普通的网络打印机

2个回答

网络打印机添加后,就跟本地打印机没多少区别了


import java.io.FileInputStream;
import java.io.FileNotFoundException;

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.MediaSizeName;
import javax.swing.JOptionPane;

public class PrintUtils {
    public static void main(String[] args) {
        FileInputStream textStream = null;
        try {
            textStream = new FileInputStream("C:\\CityLove.pdf");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

        //String printStr = "打印测试内容";// 获取需要打印的目标文本
        if (textStream != null) // 当打印内容不为空时
        {
            // 指定打印输出格式
            DocFlavor flavor = DocFlavor.INPUT_STREAM.PDF;//SERVICE_FORMATTED.PRINTABLE
            // 定位默认的打印服务
            PrintService printService = PrintServiceLookup.lookupDefaultPrintService();
            // 创建打印作业
            DocPrintJob job = printService.createPrintJob();
            // 设置打印属性
            PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
            // 设置纸张大小,也可以新建MediaSize类来自定义大小
            pras.add(MediaSizeName.ISO_A4);
            DocAttributeSet das = new HashDocAttributeSet();
            // 指定打印内容
            Doc doc = new SimpleDoc(textStream, flavor, das);
            // 不显示打印对话框,直接进行打印工作
            try {
                job.print(doc, pras); // 进行每一页的具体打印操作
            } catch (PrintException pe) {
                pe.printStackTrace();
            }
        } else {
            // 如果打印内容为空时,提示用户打印将取消
            JOptionPane.showConfirmDialog(null,
                    "Sorry, Printer Job is Empty, Print Cancelled!",
                    "Empty", JOptionPane.DEFAULT_OPTION,
                    JOptionPane.WARNING_MESSAGE);
        }
    }


}

moumoufly
dijitMonkey 我想在享用 jcob 实现 但是不知道jcob 怎么获取本地的多台打印机及打印机属性,还有设置文件的打印参数
3 年多之前 回复
moumoufly
dijitMonkey 用 JPS是可以实现基本的打印,但是office文件它支持不好。。。。
3 年多之前 回复

用 JPS是可以实现基本的打印,但是office文件它支持不好。。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JavaWeb实现打印
今天看到公司的项目中有一个实现打印报表的功能,于是就百度了一下怎么实现的,其实很简单。这里主要记录两种方式:一是使用浏览器自带的打印;二是使用POI技术实现到处报表再进行打印。其实还有些插件可以实现在线编辑在线打印(就是网页上的一个富文本编辑框,这个富文本编辑框有打印功能)。 一、浏览器自带的打印功能: 打印内容(打印的内容是id为printdiv里面的内容): <a onclick...
javaweb实现打印功能
javaweb jsp界面实现打印功能。引入js后再引入相应方法即可实现。
javaweb打印
javaweb打印,控制 "纵打 "、 横打”和“页面的边距,ASP页面打印时如何去掉页面底部的路径和顶端的页码编号
关于javaWEB分页问题(急求大神?)
分页以后,最后一页可能会出现数据不够的问题,为了美观,如何补空行,如果不补空行,比如说每页5条数据,最后一页就还剩下3条数据,那表格的高度会缩,rn求各位大神 指点
关于JavaWeb异常的问题?求解答!急!
HTTP Status 500 - rnrn--------------------------------------------------------------------------------rnrntype Exception reportrnrnmessage rnrndescription The server encountered an internal error () that prevented it from fulfilling this request.rnrnexception rnrnjavax.servlet.ServletException: Servlet execution threw an exceptionrnrnrnroot cause rnrnjava.lang.NoClassDefFoundError: wyf/wyy/Borrow_listrn wyf.wyy.StuDB.getCurMoney(StuDB.java:134)rn wyf.wyy.StuDB.getStuInfo(StuDB.java:55)rn wyf.wyy.StudentServlet.doPost(StudentServlet.java:38)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:637)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:717)rnrnrnroot cause rnrnjava.lang.ClassNotFoundException: wyf.wyy.Borrow_listrn org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)rn org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)rn java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)rn wyf.wyy.StuDB.getCurMoney(StuDB.java:134)rn wyf.wyy.StuDB.getStuInfo(StuDB.java:55)rn wyf.wyy.StudentServlet.doPost(StudentServlet.java:38)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:637)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:717)rnrnrnnote The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.rnrnrn--------------------------------------------------------------------------------rnrnApache Tomcat/6.0.18
急求:协议打印问题
想实现的功能描述:协议文件是上级统一定制的,以前协议编号、协议双方、协议内容等事项都是手工填上去的,现在想整个小软件,把手工写的内容用针式打印机打上去。高人们,能不能给指导一二呀。
pdf文件打印问题,急!
我有一pdf文件打印时候上面总会有个边框,但从ACROBAT中又看不见,怎么样才能把边框消了?
急求java打印PDF文件
大家新年好,公司准备做报表,但是用手写痛苦啊。rn所以想请教些高手,如何打印PDF文件,大家交流交流。rn我的QQ:50887355rn谢谢大家了。
javaweb问题,求解 急
[code=Java]rncontext = new InitialContext();rn DataSource ds = (DataSource) contextrn .lookup("java:/comp/env/jdbc/oracleds");rn QueryRunner qr = new QueryRunner(ds);rn SimpleDateFormat sdf = new SimpleDateFormat(rn "yyyy-MM-dd hh:mm:ss");rn String params[]=StringUtil.filterHtml(name),StringUtil.filterHtml(request.getParameter("email")),StringUtil.filterHtml(requestrn .getParameter("phone")),StringUtil.filterHtml(title),StringUtil.filterHtml(request.getParameter("content")),sdf.format(new java.util.Date());rnrn rn result = qr.update(sql, params);rn[/code]rn错误提示:rnjava.lang.AbstractMethodErrorrn org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.getParameterMetaData(DelegatingPreparedStatement.java:221)rn org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.getParameterMetaData(DelegatingPreparedStatement.java:221)rn org.apache.commons.dbutils.AbstractQueryRunner.fillStatement(AbstractQueryRunner.java:172)rn org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:485)rn org.apache.commons.dbutils.QueryRunner.update(QueryRunner.java:455)rn fengge.guestbook2.AddMessageServlet.doPost(AddMessageServlet.java:56)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:637)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:717)rnrn找不出错误来,求高手解答。。。。
急求实现 Winform 打印ArcMap 地图代码
自己写的一个简单的Winform 程序,加载地图:rn private void Form1_Load(object sender, EventArgs e)rn rn LoadMap();rn rnrn private void LoadMap()rn rn this.Cursor = Cursors.WaitCursor;rn Application.DoEvents();rn string sFilePath = @"D:\地图配置\map\ChangZhouLayer\常州.mxd";rn if (MainMap.CheckMxFile(sFilePath))rn rn MainMap.MousePointer = esriControlsMousePointer.esriPointerHourglass;rn MainMap.LoadMxFile(sFilePath);rn MainMap.MousePointer = esriControlsMousePointer.esriPointerDefault;rn this.Cursor = Cursors.Default;rn rn rn elsern rn MessageBox.Show("选择打开的地图文档无效", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);rn rn rnrn 初学AE 开发现在界面有一打印按钮,急求打印代码,忘个大侠不吝赐教,小女子感激不尽!
急,求打印源代码
一个简单的问题,怎样实现文档打印rn在一个窗体中有多个零件怎样实现窗体内的控件随着窗体的大小改变而改变
急求打印和上传
是这样的,我在网页里通过调用数据库显示相应的记录,在每条记录旁边有上传和打印按钮rn按了打印就这样打了,不需要浏览!上传的话,我知道好象有分组件和无组件的,但是具体小弟搞不明白!大家帮帮我啊,特别是打印,急用!跪求了
javaWeb 实现上传+下载 文件
上传下载在web项目中应该是很常见的需求,能够熟练敲出代码实现是web开发人员必不可少的 下面简化的上传: jsp页面的实现: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transit
急!!!文件打印
已知有一个文本文件c:\aaa.txtrn在pb中如何直接打印aaa.txt,不能将aaa.txt的内容导入到数据窗口或其他控件中后再打印.rn
打印问题,急,急,
各位高手:rn 请问我怎样把多个窗体按原始大小打印在一张A4纸上,我用的是VB.net,谢谢各位了啊rn
打印问题,急,急!
各位高手:rn 请问怎样把多个窗体按原始大小打印在一张A4纸上?
轻量级JavaWeb打印程序库
轻量级JavaWeb打印程序库,轻量级JavaWeb打印程序库
JavaWeb后端异常打印
try{ \\代码段 }catch (Exception e){ System.out.println(e.toString()); \\获得异常种类和错误信息 System.out.println(e.getMessage()); \\获得错误信息 e.printStackTrace(); \\在控制台打印出异常种类,错误信息和出错位置等 }
JavaWeb打印源码
通过Lodop实现的Web打印,已经调节完成,插件在项目中,运行后直接就可打印。相关更多操作请查看API,新手web打印程序
急求:求一javaWeb知识实现的论坛方案,练练手,求具体需要实现功能的方案
RT,希望高手能给哥文档,具体要实现的功能和模块
急,急,急!!!打印问题
JSP页面里打印页面的时候如何让他直接打印,而不出现WINDOWS的打印选择窗口。就是说如何送数据到打印机?请大家帮忙啦!!!
打印问题!急!急!急!
各位高手:rn 我用了一个三口打印伺服器,连了三台热敏打印机。程序的一个窗口上有三个数据窗体(即:三个票据),怎么实现一点击“打印”按扭就让三个票据分别从不同的打印机上打印出来???在线等待......
急求解决c#打印问题!!!
打印一个DataTable(表里面的数据是通过foreach循环添加进去的)rn DataTable里有31条数据(即31行),打印表是以列的形式添加的,如下所示:rnbuilder.AddTable (tbjbyc.DefaultView, true, 100f);rn builder.DefaultColumnAlignment = ReportPrinting.HorizontalAlignment.Center; rn builder.AddColumn("异常和疾病名称","异常和疾病名称",2.3f,true,true);rn builder.AddColumn("姓名","姓名",3.0f,true,true);rn builder.AddColumn("人数","人数",1.0f,true,true);rn builder.AddColumn("所占百分比","所占百分比",1.0f,true,true);rn为什么我打印预览时,就会卡死,cpu 100%rn我把表里的数据从循环第27次的时候,跳出循环,即表里有27行数据,可以正常打印,超过27条就不行了..rnrn于是我将表进行了几组数据测试,另一组数据有61行,打印31行之前的的,也可以正常打印,超过31行就不行了...rn通过两组数据的测试,我怀疑这是不是打印纸张长度的计算有问题,因为他们每次卡死都是在打印到第2页大半的位置卡死...rnrn- -可我不知道打印一张表的最大长度是在哪里修改... 有几个打印类我还没看懂rn
急求打印问题(字不清楚)
使用view里面的结构做的一个打印模块,在某些打印机上打印,字不清楚,这个是什么原因?rn字的大小什么都没问题,字看起来有部分没打出来,残缺,只是某些打印机,如利盟Z13,用户反映越来越多了rn找不到原因,郁闷死了
EXCEL打印问题, 急求帮助,谢谢!!
有一张EXCEL表:rn地址 公司 收件人 电话号码 邮编rn*** *** *** ******* ****rn&&& &&& &&& &&&&&&& &&&&rn$$$ $$$ $$$ $$$$$$$ $$$$rnrn现在要每一行数据打印出来,以以下格式:rnrn 地址: ************rn 公司: ************rn 收件人:**********rn电话号码: **** 邮编:*****rnrn小弟一筹莫展,望高手帮忙!!!
急求解决打印预览问题!!!!!!!
下面这段代码,为什么我记录少时,可以打印出来,记录多一点,就会造成预览死机?rn当循环到20条记录时,我把它终止,则可以正常打印预览,超过20条后,预览CPU就会100%,急求高手解决!!小弟多谢了。。。rnrn foreach(DictionaryEntry de in iden)rn rn dr = tbjbyc.NewRow();rn rn //LCF 05 11 20007rn rn dr[0] = de.Key.ToString(); //illness name rn dr[1]= ((Sympton)de.Value).PersonName;rn dr[2] = ((Sympton)de.Value).Count;// person countrn dr[3] = decimal.Round((Convert.ToDecimal(((Sympton)de.Value).Count)/dwaccount)*100,2)+"%";rn rn //*******************************************rn //当数据记录达到20条时,跳出循环..rn// if(tbjbyc.Rows.Count == 20)rn// rn// break;rn// rn// rn rn tbjbyc.Rows.Add(dr); rn rn rnrn //LCFrnrn //***************************************************************** rn rn if(tbjbyc.Rows.Count > 0)rn rn builder.DefaultTablePen = null;//reportDocument.NormalPen;rn builder.AddTable (tbjbyc.DefaultView, true, 100f);rn builder.DefaultColumnAlignment = ReportPrinting.HorizontalAlignment.Center; rn builder.AddColumn("异常和疾病名称","异常和疾病名称",2.3f,true,true);rn builder.AddColumn("姓名","姓名",3.0f,true,true);rn builder.AddColumn("人数","人数",1.0f,true,true);rn builder.AddColumn("所占百分比","所占百分比",1.0f,true,true);rn builder.Table.InnerPenHeaderBottom = reportDocument.NormalPen;rn builder.Table.InnerPenRow = new Pen (Color.Gray, reportDocument.ThinPen.Width);rn builder.Table.OuterPenBottom = new Pen (Color.Gray, reportDocument.ThinPen.Width);rn builder.DefaultColumnAlignment = ReportPrinting.HorizontalAlignment.Left; // put it backrn //LCFrn
java打印问题。。。。急求帮助
[img=https://img-bbs.csdn.net/upload/201310/24/1382606207_616035.png][/img]rn弄了个小页面 现在该怎么点击打印 就把这个页面打印出来 空白部分和button按钮都不要 是web的
100分求:水晶报表打印问题(急)
水晶报表,在本机测试 点击打印按钮,弹出窗口,选择打印机,能正常打印rnrn在服务器上以前也可以正常打印,但最近突然出现点击打印按钮,弹出空窗口,一直没反应。rnrn搞了一上午,没能解决,服务器报水晶报表重装后,问题照旧,郁闷! 请高手解答,马上结贴!
求关于ireport的报表打印问题,急
我用的javabean做数据源的,我在bean里定义了一个List类型的字段,结果在生成PDF的时候,说java.util.List不能转换成java.lang.String类型.rn请做过报表的高手帮小弟解决一下,急用,现在工作要用到
一个javaweb问题,有点急!
我在后台定义了一个boolean isdown = false;isdown依靠前端传递的“down”来选择为真或为假rn我页面有一个查询按钮和一个下载xls文件按钮。rn后台判断isdown 为false的话则执行分页查询并把结果放到一个list里面 xls通过list生成对应的结果集。如果为真则执行无分页查询,结果同理。rn问题出在于前端点击下载按钮时总是下载有分页的xls文件,而我想要的是无分页的xls文件。rn求解 我后台调试下很多次 那个文件都正常生成 唯独后端 result.put("excelName",excelName);的时候好像就只执行一次。。rn[img=https://img-bbs.csdn.net/upload/201706/12/1497278917_115830.png][/img]rnrn部分前端代码是这样的rnrnfunction down()rnrn document.getElementById("down").setAttribute("href", changeURLArg('down', 'true'));rn location.href="$_PATH/download/$excelName";rn[img=https://img-bbs.csdn.net/upload/201706/12/1497279286_851445.jpg][/img]
web局部打印问题,急求
[code=JScript]rn bdhtml = window.document.body.innerHTML;rn sprnstr = "";rn eprnstr = "";rn prnhtml = bdhtml.substr(bdhtml.indexOf(sprnstr) + 17);rn prnhtml = prnhtml.substring(0, prnhtml.indexOf(eprnstr));rn window.document.body.innerHTML = prnhtml;rn window.print();rn[/code]rnrn这是我找的一段打印的代码,貌似就是截取字符串方式打印的,但是怎么不能把样式附加进去啊,还有就是如果我打印的内容中包涵flash图表的话就什么都看不到了,我看window.print()的方式虽然是全部打印,但是不管是flash图表还是样式都可以出来的啊,请教大哥们局部打印要求打印出样式,flash图表的怎么弄,谢谢。
急求解答水晶报表打印无数据问题
用的vs2008自带的水晶报表, 在本机测试一切都好, rn但是发表到客户机器上,可以预览,显示有数据, 点打印后能打印表格, 但是没有打印出任何数据rn(客户机器安装了vs2008安装包中的CRRedist2008_x86.msi), rnrn急求, 望高高手关注一下, 谢谢了。
急求关于pos机打印的问题
我的电脑装了两个软件,有一个是pos机收费的软件。两个打印机,使用一个转换器将两个打印机连接到一块(可以互相切换), 一个打印机是针式的,一个打印机是pos机上的热敏打印机,端口为LPT1,使用pos机收费后打印就会提示打开LPT1端口失败,使用另一个软件收费打印正常。请问谁知道是什么原因吗?在线急求~~~
急求打印问题(在线等!!!)
说明:csdn里面打印的内容我都搜索了,也看了一些,google里面我也搜索了很多,这些东西都是你抄我的我抄你的,东西不少,有的用不上!rnrn我的需求:类似银行取钱一样,打印一个凭条,用户只须点击打印凭条,不需要什么设置直接打印出来凭条,这个凭条应该能用程序控制纸型、页面设置,因为凭条不可能太大,B5的一半左右吧,不能弹出设置预览打印等界面,直接打印,该怎么实现〉???比较急!!问题解决100分马上送出!!!
高分求RBuilder的报表打印问题.急.
用RBuilder做一单据报表.格式如下:rn rn ***单rnrn单据编号:XXX001 仓库: XXXXXrnrn商品编码 商品名称 数量 单价 金额rn6901347800053 椰子汁 10 2.5 25.00rnXXXX XXXX xx xxxx XXXXXXrn...rn...rnrn合计: 数量:XXX 金额:XXXXXXXX rn累计: 数量:XXX 金额:XXXXXXXXrnrn说明:每一页要有合计和累计,统计当页的数量和金额.累计为:如果是第一页rn则为合计相同,下一页为上一页的累计加上当前页的合计. rn纸大小应该让客户可选,有可能为自定义大小,也有可能为A4,A3.rnrn问题的关键为合计行和累计行的打印.rnrn各位大侠帮帮忙.rnrn还有一个问题:有时发生,报表只有几页,但发送到打印机时有几千页.
急求母版页中内容的打印问题
用到了母版页,现在母版页中有一个Repeater控件来显示报表,怎样只打印出报表内容,而不打印母版页,哪位能给个办法?谢了!!
急求,如何解决打印的问题
我是初学vc的,最好给我代码。rn如何设置打印字体,要求能够选择的那种,我是用下面的方法取的。font 是在C***View类中定义CTfont*型的 rnvoid CTheprogramofprintView::OnSetFont() rnCFontDialog fontDialog; rnif(fontDialog.DoModal()==IDOK) rn rn font=fontDialog.GetFont();rn我现在想要在ondraw中把设置的取出来打印,该如何取 rn rn
lodop5.0 打印的问题·急在线求解答
谁用过 lodop5.0的打印控件,我现在用lodop5.0的打印控件 如果用IE6浏览器打印的话 在打印内容的左下角会出现“本页由【试用版打印控件lodop5.0】输出”谁知道怎么样将这句话去除谢谢!着急在线等
急求。。。关于打印和导出数据的问题?
我使用的是框架网页,怎么打印出一边框架中的内容?rnrnrn怎么把查出的数据导进客户端的.xls中?rnrnrnrn请贴出代码,小弟不胜感激!
100分求C#打印问题,急!!!!!
环境:VS2005,C#,Winformrnrn窗口上有四个标签,分别对应四个文本框:rn姓名:张飞rn年龄:32rn职位:大将rn打印份数:3rnrn还有一个Button(Btn_Print),现在想一按打印按钮就把张飞的信息直接打印到条码打印机(打印多少张根据txtnumber.Text的值来定),条码打印机的标签尺寸为(5cm X 5cm),printDocument1的PrintPage事件为OnPrintPage,本人不太熟悉C#的打印,我的代码如下:rn private void Btn_Print_Click(object sender, EventArgs e)rn rnrn sname = txtname.Text;rn sage = txtage.Text;rn spos = txtpos.Text;rnrn tryrn rn printDocument1.Print();rn rn catch (InvalidPrinterException ex)rn rn MessageBox.Show(ex.Message, "Simple Editor", MessageBoxButtons.OK, MessageBoxIcon.Error);rn rn rnrn private void OnPrintPage(object sender, PrintPageEventArgs e)rn rn for (int i = 1; i <= Convert.ToInt32(txtnumber.Text); i++)rn rn e.Graphics.DrawString(" ", new Font("Arial", 14, FontStyle.Bold), Brushes.Black, 75, 0);rn e.Graphics.DrawString(sname, new Font("Arial", 14, FontStyle.Bold), Brushes.Black, 75, 30);rn e.Graphics.DrawString(" ", new Font("Arial", 14, FontStyle.Bold), Brushes.Black, 75, 60);rn e.Graphics.DrawString(sage, new Font("Arial", 14, FontStyle.Bold), Brushes.Black, 75, 90);rn e.Graphics.DrawString(spos, new Font("Arial", 12, FontStyle.Bold), Brushes.Black, 75, 120);rnrn rn rnrn问题:rn1.打印的时候并不是从第一张标签纸开始的,张飞的名字出现在第三张标签纸的末尾rn2.最终只打印出一次信息,并没有打印出三次(txtnumber.Text的值设定)rnrn怎么解决以上问题啊?五行打印内容在一张标签纸上完全可以打得下的,怎么会这样?rn另外打第二次的时候,怎么让信息出现在另外一张标签纸上,而不是接在第一张标签上继续打?rn在线等!!!!!!!!!!!
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件