2
我有一個函數返回一個PDF數據的字節數組,我想在Java SWT應用程序中查看它。我不想使用Icepdf,jpedal等任何jar。只是SWT和Java。如何使用SWT瀏覽器查看PDF數據字節
一個明顯的解決方案是將所有字節寫入文件「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();
}
}
}
}
所以你甚至不想使用操作系統的臨時文件夾,這是專爲這樣的情況? – Baz
寫一個新的SWT組件? – parsifal
@Baz - 是的,我應該可以攜帶一些東西,比如File.createTempFile。但我寧願不使用任何文件。 –