当我在 Linux 命令行中将 pdf 转换为图像时,看起来 inkscape 获得了最好的结果(比具有相同 dpi 的 gs 更好的质量)。不幸的是,它只将第一页转换为 png。如何将每个pdf页面转换为不同的png文件?我是否必须提取一个 PDF 页面并存储到一个新的 pdf 文件,然后进行 inkscape 音乐会,等等?
这不仅仅使用 Inkscape,但您可以使用例如pdftk 将 pdf 文件分割成单独的页面,并使用 Inkscape 将每个页面转换为 png。例如,像这样:
pdftk file.pdf burst;
l=$(ls pg_*.pdf)
for i in $l; do inkscape "$i" -z --export-dpi=300 --export-area-page --export-png="$i.png"; done
注意,
pdftk burst
创建名为pg_0001.pdf等的pdf文件,因此如果您有任何这样命名的文件,它们将被覆盖。之后您可以使用轻松删除它们
rm pg_*.pdf
卢卡斯的回答在没有进行转换的情况下向我发出了警告。可能是因为我运行的是 Inkscape 1.1
但是,我通过替换一些已弃用的命令来使其运行:
inkscape pdfFile.pdf --export-dpi=300 --export-area-page --export-filename=imageFile.png;
对于批处理而不是缓慢地逐个文件循环,inkscape 有一个用于命令文件脚本编写的 shell 模式。请参阅https://wiki.inkscape.org/wiki/index.php/Using_the_Command_Line#Shell_mode
但是,与所有其他 @file.txt 脚本一样,您需要编写自定义文本文件。对于 Windows 用户,运行排名较高的 inkscape.com 而不是 .exe
自版本 1.0(当前为 1.2)以来,可以针对多个输出处理多页 pdf 内容。有关其他一些示例,请参阅https://inkscape.org/doc/inkscape-man.html#EXAMPLES
随着时间的推移,命令会被替换,因此目前导出 png 使用
--export-type="xxx" to batch export a list of input files to type xxx.
因此在这种情况下 --export-type="png"
有关 pdf 相关输入和支持,请参阅 https://wiki.inkscape.org/wiki/index.php/Using_the_Command_Line#New_options
对于 Windows 用户,这里有一个方便的批处理文件转换器 https://gist.github.com/JohannesDeml/779b29128cdd7f216ab5000466404f11
Lu Ka 使用已弃用的选项,并且可以进一步改进。将卢卡的循环替换为:
for file in *.pdf; do filename=${file%.pdf}; inkscape $file --export-dpi=300 --export-area-page --export-filename=$filename.png; done
-z 选项已弃用,filename=${file%.pdf} 确保您的文件不会有双重扩展名“.pdf.png”。