1. 程式人生 > >打印功能

打印功能

contex sta 模板 object catch dpa posit https request

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

打印功能