我想将PDF转换为JPEG:
$ convert pdf-test.pdf pdf-test.pdf.jpg
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
convert: Postscript delegate failed `pdf-test.pdf': No such file or directory @ error/pdf.c/ReadPDFImage/664.
convert: missing an image filename `pdf-test.pdf.jpg' @ error/convert.c/ConvertImageCommand/3015.
Run Code Online (Sandbox Code Playgroud)
目前我在Mac OS X Lion上使用此版本的GS和ImageMagick:
$ gs -v
GPL Ghostscript 9.02 (2011-03-30)
Copyright (C) 2010 Artifex Software, Inc. All rights reserved.
$ convert -version
Version: ImageMagick 6.7.1-1 2011-07-21 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features: OpenMP
Run Code Online (Sandbox Code Playgroud)
有人可以开导我这个吗?
我想有效地将多页pdf转换为单页图像.
我已经知道如何使用imagemagick一次执行此页面.例如,
convert x.pdf[2] x3.jpg
Run Code Online (Sandbox Code Playgroud)
将给我作为图像的PDF格式的第3页.因此,如果我使用识别来确定 pdf中有多少页面,那么我可以循环并将pdf中的所有页面转换为图像.然而,这种方法可能需要一段时间.例如,15页的pdf可能需要15-30秒.
根据我在其他地方(也在imagemagick论坛上)看到的答案,以下imagemagick命令应该将pdf分成多个图像.
convert x.pdf x-%0d.jpg
Run Code Online (Sandbox Code Playgroud)
但所有这一切最终都是创建名为x-0.jpg的第一页
作为替代方案,我尝试使用具有突发功能的pdftk.我在那里遇到的问题是爆炸在所有情况下都不起作用.它适用于某些pdf,而不适用于其他一些.
关于如何改进事物的任何建议都会有所帮助.
我的操作系统是Mac OSX Lion,但我确实需要在CentOS 6上运行.
背景:
我有PDF,我是以编程方式生成的.我需要能够从服务器直接将PDF发送到打印机(而不是通过中间应用程序).目前我可以完成上述所有操作(生成PDF,发送到打印机),但由于字体未嵌入PDF中,因此打印机正在进行字体替换.
生成时为什么不嵌入字体:
我正在使用SQL Reporting Services 2008创建PDF .SQL Reporting Services存在一个已知问题,即它不会嵌入字体(除非满足一系列要求 - http://technet.microsoft.com/en-us/library /ms159713%28SQL.100%29.aspx).不要问我为什么,PDF符合MS列出的所有要求,并且字体仍然显示为未嵌入 - 没有真正控制字体是否嵌入,所以我已经接受这不起作用并继续前进.Microsoft提供的建议解决方法(http://blogs.msdn.com/b/donovans/archive/2007/07/20/reporting-services-pdf-renderer-faq.aspx "何时将使用Reporting Services进行字体嵌入")是发布处理PDF以手动嵌入字体.
目标 获取已生成的PDF文档,以编程方式"打开"它并嵌入字体,重新保存PDF.
方法 我指向iTextSharp,但大多数示例都是针对Java版本的,我在转换到iTextSharp版本时遇到问题(我找不到任何iTextSharp文档).
我正在撰写这篇文章以了解我需要做的事情:Itext将字体嵌入PDF中.
但是对于我的生活,我似乎无法使用ByteArrayOutputStream对象.它似乎无法找到它.我已经研究过并且研究过但似乎没有人说出它在哪个类或我找到它的位置所以我可以将它包含在using语句中.我甚至破解了开放的Reflector,似乎无法在任何地方找到它.
这是我到目前为止,它编译等等.(结果是我生成的PDF的字节[]).
PdfReader pdf = new PdfReader(result);
BaseFont unicode = BaseFont.CreateFont("Georgia", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
// the next line doesn't work as I need a ByteArrayOutputStream variable to pass in
PdfStamper stamper = new PdfStamper(pdf, MISSINGBYTEARRAYOUTPUTSTREAMVARIABLE);
stamper.AcroFields.SetFieldProperty("test", "textfont", unicode, null);
stamper.Close();
pdf.Close();
Run Code Online (Sandbox Code Playgroud)
那么有人可以帮我使用iTextSharp将字体嵌入PDF或指向正确的方向吗?
我非常乐意使用除iTextSharp之外的任何其他解决方案来完成此目标,但它需要是免费的,并且能够被企业用于内部应用程序(即Affero GPL).
我尝试用Ghostscript拆分多页PDF,我在更多网站甚至ghostscript.com上找到了相同的解决方案,即:
gs -sDEVICE=pdfwrite -dSAFER -o outname.%d.pdf input.pdf
Run Code Online (Sandbox Code Playgroud)
但它似乎对我不起作用,因为它生成一个文件,包含所有页面,名称为outname.1.pdf.
当我添加起始页和结束页时,它工作正常,但我希望它在不知道这些参数的情况下工作.
在gs-devel存档中,我找到了一个解决方案:http:
//ghostscript.com/pipermail/gs-devel/2009-April/008310.html - 但我觉得没有这样做pdf_info.
例如pswrite,当我使用不同的设备但是相同的参数时,它可以正常工作,产生尽可能多的ps文件,就像我的
input.pdf所包含的那样.
使用时这是正常的pdfwrite吗?难道我做错了什么?
我有一个100页的PDF大约50 MB.我正在运行下面的脚本,它每页大约需要23秒.PDF是纸质文档的扫描.
gswin32.exe -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.3
-dPDFSETTINGS=/screen -sOutputFile=out4.pdf 09.pdf
Run Code Online (Sandbox Code Playgroud)
有什么办法可以加快速度吗?我已经确定-dPDFSettings=/screen是什么让它如此缓慢,但如果没有它我就没有得到良好的压缩......
更新:
好的我尝试将其更新为下面的内容.我-c 30000000 setvmthreshold正确使用该部分吗?
gswin32.exe -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.3
-dPDFSETTINGS=/screen -dNumRenderingThreads=2 -sOutputFile=out7.pdf
-c 30000000 setvmthreshold -f 09.pdf
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个Linux命令行工具来比较两个PDF文件并将差异保存为PDF文件.该工具应该在批处理过程中创建diff-pdf.PDF文件是构建计划,因此纯文本比较不起作用.
就像是:
<tool> file1.pdf file2.pdf -o diff-out.pdf
Run Code Online (Sandbox Code Playgroud)
我找到的大多数工具都将PDF转换为图像并进行比较,但只能使用GUI.
任何其他解决方案也欢迎.
我很难将ImageMagick identify用于识别PDF作为CMYK.
基本上,假设我正在构建此文件test.tex,使用pdflatex:
\documentclass[a4paper,12pt]{article}
%% https://tex.stackexchange.com/questions/13071
\pdfcompresslevel=0
%% http://compgroups.net/comp.text.tex/Making-a-cmyk-PDF
%% ln -s /usr/share/color/icc/sRGB.icm .
% \immediate\pdfobj stream attr{/N 4} file{sRGB.icm}
% \pdfcatalog{%
% /OutputIntents [ <<
% /Type /OutputIntent
% /S/GTS_PDFA1
% /DestOutputProfile \the\pdflastobj\space 0 R
% /OutputConditionIdentifier (sRGB IEC61966-2.1)
% /Info(sRGB IEC61966-2.1)
% >> ]
% }
%% http://latex-my.blogspot.com/2010/02/cmyk-output-for-commercial-printing.html
%% https://tex.stackexchange.com/questions/9961
\usepackage[cmyk]{xcolor}
\begin{document}
Some text here...
\end{document}
Run Code Online (Sandbox Code Playgroud)
如果我然后尝试识别生成的test.pdf文件,我将其作为RGB,无论我尝试过什么选项(至少根据源中的链接) - 然而,其中的颜色将保存为CMYK; 对于上面的来源:
$ grep -ia 'cmyk\|rgb\| k' test.pdf
0 0 0 1 k …Run Code Online (Sandbox Code Playgroud) 需要一个基于Java的解决方案,或者最糟糕的是,需要Linux的命令行.
我试着使用Ghostscript:
gs -sDEVICE=pdfwrite -dPDFA -dBATCH -dNOPAUSE -dUseCIEColor \
-sProcessColorModel=DeviceCMYK -sPDFACompatibilityPolicy=1 \
-sOutputFile=downgraded.pdf leon_range_my12_w22_brochure.pdf
Run Code Online (Sandbox Code Playgroud)
但是我犯了很多错误......
我正在使用ubuntu 10.10并且我安装了ghost脚本.我需要做的是从我的PDF中提取一个页面,然后将该页面转换为jpg.目的是创建一个PDF预览器....
以下是我发现的一些设置,适用于windows版本的ghostscript将整个内容转换为jpg.它不会让我隔离一页,而这正是我所需要的.
-dBATCH ^
-dNOPAUSE ^
-dSAFER ^
-sDEVICE=jpeg ^
-dJPEGQ=30 ^
-r72x72 ^
-sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
/path/to/pdffile.pdf
Run Code Online (Sandbox Code Playgroud)
然后我需要将它写入我的PHP库,以便我可以运行像这样的函数 $img_src = pdf::preview('test.pdf', $page=1);
有没有人对此有任何想法?
谢谢
ESP Ghostscript 815.02(2006-04-19)版权所有(C)2004 artofcode LLC,Benicia,CA.版权所有.本软件不附带任何担保:有关详细信息,请参阅PUBLIC文件.
我已经扫描了一些600 dpi,~9.36x12.67英寸的材料,并以PostScript(PS)格式编写.
现在,当我尝试使用Ghostscript(GS)将PS转换为PDF时,我得到剪辑输出,因为我假设GS的默认页面大小设置为A4.我在这里找到了GS的可用模板:http://www.ghostscript.com/doc/9.06/Use.htm#Known_paper_sizes但没有一个与我的PS文件的尺寸紧密匹配,所以:
我可以指示GS输出自定义大小,如果是这样,如何?
-sPAPERSIZE 指令似乎只接受预定义的模板名称,如链接文档中所示.
ghostscript ×10
pdf ×8
imagemagick ×3
linux ×3
c# ×1
cmyk ×1
comparison ×1
itextsharp ×1
java ×1
jpeg ×1
php ×1
postscript ×1