java - Wicket 添加一个大的 Pdf 作为资源

标签 java pdf wicket

在我的应用程序中,我使用 ByteArrayResource 显示 pdf。 在我开始处理更大的文件之前,这一切都工作得很好。转换为 ByteArray 时不断出现内存不足错误。

这就是我目前的做法:

        File myPdf=new File(thePath);
        FileInputStream fin = new FileInputStream(myPdf);
        final byte fileContent[] = new byte[(int)myPdf.length()];
        fin.read(fileContent);
        fin.close();
        ResourceReference rr = new ResourceReference(dePdf.getName()) {

        @Override
        public IResource getResource() {
            return new ByteArrayResource("Application/pdf", fileContent);

        }
        };
        if (rr.canBeRegistered()) {
            getApplication().getResourceReferenceRegistry().registerResourceReference(rr);
        }        

        return wmc;

是否有更好的方式来显示大文件?

最佳答案

尝试使用 ResourceStreamResource 和 FileResourceStream:

File myPdf=new File(thePath);
FileResourceStream frs = new FileResourceStream(myPdf);

ResourceStreamResource rsr = new ResourceStreamResource(frs);
rsr.setContentDisposition(ContentDisposition.ATTACHMENT);
rsr.setFileName(fileName);

//the same code for resource reference creation and registration
//...

关于java - Wicket 添加一个大的 Pdf 作为资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12385635/

相关文章:

java - StringBuffer 追加空间 ("") 改为追加 "null"

java - 添加页脚所有页面文档

java - 从 Wicket 访问 SPRING_SECURITY_LAST_EXCEPTION

websphere - 对标记文件的更改未在 wicket 项目中获取

java - Selenium 网络驱动程序 : Java: NoSuchElementException: Unable to locate element: {"method" :"xpath" ,"selector" :"//div[@id=' manage_area']/ul/li/div[2]"}

集成 Windows Small Business Server 的 Java 应用程序

java - 在提取数据的同时保持 PDF 的结构

html - 链接在 iPhone 上打开 PDF,但在笔记本电脑上打不开

javascript - Ajax 重绘组件停止加载 Javascripts

java - 如何删除ArrayList中与原始元素重复的值