在java中打印PDF文件的方法有哪些?实例展示

随着科学技术与经济水平的不断发展,越来越多的人开始投入到java编程语言的学习当中去。今天就来为大家介绍一些java的日常使用,也就是在java中打印PDF文件的方法有哪些?通过具体的实例为大家展示。

首先说一下第一种方式,也就是Java Swing自带的组件预览打印PDF文件

1.需要一个工具类,代码如下所示:

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);
    }
}

2.在主程序中调用如下代码:

new PDFViewer(fileName)
    .frame.setVisible(true);

fileName是生成的PDF文件路径。

效果图如下所示:

在java中打印PDF文件

在java中打印PDF文件

但是它也存在一个问题,就是不能修改右边距和下边距参数,对于打印位置要求精准的项目,不适合。

接下来是第二种方式:使用系统默认程序(浏览器)打印PDF文件

1.工具类代码展示如下:

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();
            }
        }
    }
}

2.主程序调用工具类代码展示如下:

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;
}
}

最后是第三种方式:Java指定浏览器预览及打印PDF文件

1.工具类与第二种方式一样,将里面的默认程序打开的代码换成//浏览器位置。代码展示如下:

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
    });

以上就是在在java中打印PDF文件的主要三种方法列举,并通过详细的代码为大家展示。如果你对java知识感兴趣,想要了解更多java经典例子常见问题,敬请关注奇Q工具网。

推荐阅读:

在java中如何生成PDF文件?图文详解

javac文件列表的定义是什么?如何编译程序?

java怎样跨服务器上传文件?详细实例展示