PDF图片无损提取器测试结果·PDF相关软件: 电路板测试网-电路板测试 ...

2010年02月08日

  首先,目的是为了从PDF中无损地把里面打包的图片提取出来,{zh0}是”原样”取出。

  在网上查到了PDF格式的特点,发现原样提取是有可能的,而且有手工提取的方法。不过若按这方法提取就太麻烦了,而且我手上没有那种处理超过10MB还不卡的编辑器(方法后附)。

  用”[东方幻彩纪.PDF]“做试验。这是国人小神打包他自己的画作集–这不是重点。我的机子上的PDF要么没图可提,要么太大(80MB以上),这个刚好是10.5MB(11,066,888字节,下面会提到),而且是纯图片无文本的,这表示如果软件是原样提取,所得图片应该稍小于10.5MB。

  以下3个提取器都比较有名。

  1.PDFExtractTIFF 2.0

  VeryPDF.com出品。主程序文件名是pdf2tif.exe,pdf2tif也是这个软件的别名。同时还附带了encryptpdf.dll(PDF Password Remover),似乎是移除PDF保护密码用的。我手上的是Maxkingmax(嬴政天下论坛)汉化xx版。

  首先,这个软件提取出来是无损的tiff图片,而且可以保存为多页tiff(相当于psd那样有多个图层,可以用[ 色彩风暴]查看每一层并另存为,也有[ 工具]提取每个图层)。

  –但,提取出来的太大,居然有近500MB–几乎半G!

  2.Some PDF Image Extract 1.5

  又名PDF2Img,SomePDF.com出品。我用来测试的:汉化者是南方的雨,绿色单文件已xx,配置保存到Settings.ini。

  –但,弹出不支持此品种PDF的提示。呃,等有别的品种PDF再试……(已试,下附)

  3.PDF Image Extraction Wizard 3.0

  简称PdfWiz,公司[RL Vision]。我从网上下载的是名为[PDF_IEW_30-snear]的注册版安装包,不过经我测试可以绿化,7-zip解压即可。汉化者是[Snear]。

  是向导式的界面,一步一步来。让我惊喜的是中间有一步,提示遇到jpg可以原样提取,而遇到无损的可以保存为bmp、png、tiff等等无损格式。

  于是提取之,检查一下提取所得图片的总大小:10.5MB(11,011,913字节,请与上面的数据对比)。

  原样提取,所言不虚。

  于是我又一次逐像素对比图片,发现清晰度与那个半G的一样:一个像素不差!……很显然原本打包的就是jpg,有损jpg再转无损的tiff那一定是悲剧。

  附)PDF2Img:用另一个PDF提取,发觉没有原样提取的选择。输出的jpg压缩率要自己定(已经压缩的jpg再压缩岂非损失更大),即使调到”{bfb}”,实际还是99%有损。输出png倒是无损,不过和”原样提取”差距太大了。

  另外发现,PdfWiz无损提取的png,比PDF2Img的体积要小,而图像质量一样(再一次逐像素对比…)。而pdf2tif,无论如何不管选什么选项都只会比这两者都大,而且一般会大一倍……

  不用说,推荐PdfWiz。有更好的吗?

  2010年2月10日追加:当PDF内嵌的为32位alpha透明png(?)时,似乎没有一个可以原样提取的,全部变成24位。

  几个与PDF相关的软件

  1.反其道而行之,把图片打包成PDF的软件,除了WPS这个免费office外,还有个专用软件FreePic2Pdf([ 马健]作品),据介绍这个软件可以同时保证图片质量(非虚拟打印,而是嵌入)与生成最小体积(”废话”最少)。

  2.原本我没有下载软件合集包的兴趣,习惯分别下载,不过当我看到”小强PDF工具包 1.5″的介绍……

  集PDF阅读、页面管理、编辑、创建、密码xx、word转换六位一体

  集成的PDF软件如下:

  1、Foxit Reader 3.0 Build 1817官方中文注册版

  2、Foxit PDF Page Organizer 2.9.3中文注册版

  3、Foxit PDF Editor 2.1.0中文注册版

  4、TinyPDF 1.0xx版 (注:这是PDF虚拟打印机,drag0n制作的单文件不绿色版–虚拟打印机必须要安装的。)

  5、Advanced PDF Password Recovery 3.00中文xx版 (如非中文,请从Options→Language选项里调一下)

  6、e-PDF To Word Converter 2.5绿色版 (这个转换的word文档效果不错)

  哎……居然都xx好了?于是决定下载这个……这个包似乎是用WinRAR做的自解压,直接解压即可。话说福昕(Foxit)这家公司很强。

  3.PDF Password Remover:也是VeryPDF.com出的,用来xxPDF文件保护的工具,不过不免费,有试用次限(好像是100次?)。

  4.CAJViewer。这是2007.8.11.的介绍:

  ”这是学生朋友们用得比较多的阅读器,因为它不光能查看PDF文件,还能打开一些期刊文件和数字文献资料(准备毕业论文的朋友们尤其需要这个软件)。”

  主页:http://www.cnki.net/software/xzydq.htm

  5.其它的,据2007.7.20.善用佳软(xbeta)在cs72.com的留言:请搜”全面接触pdf”–年代久远不知道参考价值如何(…不要问我怎么看到这留言的)。

  【转】从PDF中提取图片

  昨天在论坛上看到这个帖子

  http://www.phpchina.com/bbs/viewthread.php?tid=443 30&extra=page=1&sid=VU3rbM

  自己弄明白了就发到这里,也是和大家分享学习的一个过程

  PDF中存储的内容是以对象的形式存储的这个可以用editplus打开PDF进行查看,既然是以对象的形式存储,就会有一定的存储格式,提取图片的关键就是查看图片存取的格式

  以下是这个PDF图片存取格式

  8 0 obj //对象名称

  <</Type /XObject //数据类型object

  /Subtype /Image //数据内容是图片

  /Width 111

  /Height 139

  /ColorSpace /DeviceRGB

  /BitsPerComponent 8

  /Filter /DCTDecode

  /Length 4750>>

  stream

  *****

  endstream

  所以提取的关键就是对上面的**内容进行匹配

  这个匹配很简单大家相信都会

  用正则表达式

  1.$img1 = preg_replace(’/(.*)(?<=\/Subtype \/Image)(.*?)(?=stream)(stream)(.*?)(endstream)(.* )/is’,'$4′,$str);

  这是基本的匹配,但是匹配成功之后发现不能显示?怎么回事?我估计是\n搞的鬼,于是将匹配结果用C32Asm打开,发现果然是有0A这个捣蛋鬼,于是改进如下

  1.在上面那句之后加$img1 = substr($img1,1,-1);

  或者直接用以下这句替换:

  $img1 = preg_replace(’/(.*)(?<=\/Subtype \/Image)(.*?)(?=stream)(stream’.”\n”.’)(.*?)(endst ream’.”\n”.’)(.*)/is’,'$4′,$str);

  这个时候数据得到了,如果想保存,这个直接fwrite了

  如果想直接在页面上显示,需要注意发送的头部

  header(’Content-Type: image/jpg’);然后在echo $img1;

  这样做的结果只能提取某一张图片,如果想提取任意一张图片,则需要修改正则表达式,将其中加上对象名称,可以构造函数如下

  function pdf($pdf,$jpg,$obname){

  // $pdf pdf文件名称

  // $jpg 要生成jpg文件名称

  // $obname 图片对象名称如上的8 0 obj

  $fp = fopen($pdf,’rb’);

  $str = fread($fp,filesize($pdf));

  $img = preg_replace(’/(.*)(’.$obname.’(.*?))(?<=\/Subtype \/Image)(.*?)(?=stream)(stream’.”\n”.’)(.*?)(endst ream)(.*)/is’,'$6′,$str);

  fclose($fp);

  $fp = fopen($jpg,’wb’);

  fwrite($fp,$img);

  fclose($fp);

  header(’Content-Type: image/jpg’);

  echo $img;

  }

  pdf(’1.pdf’,'1.jpg’,'8 0 obj’); 最近在美化几个火狐扩展。……似乎还有几处出错。

郑重声明:资讯 【PDF图片无损提取器测试结果·PDF相关软件: 电路板测试网-电路板测试 ...】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——