在我的应用程序中,我使用 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/