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