2

为了解释我想要做什么,我正在构建一个应用程序,它将使用 Swing 和其他一些库来根据用户提供的信息处理一堆 PDF 文件。这对于我在这里尝试做的事情真的并不重要,但我认为概述会很好。

我想要做的是在 Jframe/Jpanel 或其他一些摆动组件中显示 PDF,以便用户可以自己阅读 PDF。他们将要阅读的 PDF 包含日期和其他我需要他们输入到我的程序中的信息。

到目前为止,我可以为我的程序做所有事情,除了以一种体面的方式将 PDF 与信息相关联。我的替代方法是根本不显示 PDF,只显示文件名和输入信息的字段,这样他们就可以从 Adob​​e Reader 之类的东西中读取 PDF,然后从那里输入。但是我不想这样做,因为将使用这个程序的人有点老,而且容易出错。让他们必须跟踪 PDF 名称,而不仅仅是查看 PDF 的图像,这对他们来说太过分了。

TL;DR - 需要在 Swing 组件中显示 PDF 或 PDF 页面的图像。

4

1 回答 1

1

我知道的最简单的方法是使用DJ Native Swing将浏览器嵌入到 Swing 应用程序中。然后将 PDF 提供给浏览器,让它完成剩下的工作。

以下是在 JFrame 上放置浏览器的方法:

    NativeInterface.open();
    Runnable runnable = new Runnable() {
        public void run() {
            JFrame frame = new JFrame();
            JPanel panel = new JPanel();
            frame.setContentPane(panel);
            JWebBrowser browser = new JWebBrowser();
            browser.setBarsVisible(false);
            browser.setStatusBarVisible(false);
            browser.setPreferredSize(new Dimension(800,600));
            panel.add(browser);
            browser.navigate("http://www.cran.r-project.org/doc/manuals/R-intro.pdf");
            frame.pack();
            frame.setVisible(true);
        }
    };
    SwingUtilities.invokeAndWait(runnable);

但是,此解决方案不是很便携。

于 2013-08-04T17:02:41.927 回答