2

PDF データのバイト配列を返す関数があり、それを Java SWT アプリケーションで表示したいと考えています。Icepdf、jpedal などの jar は使用したくありません。SWT と Java だけです。

明白な解決策の 1 つは、すべてのバイトをファイル "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();
            }
        }
    }

}
4

1 に答える 1