Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
高效生成巨大pdf文件的缩略图?_Pdf_Memory_Thumbnails - Fatal编程技术网

高效生成巨大pdf文件的缩略图?

高效生成巨大pdf文件的缩略图?,pdf,memory,thumbnails,Pdf,Memory,Thumbnails,在我正在开发的一个系统中,我们正在生成缩略图,作为工作流程的一部分。 有时pdf文件相当大(打印大小为3m2),并且可能包含巨大的位图图像 是否有能够生成缩略图的程序针对处理如此大的pdf文件的内存占用进行了优化 生成的缩略图可以是png或jpg。是我在所有CLI图形中使用的,因此它可能适用于您: convert foo.pdf foo-%png 这将生成三个单独的PNG文件: foo-0.png foo-1.png foo-2.png 要仅创建一个缩略图,请将PDF视为一个数组([0]是第

在我正在开发的一个系统中,我们正在生成缩略图,作为工作流程的一部分。 有时pdf文件相当大(打印大小为3m2),并且可能包含巨大的位图图像

是否有能够生成缩略图的程序针对处理如此大的pdf文件的内存占用进行了优化

生成的缩略图可以是png或jpg。

是我在所有CLI图形中使用的,因此它可能适用于您:

convert foo.pdf foo-%png
这将生成三个单独的PNG文件:

foo-0.png
foo-1.png
foo-2.png
要仅创建一个缩略图,请将PDF视为一个数组(
[0]
是第一页,
[1]
是第二页,以此类推):

由于您担心内存问题,使用
-cache
选项可以限制内存使用:

-缓存阈值像素缓存可用的内存兆字节

图像像素存储在内存中 直到内存达到阈值兆字节 消耗。后续像素操作 缓存在磁盘上。操作到 内存速度明显加快,但 如果您的计算机没有 您需要足够的可用内存 可能需要调整此阈值 价值观

因此,要缩略PDF文件并调整其大小,可以运行此命令,该命令的最大内存使用量应为20mb左右:

convert -cache 20 foo.pdf[0] -resize 10%x10% foo-thumb.png
或者您可以使用
-density
来指定输出密度(900将其放大很多):


你在乎吗?目前价格合理的服务器有512 GB ram。支持以1200 dpi的速度存储超过9000英寸(250米)平方的全彩未压缩位图。使用磁盘对性能的影响很大

当然,如果您有3m²PDF,也可以指定一个
-密度
参数。否则…默认值是每英寸72点…让我做一些计算…2400万像素的图像…那太好了。我还要添加
-调整大小
。@Blender:是的。但是
-density
是在调用作为外部命令的委托(可以是Ghostscript)时应用的。也许代理不能有内存限制?我没有任何大的PDF可以尝试,但我想Ghostscript有一个限制内存的选项(可能是
convert
pipes)。它的大小是否正确?我还没有处理过这么大的PDF文件,所以可能它会让其他有同样问题的人受益。
convert -cache 20 foo.pdf[0] -resize 10%x10% foo-thumb.png
convert -cache 20 foo.pdf[0] -density 900 foo-thumb.png