如何将 ghostscript pdf 转换为 png 的评论保留下来?
How to keep comments in a ghostscript pdf conversion to png?
我正在将 PDF 页面转换为图像,并且工作正常,我遇到的问题是它遗漏了 PDF 页面上的评论或注释。
当我使用 TIFF 格式时,它会保留它们,但当我输出为 PNG 时,它会删除它们。
如何保存它们?
这是我用来转换 PDF 的代码:
function Convert-pdf {
param (
$PDF_Output, # Output path where converted PDF files will be stored
$path_to_pdf,
$PNG_Output # Output path where the PNG files will be saved
)
#Path to your Ghostscript EXE
$tool = 'C:\Program Files\gs\gs9.55.0\bin\gswin64c.exe'
$pdf = get-item $path_to_pdf
$png = $PNG_Output + $pdf.BaseName + "%03d" + ".png"
if(test-path $png)
{
"png file already exists " + $png
}
else
{
'Processing ' + $pdf.Name
$param = "-sOutputFile=$png"
& $tool -q -dNOPAUSE -sDEVICE=png256 $param -r300 $pdf.FullName -c quit
}
Move-Item $pdf $PDF_Output
return $png
}
当我将 png256
更改为 tiff64nc
时,它会显示 PDF 上的注释,否则不会显示它们。
编辑:我使用的是 GS 版本 9.55.0
这是我通过代码输入的 pdf 的示例图像:
这是我得到的输出:
如果你想自己测试,这里是文件:
在回答您的问题时,您发现 Artifex GhostScript 不会打印这些注释,但是它们可以在 Artifex MuPDF 中查看。
奇怪的是,您可以通过 Artifex Mutool 转换 pdf 文件。最快的方法是直接转换为 PNG:-
mutool convert -O resolution=300,colorspace=rgb -o output-rgb.png "69846382 annots not printing in GS png.pdf"
注意 colorspace=rgb 不限于 256 色。在您的情况下,有或没有该选项,源 5 种颜色的输出取决于其他因素,但您的文件默认为 1238 AA 颜色。
我们可以使用较短的绘制命令得到类似的结果,如果不相同的话
mutool draw -o output-rgb.png -r 300 -c rgb "69846382 annots not printing in GS png.pdf"
我尝试了几十个选项来使用 mutool 以 GS 用来输出 256 色(和注释)的 pdf 格式重建 pdf,但取得了不同程度的成功,(尽管我有一些不错的选择,如 SVG)。您可以尝试不同的转换路径和选项,但此处的结果似乎非常相似。
如果您确实需要 256 种颜色,您可以将 png 回馈到 pdf 中,然后将其提交给 GS,以便我们获得您想要的最大 256 种颜色(在本例中为 101 种颜色),但稍后会看到更短的选项。
所以总共要获得 256 种最大颜色,您需要 3 行使用 shell path\variables 并注意多页 %d 值。
mutool draw -o "out-draw.png" -r 300 "69846382 annots not printing in GS png.pdf"
mutool draw -o "out-draw.pdf" "out-draw.png"
gswin64c -o "GSout256.png" -sDEVICE=png256 -r300 "out-draw.pdf"
和 因为通用格式处理类似于 PS 图形,分两步使用它可以得到更快的结果。
mutool draw -o "out-draw.ps" -r 300 "69846382 annots not printing in GS png.pdf"
gswin64c -o "GSout256.png" -sDEVICE=png256 -r300 "out-draw.ps"
但是双图像输入输出过程的结果比预期的“波纹” , which I should have expected. Whichever method I used to improve the result it was not an even tone 因此我怀疑即使注释很好结果也不会等于预期,这不仅仅是 Ghostscript,我得到类似的结果保存为 MSpaint 的 256 色输出
等实际上它的颜色“抖动”。
我也尝试过将一个管道传输到另一个管道但没有成功,因为 GS 应该输入管道数据,而 MuTool 可以输出到管道,但是遇到了问题,很可能是由于我通过测试不同的调用破坏了 GS(小心不小心覆盖了 exe ) 我放弃了尝试,正如我们所见,在这种情况下似乎不值得追逐。
最后,我对 最安全 最短命令进行了试验,我们目前只剩下 mutool 1023 种颜色,需要另一个命令行工具才能将这些颜色降低到每像素 8 位颜色。
mutool draw -o"out.png" -r 300 "69846382 annots not printing in GS png.pdf"
irfanview / gimp / other image converter
另一种方法是使用可以读取 pdf 并输出 8 bpp 而无需抖动的图形包,结果很像这样尝试右键单击下载
我正在将 PDF 页面转换为图像,并且工作正常,我遇到的问题是它遗漏了 PDF 页面上的评论或注释。
当我使用 TIFF 格式时,它会保留它们,但当我输出为 PNG 时,它会删除它们。
如何保存它们?
这是我用来转换 PDF 的代码:
function Convert-pdf {
param (
$PDF_Output, # Output path where converted PDF files will be stored
$path_to_pdf,
$PNG_Output # Output path where the PNG files will be saved
)
#Path to your Ghostscript EXE
$tool = 'C:\Program Files\gs\gs9.55.0\bin\gswin64c.exe'
$pdf = get-item $path_to_pdf
$png = $PNG_Output + $pdf.BaseName + "%03d" + ".png"
if(test-path $png)
{
"png file already exists " + $png
}
else
{
'Processing ' + $pdf.Name
$param = "-sOutputFile=$png"
& $tool -q -dNOPAUSE -sDEVICE=png256 $param -r300 $pdf.FullName -c quit
}
Move-Item $pdf $PDF_Output
return $png
}
当我将 png256
更改为 tiff64nc
时,它会显示 PDF 上的注释,否则不会显示它们。
编辑:我使用的是 GS 版本 9.55.0
这是我通过代码输入的 pdf 的示例图像:
这是我得到的输出:
如果你想自己测试,这里是文件:
在回答您的问题时,您发现 Artifex GhostScript 不会打印这些注释,但是它们可以在 Artifex MuPDF 中查看。
奇怪的是,您可以通过 Artifex Mutool 转换 pdf 文件。最快的方法是直接转换为 PNG:-
mutool convert -O resolution=300,colorspace=rgb -o output-rgb.png "69846382 annots not printing in GS png.pdf"
注意 colorspace=rgb 不限于 256 色。在您的情况下,有或没有该选项,源 5 种颜色的输出取决于其他因素,但您的文件默认为 1238 AA 颜色。
我们可以使用较短的绘制命令得到类似的结果,如果不相同的话
mutool draw -o output-rgb.png -r 300 -c rgb "69846382 annots not printing in GS png.pdf"
我尝试了几十个选项来使用 mutool 以 GS 用来输出 256 色(和注释)的 pdf 格式重建 pdf,但取得了不同程度的成功,(尽管我有一些不错的选择,如 SVG)。您可以尝试不同的转换路径和选项,但此处的结果似乎非常相似。
如果您确实需要 256 种颜色,您可以将 png 回馈到 pdf 中,然后将其提交给 GS,以便我们获得您想要的最大 256 种颜色(在本例中为 101 种颜色),但稍后会看到更短的选项。
所以总共要获得 256 种最大颜色,您需要 3 行使用 shell path\variables 并注意多页 %d 值。
mutool draw -o "out-draw.png" -r 300 "69846382 annots not printing in GS png.pdf"
mutool draw -o "out-draw.pdf" "out-draw.png"
gswin64c -o "GSout256.png" -sDEVICE=png256 -r300 "out-draw.pdf"
和 因为通用格式处理类似于 PS 图形,分两步使用它可以得到更快的结果。
mutool draw -o "out-draw.ps" -r 300 "69846382 annots not printing in GS png.pdf"
gswin64c -o "GSout256.png" -sDEVICE=png256 -r300 "out-draw.ps"
但是双图像输入输出过程的结果比预期的“波纹”
我也尝试过将一个管道传输到另一个管道但没有成功,因为 GS 应该输入管道数据,而 MuTool 可以输出到管道,但是遇到了问题,很可能是由于我通过测试不同的调用破坏了 GS(小心不小心覆盖了 exe ) 我放弃了尝试,正如我们所见,在这种情况下似乎不值得追逐。
最后,我对 最安全 最短命令进行了试验,我们目前只剩下 mutool 1023 种颜色,需要另一个命令行工具才能将这些颜色降低到每像素 8 位颜色。
mutool draw -o"out.png" -r 300 "69846382 annots not printing in GS png.pdf"
irfanview / gimp / other image converter
另一种方法是使用可以读取 pdf 并输出 8 bpp 而无需抖动的图形包,结果很像这样尝试右键单击下载