/ 中存储网

Ubuntu中实现tif格式转换为pdf或者其他各种格式的方法

2015-08-25 22:17:57 来源:中存储网

在做一个OA系统项目中,开发到传真模块,传真数据是通过aofax收发的,现在要把收到的tif文档显示到浏览器上。最好的办法是把tif文档转换成pdf的格式。

步骤如下:

1、运行以下五条代码

sudo aptitude update

sudo aptitude install make php5-cli php5-gd php5-dev php-pear gs-common ghostscript

sudo aptitude remove php5-imagick

sudo apt-get install libmagick9-dev

sudo pecl install imagick   //一旦只安装这个会出问题就把上面四个都安装了

2、在/etc/php5/apache/php.ini中加入extension=imagick.so扩展

3、重启apache,/etc/init.d/apache restart

以上配置完后测试

调用这个函数

private function tif_to_pdf($file_tif,$file_pdf){ 
$errors = array(); 
$cmd_ps2pdf = "/usr/bin/ps2pdfwr"; 
//  $file_tif   = escapeshellarg($file_tif);//escapeshellarg函数用于过滤shell参数  
//  $file_pdf   = escapeshellarg($file_pdf);  
if (!file_exists($file_tif)) $errors[] = "Original TIFF file: ".$file_tif." does not exist"; 
if (!file_exists($cmd_ps2pdf)) $errors[] = "Ghostscript PostScript to PDF converter not found at: ".$cmd_ps2pdf; 
if (!extension_loaded("imagick")) $errors[] = "Imagick extension not installed or not loaded"; 
if (!count($errors)) { 
// 确认文件的基本路径  
$base = $file_pdf; 
if(($ext = strrchr($file_pdf, '.')) !== false) $base = substr($file_pdf, 0, -strlen($ext)); 
// Determine the temporary .ps filepath  
$file_ps = $base.".ps"; 
// 打开原始的.tiff文件  
$document = new Imagick($file_tif); 
// Use Imagick to write multiple pages to 1 .ps file  
if (!$document->writeImages($file_ps, true)) { 
$errors[] = "Unable to use Imagick to write multiple pages to 1 .ps file: ".$file_ps; 
} else { 
$document->clear(); 
// Use ghostscript to convert .ps -> .pdf  
exec($cmd_ps2pdf." -sPAPERSIZE=a4 ".$file_ps." ".$file_pdf, $o, $r); 
if ($r) { 
$errors[] = "Unable to use ghostscript to convert .ps(".$file_ps.") -> .pdf(".$file_pdf."). Check rights. "; 
}  


 
// return array with errors, or true with success.  
if (!count($errors)) { 
return true; 
} else { 
return $errors; 

}