打印功能

1.首先做好一个模板,想打印图片的话下载一个图片模板,打印表格的话直接建一个表格。然后在word里面打开。保存为PDF格式,然后下载Adobe Acrobat DC,没有的话在我的第一个链接可以直接下载。

2下载以后把PDF打开,点击准备表单。如果是表格的话,在空的表格里面会自动生成打印是要加入数据的框;图片只会生成一个,可以复制粘贴。框可以自己移动、调大小。

 

(注意:如上方法里面插入字段是按照图片上由上到下、从左至右的顺序插入的)

3.输入框做好了直接保存就好了。

4.打印方法:第一段绿色是把保存的PDF模板URL放入,和你要下载PDF放的URL,我的url是用的动态的,放在服务器文件下。你也可以固定路径保存,第二个绿色字段也是自己加的,自己想放什么把什么字段传过来就好了。其他的复制就好了。

@RequestMapping(value = "/export")
public Map<String,Object> printinvoice() throws Exception{

//生成pdf文件程序

String templatePath = "F:/model4.pdf";
// 生成的新文件路径
String url = request.getSession().
getServletContext().getRealPath("/")+"uploadFile\\"+dutyparagraph+".pdf";
PdfReader reader;
FileOutputStream out;
ByteArrayOutputStream bos;
PdfStamper stamper;
try {
out = new FileOutputStream(url);// 输出流
reader = new PdfReader(templatePath);// 读取pdf模板
bos = new ByteArrayOutputStream();
stamper = new PdfStamper(reader, bos);
AcroFields form = stamper.getAcroFields();
String[] str = {putCompanyname, dutyparagraph,priceall, depositbank,bankaccount, Companyname };
int i = 0;
java.util.Iterator<String> it = form.getFields().keySet().iterator();
while (it.hasNext()) {
String name = it.next().toString();
form.setField(name, str[i++]);
}
stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑,一定要设为true
stamper.close();

Document doc = new Document();
PdfCopy copy = new PdfCopy(doc, out);
doc.open();
PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);
copy.addPage(importPage);
doc.close();

} catch (IOException e) {
System.out.println(1);
} catch (DocumentException e) {
System.out.println(2);
}


return null;

}

 5.执行完上面的程序就把你所要打印的pdf文件生成了。

6.预览功能:在前台页面展示所保存的pdf文件,

1.需要下载pdfobject.js插件。功能很是强大。在我的第二个链接里面。有两个.js。随便下载一个。其他两个架包是生成二维码的架包,有兴趣可以看下,生成二维码博客也有发。

2.jsp

一个div就搞定了。路径是保存PDF的路径,"#pdf"是id选择器。

执行了方法就直接跳到pdf显示页面了。

我做的是打印发票的,黑色字段是我添加的。显示的PDF就有打印和下载的功能,还可以放大和缩小,还有适应屏幕。功能强大的一匹。

3. 打印数据的话直接前台加如下这句话就可以直接打印当前页面的数据了;

<a href="javascript:print);">打印</a>

 7.下载功能

1.把生成pdf文件的下载路径传到下载方法就好了。

@ResponseBody
@RequestMapping(value = "/download")
public String download(@RequestParam String companyname,String url, HttpServletResponse response, HttpServletRequest request) throws Exception{
System.out.println("==========================");
System.out.println("开始下载");
InputStream in = null ;
OutputStream out = null ;
try
{
System.out.println("============================");
System.out.println("全局路径:"+url);
in = new FileInputStream(url); //获取文件的流
System.out.println("============================");
System.out.println("文件输入流:"+in);
int len = 0;
byte buf[] = new byte[1024];//缓存作用
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(companyname + ".pdf", "UTF-8"));
out = response.getOutputStream();//输出流
while( (len = in.read(buf)) > 0 ) //切忌这后面不能加 分号 ”;“
{
out.write(buf, 0, len);//向客户端输出,实际是把数据存放在response中,然后web服务器再去response中读取
}

in.close();
out.close();

}finally{
//TODO
}
return null;

 

 

over!!!!!!!!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

链接

1.链接:http://pan.baidu.com/s/1pKLFYeJ 密码:368z

2.链接:http://pan.baidu.com/s/1dE4zvfN 密码:vntc

转载于:https://www.cnblogs.com/ysqbky/p/7483977.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值