激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - Java教程 - Java實現(xiàn)PDF打印的解決方案

Java實現(xiàn)PDF打印的解決方案

2021-06-24 10:10pigdreams Java教程

今天小編就為大家分享一篇關(guān)于Java實現(xiàn)PDF打印的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

1.java print service

java print service是java自帶的打印框架,所在的包javax.print.printservice;。
實現(xiàn)pdf打印的代碼流程如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//1.得到一個文件的輸入流
fileinputstream fistream;
try {
  psstream = new fileinputstream("./sample.pdf");
} catch (filenotfoundexception ffne) {
}
if (psstream == null) {
  return;
}
//這是要打印文件的格式,如果是pdf文檔要設(shè)為自動識別
docflavor fileformat = docflavor.input_stream.autosense;
//2.得到要打印的文檔類doc
doc mydoc = new simpledoc(fistream, fileformat, null);
//3.生成一個打印屬性設(shè)置對象
printrequestattributeset aset =
    new hashprintrequestattributeset();
aset.add(new copies(5));//copies-打印份數(shù)5份
aset.add(mediasize.a4);//a4紙張
aset.add(sides.duplex);//雙面打印
//4.關(guān)鍵一步,得到當(dāng)前機器上所有已經(jīng)安裝的打印機
//傳入的參數(shù)是文檔格式跟打印屬性,只有支持這個格式與屬性的打印機才會被找到
printservice[] services =
 printservicelookup.lookupprintservices(fileformat, aset);
if (services.length > 0) {
  //5.用打印服務(wù)生成一個文檔打印任務(wù),這里用的是第一個服務(wù)
  //也可以進行篩選,services[i].getname()可以得到打印機名稱,可用名稱進行比較得到自己想要的打印機
  docprintjob job = services[0].createprintjob();
  try {
    //6.最后一步,執(zhí)行打印文檔任務(wù),傳入的參數(shù)是doc文檔類,與屬性(5份,雙面,a4)
    job.print(mydoc, aset);//成功后電腦會提示已有文檔添加到打印隊列
  } catch (printexception pe) {}
}

2.apache pdfbox

pdfbox是一個用以生成pdf的開源項目。

它的打印實現(xiàn)也是封裝了java service print框架的打印功能。

打印pdf很簡單,只需調(diào)用一個方法即可,printpdf.main().不過不能指定打印份數(shù)等一些屬性。

經(jīng)本人測試發(fā)現(xiàn)這個pdfbox實現(xiàn)的打印功能比java service print支持的打印機種類更多,有些打印機用java service print 不能正常打印,但用pdfbox可以正常打印出來。

?
1
2
3
4
5
6
7
printpdf.main(new string[]{
  "-silentprint",//靜默打印
  "-password","abcde",//pdf打開密碼
  "-printername","hp laserjet 1020" ,//指定打印機名
  "-orientation","auto|landscape|portrait",//打印方向,三種可選
  "pdffilepath"//打印pdf文檔的路徑
});

ps:這個類在tools包下package org.apache.pdfbox.tools

3.adobe reader 命令打印

這種方法實現(xiàn)pdf的文檔打印的前提條件是電腦上必須安裝有adobe公司的acrobat reader dc這個軟件,實現(xiàn)打印的原理就是通過這個軟件的一些命令來打開一個pdf文檔,并用軟件直接打印,相當(dāng)于人工點擊打印。

java調(diào)用命令如下,其它就是打開一個cmd,輸入了打印命令而已

?
1
runtime.getruntime().exec("cmd.exe /c start acrord32 /p /h " + filepath);

這種方案有個缺點,就是打印時會打開reader軟件的界面,無法關(guān)閉

4.linux打印pdf

如果環(huán)境是linux,則打印文件非常方便,調(diào)用打印命令,即可打印pdf文件。

?
1
lpr -p printername -#2 /home/csdn.pdf

上述代碼的含義是:

調(diào)用名為printername的打印機,當(dāng)然首先要保證linux上安裝了該名稱的打印機,去打印home目錄下名為csdn.pdf的文件,份數(shù)為2份。

要注意一點,-p必須是大寫,不然無法識別。

如果結(jié)合java使用,命令如下。

?
1
2
string [] cmd={"sh","-c","lpr -p printername -#2 /home/csdn.pdf"}
runtime.getruntime().exec(cmd);

上述方法是親測可行的,至于為什么要加這”sh”,”c”兩個參數(shù),對linux命令有興趣可自行搜索~

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對服務(wù)器之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

原文鏈接:https://blog.csdn.net/pigdreams/article/details/70216971

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文区永久区 | 欧美黑人伦理 | 国产成人综合在线观看 | 日本一区二区三区精品 | 法国极品成人h版 | 久久精品视频亚洲 | 男女羞羞视频在线免费观看 | 亚洲精品久久久久www | 91精品国产91热久久久做人人 | 国产一区二区三区在线免费 | 欧美精品a∨在线观看不卡 午夜精品影院 | 91麻豆精品国产91久久久无需广告 | 在线播放亚洲视频 | 一级做a爱片毛片免费 | 久久千人斩 | 九九热视频免费观看 | 羞羞视频2023 | 色综合网在线观看 | 亚洲精品一区中文字幕 | 亚洲国产精品久久久久婷婷老年 | 久久久久久久国产a∨ | 国产精选电影免费在线观看网站 | 看国产一级毛片 | 欧美14一15sex性hd | 福利视频亚洲 | 在线成人www免费观看视频 | 精品在线视频播放 | 久久99国产精品久久99果冻传媒 | av免费在线不卡 | 亚洲成人福利电影 | 91精品观看91久久久久久国产 | 成人乱人乱一区二区三区 | 狠狠一区| 欧美日本国产精品 | 久久国产精品二国产精品中国洋人 | 国产免费传媒av片在线 | 黄色男女视频 | 美国av片在线观看 | 色婷婷综合久久久中字幕精品久久 | 欧洲色阁中文字幕 | 免费一级在线 |