我有一个返回 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();
}
}
}
}