gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:19:53 25 4
gpt4 key购买 nike

我有一个返回 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com