2025年pdfView为什么打印不了(pdf为什么没办法打印)

pdfView为什么打印不了(pdf为什么没办法打印)Java 实现 PDF 打印的方式有很多 话不多说 我这里将给出 J 三种打开 PDF 的方法 第一种 p p p style letter spacing 05em br p p style letter spacing 05em strong Java strong p

大家好,我是讯享网,很高兴认识大家。



Java实现PDF打印的方式有很多,话不多说,我这里将给出J三种打开PDF的方法。


讯享网

 第一种</p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><strong>Java Swing自带的组件预览、打印PDF</strong> </p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><strong>首先需要一个工具类:</strong></p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;">package com.beiqisoft.cic;</p><p style="letter-spacing:.05em;">import java.awt.EventQueue;</p><p style="letter-spacing:.05em;">import javax.swing.JFrame;</p><p style="letter-spacing:.05em;">import javax.swing.JPanel;</p><p style="letter-spacing:.05em;">import org.icepdf.ri.common.SwingController;</p><p style="letter-spacing:.05em;">import org.icepdf.ri.common.SwingViewBuilder;</p><p style="letter-spacing:.05em;">public class PDFViewer {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">public JFrame frame;</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">public String pdf;</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">public static void main(String[] args) {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">EventQueue.invokeLater(new Runnable() {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">public void run() {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">try {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">PDFViewer window = new PDFViewer("c:/wd/b.pdf");</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">window.frame.setVisible(true);</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">} catch (Exception e) {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">e.printStackTrace();</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">});</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">public PDFViewer(String pdf) {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">this.pdf = pdf;</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">initialize();</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">private void initialize() {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">frame = new JFrame();</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">frame.setSize(1100, 1000);</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">frame.setLocationRelativeTo(null);</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">frame.getContentPane().setLayout(null);</p><p style="letter-spacing:.05em;">        SwingController controller = new SwingController();</p><p style="letter-spacing:.05em;">        SwingViewBuilder factory = new SwingViewBuilder(controller);</p><p style="letter-spacing:.05em;">        JPanel viewerComponentPanel = factory.buildViewerPanel();</p><p style="letter-spacing:.05em;">        controller.getDocumentViewController().setAnnotationCallback(</p><p style="letter-spacing:.05em;">                new org.icepdf.ri.common.MyAnnotationCallback(</p><p style="letter-spacing:.05em;">                        controller.getDocumentViewController()));</p><p style="letter-spacing:.05em;">        controller.openDocument(pdf);</p><p style="letter-spacing:.05em;">        frame.setContentPane(viewerComponentPanel);</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><img src="https://s2.51cto.com/images/blog//_6170f32cb31a.gif?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=" style="width: 502px; height: 452px; visibility: visible;" alt='Java预览及打印PDF的三种方法_java' /></p><p style="letter-spacing:.05em;">然后在主程序中调用:</p><p style="letter-spacing:.05em;"><strong>new PDFViewer(fileName).frame.setVisible(true);</strong></p><p style="letter-spacing:.05em;">fileName是你生成的PDF文件路径</p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><strong>效果图:</strong></p><p style="letter-spacing:.05em;"><img src="https://s2.51cto.com/images/blog//_6170f32ccd.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184" style="width: 675px; height: 630px; visibility: visible;" alt='Java预览及打印PDF的三种方法_awt_02' /></p><p style="letter-spacing:.05em;"><img src="https://s2.51cto.com/images/blog//_6170f32d00c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184" style="width: 497px; height: 414px; visibility: visible;" alt='Java预览及打印PDF的三种方法_java_03' /></p><p style="letter-spacing:.05em;"><strong>弊端:不能修改右边距和下边距参数,对于打印位置要求精准的项目,不适用。</strong></p><p style="letter-spacing:.05em;"><strong><br /></strong></p><p style="letter-spacing:.05em;"><strong><br /></strong></p><p style="letter-spacing:.05em;"><strong><br /></strong></p><p style="letter-spacing:.05em;"> 第二种: </p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><strong>使用系统默认程序(浏览器)打开PDF文件</strong> </p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><strong>工具类:</strong></p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;">package com.beiqisoft.cic.util;</p><p style="letter-spacing:.05em;">import java.io.File;</p><p style="letter-spacing:.05em;">import java.util.Iterator;</p><p style="letter-spacing:.05em;">import java.util.Map;</p><p style="letter-spacing:.05em;">public class googlepdf {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">public static void opengoogle(String jurl,String fileName) {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">if (java.awt.Desktop.isDesktopSupported()) {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">try {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">// 创建一个URI实例</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">String url="file:///"+jurl.replace("\", "/")+"/"+fileName.substring(2);</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">String url="file:///D:/cic/"+fileName.substring(2);</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">java.net.URI uri = java.net.URI.create(url);</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">// 获取当前系统桌面扩展</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">java.awt.Desktop dp = java.awt.Desktop.getDesktop();</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">// 判断系统桌面是否支持要执行的功能</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">if (dp.isSupported(java.awt.Desktop.Action.BROWSE)) {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">// 获取系统默认浏览器打开链接</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">dp.browse(uri);</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">} catch (Exception e) {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">e.printStackTrace();</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;">主程序调用工具类:</p><p style="letter-spacing:.05em;"> googlepdf.opengoogle(getLujing(),fileName);</p><p style="letter-spacing:.05em;"> public String getLujing(){</p><p style="letter-spacing:.05em;"> //获取类加载的根路径</p><p style="letter-spacing:.05em;">//</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">    File file3 = new File(this.getClass().getResource("/").getPath());</p><p style="letter-spacing:.05em;">//</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">    String fileurl=file3.toString();</p><p style="letter-spacing:.05em;">//</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">     String url=fileurl.substring(0,fileurl.length()-14);</p><p style="letter-spacing:.05em;">//</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">      return url.replace("\", "/");</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">     </p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">        File file3 = new File(".");</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">        String fileurl = "";</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">try {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">fileurl = file3.getCanonicalPath().toString();</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">} catch (IOException e) {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">// TODO Auto-generated catch block</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">e.printStackTrace();</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">        return fileurl;</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">  }</p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><strong><br /></strong></p><p style="letter-spacing:.05em;"><strong>效果图因不同系统PDF默认程序不同,这里就不展示了</strong></p><p style="letter-spacing:.05em;"><strong><br /></strong></p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"> 第三种:Java指定浏览器预览及打印PDF </p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;">工具类与第二种方式一样,将里面的默认程序打开的代码换成</p><p style="letter-spacing:.05em;">//浏览器位置</p><p style="letter-spacing:.05em;">String google=jC:\Users\wangdong-surface\Desktop\cic\Google\Chrome\Application\chrome.exe";</p><p style="letter-spacing:.05em;">Map map = System.getenv();</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">for (Iterator itr = map.keySet().iterator(); itr.hasNext();) {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">String value = (String) map.get((String) itr.next());</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">if (value.contains("firefox.exe")) {</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">google = value;</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">break;</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">}</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">Runtime.getRuntime().exec(new String[] { google, url });</p><p style="letter-spacing:.05em;">我将Google浏览器安装到了我的项目路径下,这样,不同的用户使用该客户端都不需要重新安装我指定的浏览器。</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><strong>效果图:</strong></p><p style="letter-spacing:.05em;"><img src="https://s2.51cto.com/images/blog//_6170f32d2e2bd45185.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184" style="width: 675px; height: 208px; visibility: visible;" alt='Java预览及打印PDF的三种方法_swing_04' /></p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"><strong>以上就是三种Java PDF打印方法,希望能帮到需要的你。</strong></p><p style="letter-spacing:.05em;"><strong><br /></strong></p><p style="letter-spacing:.05em;"><strong><br /></strong></p><p style="letter-spacing:.05em;">技术成就梦想</p><p style="letter-spacing:.05em;">关注我们一起成长</p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;">生活不知眼前的苟且,</p><p style="letter-spacing:.05em;">还有课本里的诗和到不了的远方!</p><p style="letter-spacing:.05em;"><br /></p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;"> </p><p style="letter-spacing:.05em;">本文分享自微信公众号 - 释然IT杂谈</p> 

讯享网
小讯
上一篇 2025-06-06 21:28
下一篇 2025-05-30 18:20

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/171081.html