JAVA实现PDF打印的方式有很多,话不多说,我这里将给出J三种打开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文件路径
效果图:
弊端:不能修改右边距和下边距参数,对于打印位置要求精准的项目,不适用。
工具类:
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默认程序不同,这里就不展示了
工具类与第二种方式一样,将里面的默认程序打开的代码换成
//浏览器位置
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打印方法,希望能帮到需要的你。