虽然我能够将PDF的特定页面转换为PNG,如下所示:
gs \
-dSAFER \
-dBATCH \
-dNOPAUSE \
-sDEVICE=png16m \
-dGraphicsAlphaBits=4 \
-sOutputFile=gymnastics-20.png \
-dFirstPage=20 \
-dLastPage=20 \
gymnastics.pdf
Run Code Online (Sandbox Code Playgroud)
我想知道我是否能以某种方式使用ghostscript的JOBSERVER模式来处理几次转换,而不必每次都产生启动ghostscript的成本.
来自:http://pages.cs.wisc.edu/~ghost/doc/svn/Use.htm
-dJOBSERVER定义
\004 (^D)以启动用于与通常在作业服务器下运行的Adobe PS解释程序兼容的新封装作业.-dNOOUTERSAVE如果-dJOBSERVER指定,则忽略该开关,因为作业服务器总是在保存级别下执行输入PostScript,尽管可以使用exitserver运算符从封装的作业中转义并执行,就像-dNOOUTERSAVE指定了一样.这也要求输入来自stdin,否则会导致错误
(Error: /invalidrestore in --restore--).示例用法是:
Run Code Online (Sandbox Code Playgroud)gs ... -dJOBSERVER - < inputfile.ps -or- cat inputfile.ps | gs ... -dJOBSERVER -注意:这
^D不会导致stdin上的文件结束操作,因为它可能会依赖于TBCP(标记二进制通信协议)的某些PostScript打印机导致带外^D信号在流输入数据中发出EOF信号.这意味着stdin上的直接文件操作,例如flushfile和closefile将影响^D流中的数据处理.
我的想法是在进程中运行ghostscript.该脚本将收到对pdf的特定页面的请求,并将使用ghostscript生成指定的图像.我不想每次都启动一个新的ghostscript进程.
我正在尝试使用Ghostscript和/或ImageMagick将Postscript文档的每个页面转换为PNG图像.问题是两者都产生过于饱和的图像(我认为这是正确的术语).
以下是我正在尝试的命令:
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=png16m -dGraphicsAlphaBits=4 -sOutputFile=page_%02d.png brochure.ps
convert brochure.ps im_page_%02d.png
Run Code Online (Sandbox Code Playgroud)
这是输入的Postscript文件(来自上面的brochure.ps)
这是我得到的几个输出图像:
正如您所看到的(特别是在新罕布什尔州绿色地图的页面上),输出PNG的颜色太亮/饱和.如何防止颜色变化太多并获得更准确的转换?
当您在其中打开Postscript文件时,在OS X 10.6中预览会自动执行非常准确的 PNG 转换.这让我相信只有一些东西与ghostscript转换ps-> png的方式相混淆(我相当自信ImageMagick只是这个操作的ghostscript的包装器).我应该使用除ghostscript之外的工具吗?
注意:正如pipitas指出的那样,颜色的可见差异因操作系统而异.在OS X 10.6中非常明显,但在Windows XP中显然不是很明显.
OpenOffice Writer无法链接到ASCII文本源文件,应用语法突出显示,将其包装在帧中,并在源文件更改时更新帧内容.但是,OpenOffice Writer可以链接到图像,并在更改时自动更新图像.
图像需要是高分辨率(300 dpi或更高),语法着色适合白色背景(即打印页面).
如何从源代码文件自动创建高质量图像,例如:
大多数尝试都是以下主题的变体:
$ enscript --color -f Courier12 -B -1 --highlight=sql -h -o - source.sql |\
convert - -trim -border 10 source.png
Run Code Online (Sandbox Code Playgroud)
这种方法存在一些问题:
-resample并且-density没有改进).Courier100生成几个.png文件,需要将它们拼接在一起.-border 10意外更改背景颜色从白色到浅灰色.将源文件转换为PostScript - 完全避免使用ImageMagick - 然后将它们导入GIMP将产生所需的结果.不幸的是,该解决方案涉及一些手动工作,我的GIMP批处理编程经验几乎为零.
syntax-highlighting imagemagick openoffice-writer ghostscript enscript
我正在尝试将pdfs转换为tiff图像以用于跟随OCR.我使用"-density 300x300 -depth 8"作为参数.第一个问题是从500 KB pdf文件我得到72 MB的tiff文件.第二个问题是导致OCR失败的结果图像质量差.在这里你可以自己看.Adobe Acrobat reader生成(打印)tiff图像:

ImageMaggick tiff图片:

差异很大.如何使用ImageMaggick获得与Adobe生成的图像一样好的效果?不是tiff neccesary,其他格式也会很好.
UPD:我发现'antialias'选项.现在它好多了.但仍然是OCR结果不如Adobe版本那么准确.
我正在尝试将PDF转换为PCL(使用ghostscript,但我很乐意听到其他建议),并且每个驱动程序(ghostscript设备),包括所有内置函数和gutenprint生成的PCL文件比输入大许多倍PDF.(这是问题 - 我需要我的PCL与输入一样小).
鉴于文本没有显示在PCL文件中,我猜Ghostscript正在栅格化文本.有没有办法阻止GS一般,或只是gutenprint,这样做?我宁愿让它嵌入字体,或者甚至不嵌入字体(留给打印机渲染字体)?
不幸的是,似乎没有关于这一点的任何文件.
我正在使用"pdftops"将.pdf文件转换为.ps文件,然后使用"ps2pdf"转换为反向过程(poppler-utils).问题是,当从.ps文件创建.pdf文件时,文本看起来没问题,但是当我尝试复制它时,字符非常奇怪(就像它们被破坏一样).我在其他文件上使用这些工具很长一段时间,它工作正常.我还尝试了"pdftohtml -xml"来创建.xml文件,文本正常(字符被正确提取).
编辑:输出"pdffonts original.pdf"

输出"roundtripped.pdf"

我有一个ghostscript命令,可以将pdf转换为几个PNG图像(每页一个).命令参数如下:
-dNOPAUSE -q -r300 -sPAPERSIZE=a4 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -dUseTrimBox -sDEVICE=png16m -dBATCH -sOutputFile="C:\outputfile%d.png" -c \"30000000 setvmthreshold\" -f "C:\inputfile.pdf"
Run Code Online (Sandbox Code Playgroud)
pdf在Adobe Reader中显示为常规A4页面,但在PNG图像中它变得很大(例如2480乘3507像素).
如果我将ghostscript命令中的分辨率更改为-r110页面大小是正确的,但图像质量是非常rastorized.
还有另一种方法可以在不影响图像尺寸的情况下提高图像质量吗?
谢谢
我必须将给定的PDF从A4(210mm*297mm)更改为216mm*303mm。
每个尺寸的额外6毫米应设置为每边3毫米的白色边框。PDF页面的原始内容应在输出页面上居中。
我尝试了convert:
convert in.pdf -bordercolor "#FFFFFF" -border 9 out.pdf
Run Code Online (Sandbox Code Playgroud)
这恰好为我提供了所需的结果,但是我失去了PDF中原始图像的清晰度。一切都是模糊的。
我也检查过
convert in.pdf out.pdf
Run Code Online (Sandbox Code Playgroud)
完全没有任何变化,但是也弄乱了图像。
所以我尝试了Ghostcript,但没有得到任何结果。到目前为止,我发现最好的方法是:
gs -sOutputFile=out.pdf -sDEVICE=pdfwrite -g6120x8590 \
-c "<</Install{1 1 scale 8.5 8.5}>> setpagedevice" \
-dNOPAUSE -dBATCH in.pdf
Run Code Online (Sandbox Code Playgroud)
但是我收到错误:--type在-。postinstall--中。
我碰到了一个奇怪的问题,我无法以任何方式解决这个问题,我希望有人能够更好地理解这些错误;
我无法使用RWebLogo包 - 甚至运行最简单的示例,因为同样缺少Ghostscript错误.
例如跑步:
library(RWebLogo)
aln <- c('CCAACCCAA', 'CCAACCCTA', 'AAAGCCTGA', 'TGAACCGGA')
weblogo(seqs=aln, file.out='mylogo.pdf')
Run Code Online (Sandbox Code Playgroud)
抛出此错误:
Traceback (most recent call last):
File "/Library/Frameworks/R.framework/Versions/3.1/Resources/library/RWebLogo/extdata/weblogo-3.3/weblogo", line 71, in <module>
weblogolib._cli.main()
File "/Library/Frameworks/R.framework/Versions/3.1/Resources/library/RWebLogo/extdata/weblogo-3.3/weblogolib/_cli.py", line 82, in main
formatter(data, format, opts.fout)
File "/Library/Frameworks/R.framework/Versions/3.1/Resources/library/RWebLogo/extdata/weblogo-3.3/weblogolib/__init__.py", line 757, in pdf_formatter
gs = GhostscriptAPI()
File "/Library/Frameworks/R.framework/Versions/3.1/Resources/library/RWebLogo/extdata/weblogo-3.3/weblogolib/__init__.py", line 196, in __init__
raise EnvironmentError("Could not find Ghostscript on path."
EnvironmentError: Could not find Ghostscript on path. There should be either a gs executable or a gswin32c.exe on your system's path
Run Code Online (Sandbox Code Playgroud)
我在终端中安装了ghostscript …
该主题询问如何使用Ghostscript 将多页PDF转换为多页 TIFF;
但是,我想将多页PDF转换为多页单页 TIFF:PDF中的每个页面都应转换为单个TIFF文件.所以上面的答案并不完全符合我的需要.
我怎样才能做到这一点?
我使用的是Windows XP.
ghostscript ×10
pdf ×5
imagemagick ×4
converter ×2
postscript ×2
tiff ×2
adobe-reader ×1
bash ×1
command-line ×1
enscript ×1
multipage ×1
png ×1
r ×1