Java PDFbox、预览列表<;PDPage>;元素

Java PDFbox、预览列表<;PDPage>;元素,java,pdf,pdfbox,preview,Java,Pdf,Pdfbox,Preview,使用下面的代码,我打开一个PDF文件(使用filechooser对象,我不会在这里显示所有代码,这并不重要),然后我将所有内容“放入”一个PDPage列表中,其中包含所有PDF页面。如果PDF有3页,我将有3幅图像,如果PDF有4页,我将有4幅图像,以此类推 PDDocument document2 = PDDocument.loadNonSeq(new File(pdfFile), null); List<PDPage> pdPages = documen

使用下面的代码,我打开一个PDF文件(使用filechooser对象,我不会在这里显示所有代码,这并不重要),然后我将所有内容“放入”一个PDPage列表中,其中包含所有PDF页面。如果PDF有3页,我将有3幅图像,如果PDF有4页,我将有4幅图像,以此类推

PDDocument document2 = PDDocument.loadNonSeq(new File(pdfFile), null);

            List<PDPage> pdPages = document2.getDocumentCatalog().getAllPages();
然后我显示,例如,stackpane中的一个页面。现在的问题是,我想显示pdPages的预览(因此,没有图像格式,只有pdPages),因为我认为对于大PDF来说更好。我的意思是,如果我想“转换”一个有200页的PDF文件,完成这项任务需要很长时间。我想显示页面预览(最多10或15个,这并不重要)(这样用户将单击感兴趣的图像),但以PDPage格式,尚未转换图像。我的想法是对的还是错的?在积极的情况下,我能做什么


提前感谢

您不必保存图像,您可以将这些图像保存在一个BuffereImage数组中。要加快速度(对于缩略图),请使用较小的dpi值,即不是300,但可能是50或更低(尝试最适合您的)。@TilmanHausherr Ok,但我希望将所有元素保留为PDPage,然后在窗格中显示它们,例如,当用户需要时,例如,单击其中一个元素并在新的Jframe中打开。目前我的话题是。如何使用缩略图显示PDPage元素?无论如何,谢谢你关于dpi的提示。缩略图就是一个图像。大小不重要。唯一的可能是使用convertToImage()将PDPage对象呈现给BuffereImage。PDPage只是一组非常复杂的数据,无法单独显示。所以,我必须在BuffereImage的am数组中转换PDPage,对吗?在您看来,最好使用for循环或其他构造?我这样做是为了管理非常大的PDF,例如300或400页。当然,我一次只显示几个(例如10个)预览。谢谢你澄清了我的想法,一个循环就可以了。请注意,PDFBox不是线程安全的,因此不要同时对同一文档进行多次转换。因此,一个解决方案可能是打开文件两次,一次在背景中呈现缩略图,另一次以屏幕大小呈现页面。
for (PDPage pdPage : pdPages)
            { 
                ++page;
                BufferedImage bim = pdPage.convertToImage(BufferedImage.TYPE_INT_RGB, 300);
                ImageIOUtil.writeImage(bim, pdfFile + "-" + page + ".png", 300);
            }