我需要从扫描仪中的一堆多页PDF文件中提取TIFF图像.在扫描期间,我指定了600dpi的分辨率.
这是我用来生成TIFF图像的代码:
gs -q -dNOPAUSE -sDEVICE=tiffg4 \
-sOutputFile=a_page%02d.tif a.pdf -r600x600 -c quit
Run Code Online (Sandbox Code Playgroud)
这给了我正确数量的TIFF图像,但图像尺寸小于我的预期.
无论我如何更改-r选项,输出图像都具有相同的大小.
这里发生了什么?
输出TIFF图像有一些压缩,我应该如何更改gs选项,使它们不包含任何压缩?
http://pages.cs.wisc.edu/~ghost/doc/cvs/Devices.htm#TIFF 有几个选项可供选择,但在我看来,没有人的意思是"8位黑白"+"无压缩".
有人如何解决这两个问题?
我想知道鬼本?我已经看到一些软件需要它,比如可爱的 pdf 等。它实际上是做什么的?为什么使用它?
提前致谢!!
我尝试将 PDF 转换为 PNG,但输出图像始终为 A4,但是源 PDF 非常大。这是我的命令:
-dNOPAUSE ^
-dBATCH ^
-dSAFER ^
-sDEVICE=png16m ^
-dFirstPage=1 ^
-sOutputFile="D:\PDF.png" ^
"D:\PDF.pdf" ^
-sPAPERSIZE=a1
Run Code Online (Sandbox Code Playgroud)
我尝试了几个选项(-r、-g、-sDEFAULTPAPERSIZE),但都没有奏效。
如何强制输出图像尺寸?
PS:我的PDF文件
我正在使用 Ghostscript 通过命令行参数打印 PDF。但它在打印机后台处理程序中将打印文档的名称显示为 Ghostscript 输出。我想将其更改为自定义名称(作为字母名称)。
我正在尝试使用 ImageMagick 在 PC 和 OSX 上将 PDF 转换为 PNG - 但我实际上无法在我的软件将用于其上的任何计算机上安装 GhostScript。
有没有办法将 GhostScript 与 ImageMagick 捆绑在一起,然后将 ImageMagick 的路径重定向到该包,这样我就可以使用它而无需在用户的计算机上正式“安装”它?
我找到了这个页面,但我无法理解如何更改 ImageMagick 中的 delegates.xml 文件以使其正常工作。我认为我必须更改此行的某些部分:
<delegate decode="pdf" encode="eps" mode="bi" command=""@PSDelegate@" -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dEPSCrop -sDEVICE=epswrite "-sOutputFile=%o" -- "%i"" />
Run Code Online (Sandbox Code Playgroud)
但我不知道该怎么做——把路径放在哪里,或者路径应该基于什么——ImageMagick 的位置,或者其他什么?任何帮助将不胜感激。
更新 v1.2:我尝试使用命令行中的可执行文件将上面的委托更改为以下内容:
<delegate decode="pdf" encode="eps" mode="bi" command=""F:\ImageMagickTest\ImageMagick\gs\bin\gswin32c.exe" -q -dQUIET -dPARANOIDSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dEPSCrop -sDEVICE=epswrite "-sOutputFile=%o" -- "%i""/>
Run Code Online (Sandbox Code Playgroud)
但是当我运行程序时,我在 cmd 提示符下收到以下错误:
Microsoft Windows XP [Version 5.1.2600]
Run Code Online (Sandbox Code Playgroud)
(C) 版权所有 1985-2001 Microsoft Corp.
F:\Documents and …Run Code Online (Sandbox Code Playgroud) 我需要您对以下问题的支持,因为它拉了我一段时间。我们有一个小c#实用程序,它PDF使用GhostScript. 此打印按预期进行,但未能保留页面格式。但是,当我Adobe Acrobat代替GhostScript. 所以我认为,我在 GhostScript 的命令行参数上犯了一些明显的错误。
背景
以下是核心 c# 逻辑,它在每个页面上打印具有不同样式的给定 PDF 文件。给定的 PDF 文件有页面;
简而言之,我要打印的 PDF 只不过是许多具有不同字体样式、大小、边距的小型 pdf 文档的合并(将单个 pdf 合并为一个大 pdf)。
问题
以下逻辑用于GhostScript(v9.02)打印 PDF 文件。尽管以下逻辑打印任何给定的 PDF,但它无法保留页面格式,包括页眉、页脚、字体大小、边距、方向(我的 pdf 文件具有横向和纵向的页面)。
有趣的是,如果我使用 acrobat 阅读器打印相同的 PDF,那么它将按预期与所有页面级格式一起打印。
void PrintDocument()
{
var psInfo = new ProcessStartInfo();
psInfo.Arguments =
String.Format(
" -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=1 -sDEVICE=ljet4 -sOutputFile=\"\\\\spool\\{0}\" \"{1}\"",
GetDefaultPrinter(), @"C:\PDFOutput\test.pdf");
psInfo.FileName …Run Code Online (Sandbox Code Playgroud) 我的(网络)应用程序的设置如下:我得到用户上传的PDF文件,在它们上运行OCR并向他们显示OCRed PDF。由于所有内容都在线,因此最小化生成的PDF文件的大小是减少用户加载和等待时间的关键。
我从用户那里收到的文件是sample.pdf(我创建了一个包含原始文件以及在此处生成的文件的存档:https : //dl.dropboxusercontent.com/u/1390155/tess-files/sample .zip)。我使用tesseract 3.04并执行以下操作:
gs -r300 -sDEVICE=tiff24nc -dBATCH -dNOPAUSE -sOutputFile=sample.tiff sample.pdf
tesseract sample.tiff sample-tess -l fra -psm 1 pdf
Run Code Online (Sandbox Code Playgroud)
OCR的结果很好,但是现在生成的PDF的大小约为2.5倍
所以我问你,如何在保持OCR结果的同时减小生成的PDF的大小?
一种明显的解决方案是在生成tiff时降低分辨率,但是我不想这样做,因为它可能会影响OCR结果。
我尝试的第二件事是使用ghostscript减少了tesseract后的PDF大小:
gs -o sample-down-300.pdf -sDEVICE=pdfwrite -dDownsampleColorImages=true \
-dDownsampleGrayImages=true -dDownsampleMonoImages=true \
-dColorImageResolution=300 -dGrayImageResolution=300 \
-dMonoImageResolution=300 -dColorImageDownsampleThreshold=1.0 \
-dGrayImageDownsampleThreshold=1.5 -dMonoImageDownsampleThreshold=1.0 \
sample-tess.pdf
Run Code Online (Sandbox Code Playgroud)
这会有所帮助,生成的文件只有101K,因此约为原始文件的1.5倍。我可以接受,但它似乎也会影响OCR结果。例如,现在缺少“餐厅”和“比萨店”(第二行)之间的空白。
带有ghostscript的另一个(更简单)选项(使用ebook参数)导致PDF文件中的质量较差的43k文件,并且存在缺少空白的相同问题:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dBATCH -dQUIET -sOutputFile=sample-ebook.pdf \
sample-tess.pdf
Run Code Online (Sandbox Code Playgroud)
较低质量的PDF很好,但是我还是不想在OCR上妥协。
我已经使用PNG和JPEG完成了其他测试,但是OCR结果总是下降(甚至略有下降),并且结果PDF不会更小。例如,使用PNG:
convert -density 300 sample.pdf -transparent white sample.png
tesseract sample.png sample-tess-png -l fra -psm 1 pdf
Run Code Online (Sandbox Code Playgroud)
总数(55.50)丢失,最终PDF大小为149k。 …
我一直在尝试将 ghostscript 导入 Python,以便将 pdf 文件转换为 .tiff 格式。
我在 Windows 8 上使用 Python 版本 2.7.10。
我已经使用 pip 成功下载并安装了 ghostscript,它出现在正确的位置 (...\Anaconda\Lib\sitepackages)。我已经确认可以将位于此目录中的其他包导入 Python。
我正在使用命令 import ghostscript
当我这样做时,我收到一条错误消息:
运行时错误:在注册表中找不到 Ghostscript DLL
回溯表明调用文件“ghoscript_init_.py”成功将_gsprint导入为gs。
但是,当导入函数尝试访问“ghostscript_gsprint.py”时,它会产生无法找到 Ghostscript DLL 的运行时错误。
我将不胜感激任何建议或提示。谢谢!
我在我的程序中实现了以下保存功能,它允许用户将他/她用 Turtle 在 Tkinter 画布上绘制的任何内容保存为 JPEG 文件。它的工作原理是首先捕获屏幕和 Tkinter 画布,然后基于它创建一个 postscript 文件。然后它将该 postscript 文件转换为 PIL(Python 成像库)可读文件类型,然后 PIL 将转换后的文件保存为 JPEG。我的保存功能如下所示:
def savefirst():
# Capture screen and Tkinter canvas
cnv = getscreen().getcanvas()
global hen
# Save screen and canvas as Postscript file
ps = cnv.postscript(colormode = 'color')
# Open a Tkinter file dialog that allows to input his.her own name for the file
hen = filedialog.asksaveasfilename(defaultextension = '.jpg')
# Convert Postscript file to PIL readable format
im = Image.open(io.BytesIO(ps.encode('utf-8')))
# Finally save converted …Run Code Online (Sandbox Code Playgroud) ghostscript ×10
pdf ×4
macos ×2
python ×2
c# ×1
imagemagick ×1
ocr ×1
php ×1
postscript ×1
printing ×1
python-3.x ×1
save ×1
tesseract ×1
tiff ×1
windows ×1
xml ×1