我正在尝试使用命令行程序转换将PDF转换为图像(JPEG或PNG)。这是我正在转换的pdf文件之一。

我想让程序去掉多余的空白,并返回足够高质量的图像,以便上标可以轻松读取。

这是我目前最好的尝试。正如你所看到的,修剪工作很好,我只是需要锐化的分辨率相当多。这是我正在使用的命令:

convert -trim 24.pdf -resize 500% -quality 100 -sharpen 0x1.0 24-11.jpg

我试着做了以下有意识的决定:

调整它的大小(对分辨率没有影响) 尽可能提高质量 使用-锐化(我已经尝试了一系列值)

任何建议,请在最终的PNG/JPEG图像的分辨率更高,将非常感谢!


当前回答

你可以在LibreOffice Draw(这通常是预安装在Ubuntu中)中完成:

在LibreOffice Draw中打开PDF文件。 滚动到需要的页面。 确保文本/图像元素被正确放置。如果没有,可以在页面上进行调整/编辑。 顶部菜单:文件>导出… 在右下角菜单中选择所需的图像格式。我推荐PNG。 命名文件并单击Save。 选项窗口将出现,因此您可以调整分辨率和大小。 单击OK,就完成了。

其他回答

我个人喜欢这个。

convert -density 300 -trim test.pdf -quality 100 test.jpg

文件大小是原来的两倍多一点,但在我看来好多了。

-density 300设置PDF渲染的dpi。

-trim删除任何与角落像素相同颜色的边缘像素。

-quality 100将JPEG压缩质量设置为最高质量。

像-锐化这样的东西不能很好地处理文本,因为它们撤消了字体渲染系统为使文本更易读而做的工作。

如果你真的想放大它,在这里使用resize,可能是一个更大的dpi值,比如targetDPI * scalingFactor,这将以你想要的分辨率/大小渲染PDF。

imagemagick.org上的参数描述在这里

它也会给你带来好的结果:

exec("convert -geometry 1600x1600 -density 200x200 -quality 100 test.pdf test_image.jpg");

这适用于从多个PDF和图像文件创建单个文件:

php exec('convert -density 300 -trim "/path/to/input_filename_1.png" "/path/to/input_filename_2.pdf" "/path/to/input_filename_3.png" -quality 100 "/path/to/output_filename_0.pdf"');

地点:

-density 300 = dpi

-trim =一些关于透明度的东西-使边缘看起来光滑

质量100 =质量vs压缩(100%质量)

平……对于多页,不要使用“压平”

我在命令行上使用pdftoppm来获取初始图像,通常分辨率为300dpi,因此pdftoppm -r 300,然后使用convert来进行修剪和PNG转换。

看来以下方法是有效的:

convert           \
   -verbose       \
   -density 150   \
   -trim          \
    test.pdf      \
   -quality 100   \
   -flatten       \
   -sharpen 0x1.0 \
    24-18.jpg

它的结果是左图。将其与我的原始命令的结果进行比较(右侧的图像):

  

(为了真正看到和欣赏两者之间的差异,右键单击每个,并选择“在新选项卡中打开图像…”)

还要记住以下事实:

右边最糟糕的模糊图像的文件大小为1.941.702字节(1.85 MByte)。 它的分辨率是3060x3960像素,使用16位RGB颜色空间。 左边图像比较清晰,文件大小为337.879字节(330 kByte)。 它的分辨率是758x996像素,使用8位灰色空间。

所以,不需要调整大小;添加-density标志。密度值150很奇怪——尝试一个范围的值会导致图像在两个方向上看起来都很糟糕!