<?php
require_once(APPLICATION_PATH. "/../library/dompdf/autoload.inc.php");

Use Dompdf\Dompdf;

/* $pdf = new Agro_Pdf($content, $filename);
$pdf->loadHtml($view);
$pdf->render();
$fpdf = $pdf->output(array("compress" => 0));
file_put_contents(APPLICATION_PATH . '/upload_files/temp/saida.pdf', $fpdf);
 */

/**
 * Classe que herda a biblioteca Dompdf para transformar arquivos HTML em arquivos PDF.
 * @since 
 * @author Tonismar R. Bernardo tonismar.bernardo.at.agrobrasilseguros.com.br
 * @package AgroNet
 *
 */
class Agro_Pdf {

	var $dompdf = null;
	var $content = null;
	var $filename = null;
	var $css = null;
	
	/**
	 * Função contrutura. Se passado o conteúdo e nome do arquivo com o caminho
	 * ira gerar um PDF do conteúdo no arquivo informado.
	 * IMPORTANTE colocar ->showPrint = true na view em questão para carregar CSS de impressão 
	 * @param String $content
	 * @param String $filename
	 */
	function __construct($content='', $filename='') {

		$this->dompdf = new Dompdf();
		$this->content = $content;
		$this->filename = $filename;
		
		//Seta cabeçalho padrão
		$this->setCss('
 				<link rel="shortcut icon" href="/resources/imagens/agronet.ico" type="image/x-icon" />
 			    <link rel="stylesheet" href="/resources/css/popup.css" type="text/css" media="screen" />');
		
		
		if (($content) && ($filename)) {
			
			try { 
				$this->dompdf->loadHtml($content);
				$this->dompdf->render();
				$pdf = $this->dompdf->output(array("compress" => 0));
				file_put_contents($filename, $pdf);
			} catch (Exception $e) {
				die($e->getMessage());
			}
		}
	}
	
	/**
	 * Seta o conteúdo HTML corrigindo o caminho dos arquivos de imagem e css
	 * @param String $content
	 */
	public function setContent($content) {
		$this->content = str_replace("/resources/",$_SERVER['DOCUMENT_ROOT']."/resources/",$content);
	}
	
	/**
	 * Seta o conteúdo HTML corrigindo o caminho dos arquivos de imagem e css
	 * @param unknown $filename
	 */
	public function setFilename($filename) {
		$this->filename = $filename;
	}
	
	/**
	 * Adiciona CSS antes do conteudo para formatação corrigindo o caminha dos arquivos
	 * @param String $css
	 */
	public function setCss($css) {
		$this->css = str_replace("/resources/",$_SERVER['DOCUMENT_ROOT']."/resources/",$css);
	}
	
	/**
	 * Gera o pdf com o css adicionado anteriormente
	 */
	public function generate() {
		try {
			$html = $this->css.$this->content;
			$this->dompdf->loadHtml($html);
			$this->dompdf->render();
			$pdf = $this->dompdf->output(array("compress" => 0));
			file_put_contents($this->filename, $pdf);
		} catch (Exception $e) {
			die($e->getMessage());
		}
	}
}
