标签: ghostscript

有没有办法将嵌入 pdf 的图像从 jpg/gif/whatever 转换为 png 或 gif?

问题的最大部分在标题中......

我有由串联扫描文档制成的大型 pdf 文件,这些文件类似于新闻文章:文本+图像。重要的是文字,不是图片……

这就是为什么我想(根据这篇文章)将pdf中的所有图像压缩为png或gif......

感谢您的所有建议,我已经花了太多时间来尝试优化我的 Ghostscript 命令行选项 :-p

仅供参考,我当前的 Ghostscript 9.14 命令行在生产中:

gs -q -sDEVICE=pdfwrite \
   -dSAFER -dNOPAUSE -dBATCH -dQUIET -dPDFSETTINGS=/ebook \
   -dColorImageResolution=150 -dGrayImageResolution=150 -dMonoImageResolution=800 \
   -dPreserveOPIComments=false -dPreserveOverprintSettings=false \
   -dUCRandBGInfo=/Remove -dProcessColorModel=/DeviceRGB -dMaxInlineImageSize=0 \
   -dDetectDuplicateImages=true -dFastWebView=false -dUseFlateCompression=true \
   -dAutoFilterGrayImages=false -dAutoFilterColorImages=false \
   -dColorImageDownsampleThreshold=1.2 \
   -sOUTPUTFILE=/tmp/screen_20140602103745.pdf \
   -c "512000000 setvmthreshold /QFactor 0.80 /Blend 1 /ColorTransform 1 /HSamples [2 1 1 2] /VSamples [2 1 1 2]" \
   -f /usr/bases/dicodrp/pdf/pdf_concatenes/20140602103745.pdf
Run Code Online (Sandbox Code Playgroud)

我得到了大约 40% 的压缩率和一些可读性,但我认为我可以通过更改图像压缩类型来提高可读性(我得到了嘈杂的 jpg 伪像......)

不,我无法增加 dpi,因为这会增加文件大小...:-)

compression pdf png jpeg ghostscript

5
推荐指数
0
解决办法
918
查看次数

Tess4J - 在资源路径中找不到本机库 (linux-x86-64/libtesseract.so)

我正在使用 Tess4J(Tesseract 的 JNA 包装器),并尝试tess.doOCR(myFile)从单页 PDF 调用 OCR 文本。

我安装了 GhostScript(通过使用yum install ghostscript),gs -h工作正常。

我的应用程序服务器正在使用64-bit JVM,并且我有gsdll64.dll,以及 64 位 tesseract dll 的liblept168.dlllibtesseract302.dll在类路径中。

tess.doOCR(myFile)调用时,会记录以下内容:

GPL Ghostscript 8.70 (2014-09-22)
Copyright (C) 2014 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
Run Code Online (Sandbox Code Playgroud)

但随后就到此为止了。该计划不再继续。

更新 -

看起来真正的问题来自这个错误:

java.lang.UnsatisfiedLinkError: Unable to load library 'tesseract': Native …

pdf tesseract ghostscript tess4j

5
推荐指数
2
解决办法
2万
查看次数

在linux中使用命令行获取灰度图片的“文本”边界框的坐标

正如标题所说。

严格来说,我为灰度图像定义的“文本”边界框是一组 4 个坐标(x、y、x+宽度、y+高度),它们必须在该图像中定义一个矩形区域,该区域具有最大数量的矩形区域。非白色像素,同时尽可能少的白色像素(不改变非白色像素的最大数量)。我将文本放在引号中,因为图像实际上并不包含文本,因为图像只包含带有颜色的像素。

在我的 Ubuntu 中安装 ImageMagick 并在终端中输入命令:$convert input.png -trim ouput.png,我得到:

输入.png

输出.png

在网络浏览器的新选项卡中打开这两个图像,您将了解它们的区别,并且您还将了解我定义的“文本”边界框。output.png 实际上具有我正在寻找的宽度和高度。我不知道如何获取 x 和 y 坐标。

这里提供的 pdf 页面的答案 (1)不符合我的标准,因为 gs 给我的“文本”边界框有很大的白边距(实际上据我所知,gs 定义为“文本”边界框的内容) pdf 与我对图片的“文本”边界框的定义不同)。

linux bash imagemagick ghostscript superuser

5
推荐指数
1
解决办法
1241
查看次数

当 -dNumRenderingThreads > 1 时,Ghostscript 9.18 (gswin64c.exe) 崩溃

我在将多页 pdf 转换为 tiff 时遇到以下问题:

gswin64c.exe -dNumRenderingThreads=8 -dQUIET -dNOPAUSE -dBATCH -sDEVICE=tiffscaled -sCompression=g4 -r300 -o out.tiff in.pdf
Run Code Online (Sandbox Code Playgroud)

in.pdf是带有嵌入图像(即扫描页)的多页 pdf。

从命令行运行时(“gswin64c.exe 停止工作”),在我的 Windows 64 位环境中,命令崩溃(但并不总是在同一页面上),没有 STDERR 写入控制台。我使用最新的 Ghostscript 版本(9.18)。

仅当我使用-dNumRenderingThreads=1.

这可能是什么原因?

编辑:在版本 9.15 中,转换运行良好,从 9.16 开始,它不再工作。

系统日志错误条目显示:

Faulting application name: gswin64c.exe, version: 0.0.0.0, time stamp: 0x56123d41
Faulting module name: gsdll64.dll, version: 0.0.0.0, time stamp: 0x56123d3d
Exception code: 0xc0000005
Fault offset: 0x000000000007b930
Faulting process id: 0x197c
Faulting application start time: 0x01d16325677e4e24
Faulting application path: C:\Program Files\gs\gs9.18\bin\gswin64c.exe
Faulting module path: C:\Program …
Run Code Online (Sandbox Code Playgroud)

pdf tiff ghostscript

5
推荐指数
1
解决办法
1667
查看次数

Ghostscript:为什么我必须提供 pdfa_def.ps 才能进行 PDF/A 转换?

Ghostscript 有描述如何创建 PDF/A 的文档。我知道该怎么做。

我不明白的是为什么这个过程是必要的。尤其:

  • 为什么必须指定输出 ICC 配置文件 ( -sOutputICCProfile)?不能从颜色转换策略或印刷色模型的选择中推断出默认值吗?
  • 为什么我必须在 中提供输出 ICC 配置文件的完整PDFA_def.ps文件路径?如果没有指定路径,为什么 Ghostscript 不能假设我指的是它自己的 ICC 配置文件之一?
  • 为什么我必须同时指定 ICC 配置文件路径和 ICC 配置文件的 /OutputConditionIdentifier?一个不能从另一个获得吗?
  • 为什么我必须提供pdfa_def.ps看起来像 Ghostscript 在大多数情况下可以生成的样板文件并具有合理的默认值?(/DOCINFO 块可以通过命令行传递;ICC 配置文件块似乎是根据命令行参数自行生成的;输出意图字典只需要 Ghostscript 已经知道的颜色配置文件名称。)

就此而言,颜色转换适用于文档中的图像还是仅适用于 Postscript 绘图?

pdf ghostscript

5
推荐指数
1
解决办法
2502
查看次数

在Windows .bat文件中使用ghostscript将多个pdf文件转换为png

我的目录中有很多pdf文件,我需要将其从pdf转换为png。目前,我正在使用 ImageMagick 命令: magick mogrify -format png *.pdf

因为文件太多,我想直接使用 Ghostscript,因为有多个来源表明这样做可以减少 75% 的处理时间。

但是,我很难找到一个干净的 dos 命令示例来完成与上面的 ImageMagick 命令相同的事情。我相信我需要执行 gswin64c.exe 模块,但我不确定如何执行此操作来完成我需要完成的任务。有人能给我提供一个干净的 Ghostscript 示例来完成我在 ImageMagick 中所做的事情吗?

file imagemagick ghostscript pdf-conversion

5
推荐指数
1
解决办法
3339
查看次数

鬼脚本 | 不可恢复的错误,退出代码 1

我有一个 shell 脚本,我一直用它来合并 PDF,在今天之前,它似乎工作得很好。

现在,当我运行时,我收到消息:GPL Ghostscript 9.06:不可恢复的错误,退出代码 1

它会生成一个空白 PDF,而不是合并的 PDF。这是我的代码:

<?php

$pdf1 = "file_1.pdf";
$pdf2 = "file_2.pdf";


$fileArray= array($pdf1,$pdf2);


$datadir = "/usr/pdf_merge/merged";
$outputName = $datadir."merged_new.pdf";

$cmd = "gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$outputName ";
//Add each pdf file to the end of the command
foreach($fileArray as $file) {
    $cmd .= $file." ";
}
$result = shell_exec($cmd);
Run Code Online (Sandbox Code Playgroud)

有什么想法可能是错的吗?

我在 Debian 上运行 Apache。

谢谢

php apache debian ghostscript

5
推荐指数
1
解决办法
1万
查看次数

如何使ghostscript从postscript文件输出单个特定页面作为png?

我正在尝试将ghostscript用于其预期目的,以解释postscript文件和输出png.我想要一个命令,将单个特定页面从多页ps文件转换为单个png.我已经在infile是pdf文件的情况下完成了这个,但是当infile是ps时却没有.

此行将ps转换为由连接的png文件组成的文件.

gs -dSAFER -dBATCH -sDEVICE=png256 -r96x96 -sOutputFile=out.png in.ps

这将从pdf中获取单个特定页面并将其转换为png.

gs -q -dSAFER -dBATCH -dFirstPage=2 -dLastPage=2 -sDEVICE=png256 -SOut=fileout.png in.pdf

简单地将dFirstPage=标志放在后脚本输入案例中什么都不做.输出与标志不存在的输出相同.

linux postscript ghostscript

4
推荐指数
2
解决办法
4081
查看次数

PDF格式的Ghostscript合并导致方向翻转

PDF格式的Ghostscript合并导致方向翻转

我正在使用与此问题类似的方法: 如何将两个postscript文件合并在一起?

在合并的PDF上,每对页面都颠倒翻转.我还没有看到它在其他任何地方提到过这种症状.合并一个麻烦的pdf仍然有颠倒的方向.

@echo off
REM FILE: merge.bat

call :merge 1 155 out.pdf
pause
goto :eof

REM MERGE PDFs
REM @param # of first file in sequence
REM @param # of last file in sequence
REM @param new file of merged pdf
goto :eof
:merge
SET START=%1
SET END=%2
SET OUT=%3
echo START=%START%
echo END=%END%
echo OUT=%OUT%
echo.
SET CMD="c:\Program Files\gs\gs9.01\bin\gswin32c.exe"
SET INPUT_DIR=c:\input
SET CMD_ARGS=args.bat
echo Generating args file...
(echo.|set /p="-dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=%OUT% ") > %CMD_ARGS%
for …
Run Code Online (Sandbox Code Playgroud)

pdf ghostscript

4
推荐指数
1
解决办法
4912
查看次数

Ghostscript灰度转换仍然包含颜色?

如果它包含颜色,我需要转换灰度的pdf.为此,我找到了一个脚本,可以确定pdf是否已经是灰度级.

convert "source.pdf" -colorspace RGB -unique-colors txt:- 2> /dev/null \
   | egrep -m 2 -v "#([0-9|A-F][0-9|A-F])\1{3}" \
   | wc -l
Run Code Online (Sandbox Code Playgroud)

这会计算文档中存在多少种具有不同RGB值的颜色(因此它们不是灰色的).

如果pdf不是灰度文档,我继续使用ghostscript进行转换

gs \
  -sOutputFile=temp.pdf \
  -sDEVICE=pdfwrite \
  -sColorConversionStrategy=Gray \
  -dProcessColorModel=/DeviceGray \
  -dCompatibilityLevel=1.4 \
  -dNOPAUSE \
  -dBATCH \
   source.pdf < /dev/null
Run Code Online (Sandbox Code Playgroud)

如果我用PDF查看器打开输出文档,它会正确显示没有颜色.但是如果我在新生成的文档上尝试第一个脚本,结果证明它仍然包含一些颜色.如何将文档转换为精确灰度?我需要这个,因为如果我用彩色打印机打印这个文件,打印机将使用颜色而不是黑色打印灰色.

pdf imagemagick ghostscript grayscale

4
推荐指数
2
解决办法
4797
查看次数