国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - Java教程 - Java實現PDF打印的解決方案

Java實現PDF打印的解決方案

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

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

1.java print service

java print service是java自帶的打印框架,所在的包javax.print.printservice;。
實現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文檔要設為自動識別
docflavor fileformat = docflavor.input_stream.autosense;
//2.得到要打印的文檔類doc
doc mydoc = new simpledoc(fistream, fileformat, null);
//3.生成一個打印屬性設置對象
printrequestattributeset aset =
    new hashprintrequestattributeset();
aset.add(new copies(5));//copies-打印份數5份
aset.add(mediasize.a4);//a4紙張
aset.add(sides.duplex);//雙面打印
//4.關鍵一步,得到當前機器上所有已經安裝的打印機
//傳入的參數是文檔格式跟打印屬性,只有支持這個格式與屬性的打印機才會被找到
printservice[] services =
 printservicelookup.lookupprintservices(fileformat, aset);
if (services.length > 0) {
  //5.用打印服務生成一個文檔打印任務,這里用的是第一個服務
  //也可以進行篩選,services[i].getname()可以得到打印機名稱,可用名稱進行比較得到自己想要的打印機
  docprintjob job = services[0].createprintjob();
  try {
    //6.最后一步,執行打印文檔任務,傳入的參數是doc文檔類,與屬性(5份,雙面,a4)
    job.print(mydoc, aset);//成功后電腦會提示已有文檔添加到打印隊列
  } catch (printexception pe) {}
}

2.apache pdfbox

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

它的打印實現也是封裝了java service print框架的打印功能。

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

經本人測試發現這個pdfbox實現的打印功能比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 命令打印

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

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

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

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

4.linux打印pdf

如果環境是linux,則打印文件非常方便,調用打印命令,即可打印pdf文件。

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

上述代碼的含義是:

調用名為printername的打印機,當然首先要保證linux上安裝了該名稱的打印機,去打印home目錄下名為csdn.pdf的文件,份數為2份。

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

如果結合java使用,命令如下。

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

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

總結

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产毛片网站 | 日韩一区二区三区在线观看 | 国产第一区二区三区 | 久草 在线 | 日韩精品专区 | 在线成人免费 | 日日爱影视 | 黄色毛片在线看 | 久久久久99| 色www精品视频在线观看 | 999精品在线 | 欧美激情一区二区 | 日韩在线免费视频 | 久久久久久久av | 亚洲一区二区三区视频 | 亚洲男人的天堂视频 | 国产精品毛片久久久久久久 | 久久精品这里热有精品 | 国产一区二区三区免费观看 | 久久一区二区三 | 久久噜噜噜精品国产亚洲综合 | 中文字幕123 | 欧美在线观看免费观看视频 | 欧美激情一区二区三区在线视频 | 激情总合网 | 久久伊人色| 精品国产一区二区三区久久久 | 亚洲一区二区三区在线免费观看 | 精品久久久久久久久久久下田 | 这里有精品视频 | 亚洲香蕉视频 | 久久久天堂 | 午夜精品久久久久久久久 | 3344视频| 国产日韩免费视频 | 欧美亚洲视频在线观看 | 毛片免费播放 | 欧美午夜精品久久久久久蜜 | 毛片大片| 亚洲 欧美 日韩 丝袜 另类 | 免费视频成人国产精品网站 |