JAVA實現PDF打印的方式有很多,話不多說,我這里將給出J三種打開PDF的方法。
第一種:Java Swing自帶的組件預覽、打印PDF
首先需要一個工具類:
package com.beiqisoft.cic;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.icepdf.ri.common.SwingController;
import org.icepdf.ri.common.SwingViewBuilder;
public class PDFViewer {
public JFrame frame;
public String pdf;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
PDFViewer window = new PDFViewer("c:/wd/b.pdf");
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public PDFViewer(String pdf) {
this.pdf = pdf;
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setSize(1100, 1000);
frame.setLocationRelativeTo(null);
frame.getContentPane().setLayout(null);
SwingController controller = new SwingController();
SwingViewBuilder factory = new SwingViewBuilder(controller);
JPanel viewerComponentPanel = factory.buildViewerPanel();
controller.getDocumentViewController().setAnnotationCallback(
new org.icepdf.ri.common.MyAnnotationCallback(
controller.getDocumentViewController()));
controller.openDocument(pdf);
frame.setContentPane(viewerComponentPanel);
}
}
然后在主程序中調用:
new PDFViewer(fileName).frame.setVisible(true);
fileName是你生成的PDF文件路徑
效果圖:
弊端:不能修改右邊距和下邊距參數,對于打印位置要求精準的項目,不適用。
第二種:使用系統默認程序(瀏覽器)打開PDF文件
工具類:
package com.beiqisoft.cic.util;
import java.io.File;
import java.util.Iterator;
import java.util.Map;
public class googlepdf {
public static void opengoogle(String jurl,String fileName) {
if (java.awt.Desktop.isDesktopSupported()) {
try {
// 創建一個URI實例
String url="file:///"+jurl.replace("\", "/")+"/"+fileName.substring(2);
String url="file:///D:/cic/"+fileName.substring(2);
java.net.URI uri = java.net.URI.create(url);
// 獲取當前系統桌面擴展
java.awt.Desktop dp = java.awt.Desktop.getDesktop();
// 判斷系統桌面是否支持要執行的功能
if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {
// 獲取系統默認瀏覽器打開鏈接
dp.browse(uri);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
主程序調用工具類:
googlepdf.opengoogle(getLujing(),fileName);
public String getLujing(){
//獲取類加載的根路徑
//
File file3 = new File(this.getClass().getResource("/").getPath());
//
String fileurl=file3.toString();
//
String url=fileurl.substring(0,fileurl.length()-14);
//
return url.replace("\", "/");
File file3 = new File(".");
String fileurl = "";
try {
fileurl = file3.getCanonicalPath().toString();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return fileurl;
}
}
效果圖因不同系統PDF默認程序不同,這里就不展示了
第三種:Java指定瀏覽器預覽及打印PDF
工具類與第二種方式一樣,將里面的默認程序打開的代碼換成
//瀏覽器位置
String google=jC:\Users\wangdong-surface\Desktop\cic\Google\Chrome\Application\chrome.exe";
Map map = System.getenv();
for (Iterator itr = map.keySet().iterator(); itr.hasNext();) {
String value = (String) map.get((String) itr.next());
if (value.contains("firefox.exe")) {
google = value;
break;
}
}
Runtime.getRuntime().exec(new String[] { google, url });
我將Google瀏覽器安裝到了我的項目路徑下,這樣,不同的用戶使用該客戶端都不需要重新安裝我指定的瀏覽器。
效果圖:
以上就是三種Java PDF打印方法,希望能幫到需要的你。