java - 如何使用 SWT 浏览器查看 PDF 数据字节

标签 java pdf browser swt

我有一个返回 PDF 数据字节数组的函数,我想在 Java SWT 应用程序中查看它。我不想使用任何 jar,例如 Icepdf、jpedal 等。只需 SWT 和 Java。

一个明显的解决方案是将所有字节写入文件“C:/TEMP/file.pdf”,然后调用 browser.setURL("file://c:/TEMP/file.pdf")。不过,如果可能的话,我想避免使用临时文件。

我尝试了以下方法,但它不起作用,因为“setText”假定 MIME 类型为 text/html。如果 SWT 提供了 setText(bytes,headers) 方法就好了!

有什么建议吗?

public class MyBrowser
{
    static byte[] GetPDFData()
    {
        // details omitted
    }

    public static void main(String[] args)
    {

        Shell shell = new Shell();
        shell.setLayout(new RowLayout(SWT.VERTICAL));

        Browser browser = new Browser(shell, SWT.BORDER);
        browser.setLayoutData(new RowData(600, 300));

        byte[] pdfdata = GetPDFData();

        StringBuffer buffer = new StringBuffer();
        buffer.append("Content-Type: application/pdf\n\n");
        for (int i = 0; i < pdfdata.length; ++i)
            buffer.append((char) pdfdata[i]);
        browser.setText(new String(buffer));
        shell.pack();
        shell.open();

        while (shell != null && !shell.isDisposed())
        {
            if (!shell.getDisplay().readAndDispatch())
            {
                shell.getDisplay().sleep();
            }
        }
    }

}

最佳答案

哦,好吧。我放弃。这并不理想,但我想我必须使用临时文件。以下作品,

        byte[] pdfdata = GetPDFData();

        File tempFile = File.createTempFile("twiqd", ".pdf");
        FileOutputStream tempOut = new FileOutputStream(tempFile);
        tempOut.write(pdfdata);
        tempOut.close();

        browser.setUrl(tempFile.toURI().toURL().toExternalForm());
        shell.pack();
        etc.

我必须记住删除临时文件。

关于java - 如何使用 SWT 浏览器查看 PDF 数据字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17705585/

相关文章:

java - while 循环问题

php - 我只能下载表头,不能下载FPDF中MYSQL数据库的数据

pdf - 这个字符串语法在 PDF 中意味着什么?

firefox - 我该怎么办 : Enter username and password for "" at http://localhost in Firefox browser?

java - 小程序在屏幕上的位置(x,y 坐标)

java - 用于楼宇管理系统的 BACNet 插件

java - 将对象等同于 boolean 值 - IntelliJ 与 Eclipse

objective-c - Xcode - UIActivityIndi​​cator 消失得太快

缺少字形的 CSS 字体回退

java - 按下 Jbutton 后 JFrame 卡住