excel 轉圖片

<?php


$html = file_get_contents("./2.html");
$fileName = 'ceshi';

/**
 * 將html文件轉換爲pdf 
 * @param unknown $html      html文件     地址 如:"http://10.10.10.80/YunJiJiuZhuFuWu-Server/pages/app/2.html"
 * @param string $title      標題
 * @param unknown $fileName  文件名稱
 */
function pdfRender($html, $title = '標題',$fileName)
{
    if(!empty(html)){
        $html = file_get_contents($html);
    }
    //  require_once(dirname(__FILE__).'/tcpdf_autoconfig.php');
    require_once('./tcpdf/tcpdf.php');
    /*新建一個pdf文件:
    
    Orientation:orientation屬性用來設置文檔打印格式是“Portrait”還是“Landscape”。 Landscape爲橫式打印,Portrait爲縱向打印
    
    Unit:設置頁面的單位。pt:點爲單位,mm:毫米爲單位,cm:釐米爲單位,in:英尺爲單位
    
    Format:設置打印格式,一般設置爲A4
    
    Unicode:爲true,輸入的文本爲Unicode字符文本
    
    Encoding:設置編碼格式,默認爲utf-8
    
    Diskcache:爲true,通過使用文件系統的臨時緩存數據減少RAM的內存使用。 */
    
    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT,true, 'UTF-8', false);
    
    //設置文件信息
    
    $pdf->SetCreator(PDF_CREATOR);
    
    $pdf->SetAuthor("jmcx");
    
    $pdf->SetTitle($title);
    
    $pdf->SetSubject('TCPDF Tutorial');
    
    $pdf->SetKeywords('TCPDF, PDF, example, test, guide');
    
    //刪除預定義的打印 頁眉/頁尾
    
    $pdf->setPrintHeader(false);
    
    $pdf->setPrintFooter(false);
    
    //設置默認等寬字體
    
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
    
    /*設置頁面邊幅:
    
    Left:左邊幅
    
    Top:頂部邊幅
    
    Right:右邊幅
    
    Keepmargins:爲true時,覆蓋默認的PDF邊幅。 */
    
    $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP,PDF_MARGIN_RIGHT);
    
    /*設置單元格的邊距:
    
    Left:左邊距
    
    Top:頂部邊距
    
    Right:右邊距
    
    Bottom:底部邊距。*/
    
    $pdf->setCellPaddings(0, 0, 0, 0);
    
    //GetX獲得當前的橫座標,GetY獲得當前的縱座標。
    
    //       $pdf->GetX();
    
    //       $pdf->GetY();
    
    /*移動座標。SetX移動橫座標。 SetY,橫座標自動移動到左邊距的距離,然後移動縱座標。SetXY,移動橫座標跟縱座標:
    
    X:橫座標,可設爲$pdf->GetX()+數字
    
    Y:縱座標,可設爲$pdf->GetY()+數字
    
    Rtloff:true,左上角會一直作爲座標軸的原點
    
    Resetx:true,重設橫座標。 */
    
    //       $pdf->SetX($x, $rtloff=false);
    
    //       $pdf->SetY($y, $resetx=true, $rtloff=false);
    
    //       $pdf->SetXY($x, $y, $rtloff=false)
    
    /*設置線條的風格:
    
    Width:設置線條粗細
    
    Cap:設置線條的兩端形狀
    
    Join:設置線條連接的形狀
    
    Dash:設置虛線模式
    
    Color:設置線條顏色,一般設置爲黑色,如:array(0, 0, 0)。*/
    
    $pdf->SetLineStyle(array('width' => 0.2, 'cap' => 'butt', 'join' => 'miter', 'dash' => '0', 'color' => array(0, 0,0)));
    
    /*畫一條線:
    
    x1:線條起點x座標
    
    y1:線條起點y座標
    
    x2:線條終點x座標
    
    y2:線條終點y座標
    
    style:SetLineStyle的效果一樣
    
    */
    
    //       $pdf->Line($x1, $y1, $x2, $y2, $style=array());
    
    /*執行一個換行符,橫座標自動移動到左邊距的距離,縱座標換到下一行:
    
    H:設置下行跟上一行的距離,默認的話,高度爲最後一個單元格的高度
    
    Cell:true,添加左或右或上的間距到橫座標。 */
    
    //       $pdf->Ln($h='', $cell=false);
    
    //設置自動分頁符
    
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
    
    //設置圖像比例因子
    
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    
    //設置一些語言相關的字符串
    
    //       $pdf->setLanguageArray("xx");
    
    /*設置字體:
    
    字體類型(如helvetica(Helvetica)黑體,times (Times-Roman)羅馬字體)、風格(B粗體,I斜體,underline下劃線等)、字體大小 */
    
    $pdf->SetFont('stsongstdlight', '', 15); //設置中文顯示
    
    /*增加一個頁面:
    
    Orientation:orientation屬性用來設置文檔打印格式。 Landscape爲橫式打印,Portrait爲縱向打印。
    
    Format:設置此頁面的打印格式。
    
    Keepmargins:true,以當前的邊幅代替默認邊幅來重寫頁面邊幅。
    
    Tocpage:true,所添加的頁面將被用來顯示內容表。*/
    
    $pdf->AddPage();
    
    /*設置單行單元格:
    
    W:設置單元格的寬
    
    H:設置單元格的高
    
    Text:單元格文本
    
    Border:設置單元格的邊框。0,無邊框,1,一個框,L,左邊框,R,右邊框,B, 底邊框,T,頂邊框,LTRB指四個邊都顯示
    
    Ln:0,單元格後的內容插到表格右邊或左邊,1,單元格的下一行,2,在單元格下面
    
    Align:文本位置。L,左對齊,R,右對齊,C,居中,J,自動對齊
    
    Fill:填充。false,單元格的背景爲透明,true,單元格必需被填充
    
    Link:設置單元格文本的鏈接。*/
    
    $pdf->Cell(0, 0, $title, 0, 1, 'C');
    
    /*設置多行單元格。注意跟Cell的參數位置有些差別,Cell是用來輸出單行文本的,MultiCell就能用來輸出多行文本
    
    W:設置多行單元格的寬
    
    H: 設置多行單元格的單行的高
    
    Text:文本
    
    Border:邊框
    
    Align:文本位置
    
    Fill:填充
    
    Ln:0,單元格後的內容插到表格右邊或左邊,1,單元格的下一行,2,在單元格下面
    
    X:設置多行單元格的行座標
    
    Y:設置多行單元格的縱座標
    
    Reseth:true,重新設置最後一行的高度
    
    Stretch:調整文本寬度適應單元格的寬度
    
    Ishtml:true,可以輸出html文本,有時很有用的
    
    Autopadding:true,自動調整文本與單元格之間的距離
    
    Maxh:設置單元格最大的高度
    
    Valign:設置文本在縱座標中的位置,T,偏上,M,居中,B,偏下
    
    Fillcell:自動調整文本字體大小來適應單元格大小。 */
    
    //       $pdf->MultiCell($w, $h, $txt, $border=0, $align='J',$fill=false, $ln=1, $x='', $y='',  $reseth=true, $stretch=0,$ishtml=false, $autopadding=true, $maxh=0, $valign='T', $fitcell=false);
    
    // setCellHeightRatio設置單元格行高,可以引用此函數調整行與行的間距。SetLineWidth設置線條寬度。
    
    //       $pdf->setCellHeightRatio($h);
    
    //       $pdf->SetLineWidth($width);
    
    /*在PDF中,插入圖片,參數列表如下;
    
    File:圖片路徑。
    
    X:左上角或右上角的橫座標。
    
    Y:左上角或右上角的縱座標。
    
    W:設置圖片的寬度,爲空或爲0,則自動計算。
    
    H:設置圖片的高度,爲空或爲0,則自動計算。
    
    Type:圖片的格式,支持JPGE,PNG,BMP,GIF等,如果沒有值,則從文件的擴展名中自動找到文件的格式。
    
    Link:圖片鏈接。
    
    Align:圖片位置。
    
    Resize:true,調整圖片的大小來適應寬跟高;false,不調整圖片大小;2,強制調整。
    
    Dpi:以多少點每英寸來調整圖片大小。
    
    Palign:圖片位置,L,偏左,C,居中,R,偏右
    
    Imgmask:true,返回圖像對象。
    
    Border:邊框。
    
    Fitbox:調整適合大小。
    
    Hidden:true,隱藏圖片。
    
    Fitonpage:如果爲true,圖像調整爲不超過頁面尺寸。 */
    
//     $pdf->Image('../img/test.png');
    
    /*輸出HTML文本:
    
    Html:html文本
    
    Ln:true,在文本的下一行插入新行
    
    Fill:填充。false,單元格的背景爲透明,true,單元格必需被填充
    
    Reseth:true,重新設置最後一行的高度
    
    Cell:true,就調整間距爲當前的間距
    
    Align:調整文本位置。 */
    
    $pdf->writeHTML($html);
    
    /*用此函數可以設置可選邊框,背景顏色和HTML文本字符串來輸出單元格(矩形區域)
    
    W:設置單元格寬度。0,伸展到右邊幅的距離
    
    H:設置單元格最小的高度
    
    X:以左上角爲原點的橫座標
    
    Y:以左上角爲原點的縱座標
    
    Html:html文本
    
    Border:邊框
    
    Ln:0,單元格後的內容插到表格右邊或左邊,1,單元格的下一行,2,在單元格下面
    
    Fill:填充
    
    Reseth:true,重新設置最後一行的高度
    
    Align:文本的位置
    
    Autopadding:true,自動調整文本到邊框的距離。 */
    
//     $pdf->writeHTMLCell();
    
    /*輸入PDF文檔 :
    
    Name:PDF保存的名字
    
    Dest:PDF輸出的方式。I,默認值,在瀏覽器中打開;D,點擊下載按鈕, PDF文件會被下載下來;F,文件會被保存在服務器中;S,PDF會以字符串形式輸出;E:PDF以郵件的附件輸出。 */
    
    $pdf->Output($fileName.".pdf", "F");
}


/**
 * 將pdf轉化爲單一png圖片
 * @param string $pdf  pdf所在路徑 (/www/pdf/abc.pdf pdf所在的絕對路徑)
 * @param string $path 新生成圖片所在路徑 (/www/pngs/)
 *
 * @throws Exception
 */
function pdf2png2($pdf, $path)
{
    try {
        $im = new Imagick();
        $im->setCompressionQuality(100);
        $im->setResolution(120, 120);//設置分辨率 值越大分辨率越高
        $result = $im->readImage($pdf);
        
        $canvas = new Imagick();
        $imgNum = $im->getNumberImages();
        //$canvas->setResolution(120, 120);
        foreach ($im as $k => $sub) {
            $sub->setImageFormat('png');
            //$sub->setResolution(120, 120);
            $sub->stripImage();
            $sub->trimImage(0);
            $width  = $sub->getImageWidth() + 10;
            $height = $sub->getImageHeight() + 10;
            if ($k + 1 == $imgNum) {
                $height += 10;
            } //最後添加10的height
            $canvas->newImage($width, $height, new ImagickPixel('white'));
            $canvas->compositeImage($sub, Imagick::COMPOSITE_DEFAULT, 5, 5);
        }
        
        $canvas->resetIterator();
        $canvas->appendImages(true)->writeImage($path . microtime(true) . '.png');
    } catch (Exception $e) {
        throw $e;
    }
}
?>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章