Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jpraminelli

imagens com FPDF no zend framework

Recommended Posts

Olá amigos do forum, venho até vcs para solucionar meu problema.

Estou desenvolvendo um projeto com zend framework, já esta quase pronto, mas me deparei com problemas para gerar relatórios. Não consegui utilizar o Zend_pdf para distribuir os dados em tabelas. entao parti para o FPDF, está funcionando perfeitamente, desde que eu nao utilize imagens , sempre que eu tento colocar uma imagem exibe este erro.

Warning: getimagesize(baltec.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\xampp\xampp\htdocs\sistema_baltec\library\fpdf\fpdf.php on line 1235
FPDF error: Missing or incorrect image file: baltec.jpg
ja tentei colocar o caminho da imagem de todas as formas e sempre caio no mesmo problema....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esta imagem você quer colocar aonde??? header no meio da página??

 

Post essa parte da imagem

Compartilhar este post


Link para o post
Compartilhar em outros sites

alguem pode me ajudar ?

como coloco imagem no fpdf ?

sempre que eu tento coloca imagem aparece este erro

Warning: getimagesize(baltec.jpg) [function.getimagesize]: failed to open stream: No such file or directory in C:\xampp\xampp\htdocs\sistema_baltec\library\fpdf\fpdf.php on line 1235
FPDF error: Missing or incorrect image file: baltec.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, parece que o problema é no caminho da imagem, já que está dizendo que não encontrou o arquivo. Reveja a localização e confira se realmente existe, se o nome está correto.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mesmo arquivo que da esse erro , coloquei ele num projeto php comum e ele funciona normalmente, mas eu preciso que funcione num projeto zend framework, e ai sempre da esse erro...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por isto que eu falo, o problema deve estar no local em que o arquivo está. Como você está fazendo a chamada à este arquivo e qual a localização do mesmo?

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

a imagem esta na pasta public/images/logo.jpg

 

e o arquivo que gera o pdf está no controlador da pagina

 

estou tentando assim :

$this->Image("/sistema_baltec/public/images/logo.jpg", 240, 10);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, tente criar uma tag img normal, utilizando este endereço. Algo assim.

 

<img src="/sistema_baltec/public/images/logo.jpg"/>

Veja se aparece. Se aparecer, poste o seu Bootstrap, para ver o que você tem colocado no seu include_path.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

as imagens funcionam normamente, tenho outras imagens no projeto e elas funcionam normalmente o problema esta realmente no pdf, ja testei inclusive com a imagem logo.jpg e ela aparece no navegador normal.

 

aqui segue meu bootstrap

error_reporting(E_ALL | E_STRICT);

define("CAMINHO","/sistema_baltec/public/");
define("PATCH","/sistema_baltec");

$operatingSystem =  stripos($_SERVER['SERVER_SOFTWARE'],'win32')!== FALSE ? 'WINDOWS' : 'LINUX';
$bar = $operatingSystem == 'WINDOWS' ? '\\' : '/' ;
$pathSeparator = $operatingSystem == 'WINDOWS' ? ';' : ':' ;
$documentRoot =  $operatingSystem == 'WINDOWS' ? str_replace('/','\\',$_SERVER['DOCUMENT_ROOT']) : $_SERVER['DOCUMENT_ROOT'];

$path 	= 	$pathSeparator.$documentRoot.$bar.'sistema_baltec'.$bar.'library';
$path 	.= 	$pathSeparator.$documentRoot.$bar.basename(getcwd()).$bar.'application'.$bar.'models';

set_include_path(get_include_path().$path);


include 'Zend/Loader.php';


Zend_Loader::loadClass('Zend_Pdf');
Zend_Loader::loadClass('Zend_Registry');
Zend_Loader::loadClass('Zend_Layout');
Zend_Layout::startMvc();

Zend_Loader::loadClass('Zend_Paginator');
Zend_Loader::loadClass('Zend_Paginator_Adapter_Array');
Zend_Loader::loadClass('Zend_View_Helper_PaginationControl');

Zend_Loader::loadClass('Zend_File_Transfer');
Zend_Loader::loadClass('Zend_File_Transfer_Adapter_Http');

Zend_Loader::loadClass('Zend_Session');
Zend_Loader::loadClass('Zend_Form');
Zend_Loader::loadClass('Zend_Form_Element_File');
Zend_Loader::loadClass('Zend_Form_Element_Submit');

Zend_Loader::loadClass('Zend_Controller_Front'); 	/** Classe de controladores */
Zend_Loader::loadClass('Zend_View'); 				/** Classe das visões */
Zend_Loader::loadClass('Zend_Config_Ini'); 		/** Classe usada para configurações */
Zend_Loader::loadClass('Zend_Db'); 				/** Classe para acesso a base de dados */
Zend_Loader::loadClass('Zend_Db_Table'); 			/** Classe para usar as tabelas como objetos */
Zend_Loader::loadClass('Zend_Filter_Input'); 		/** Classe usada para filtrar os dados */
Zend_Loader::loadClass('Zend_Session'); 			/** Classe usada para gerenciar a sessão */
Zend_Loader::loadClass('Zend_Session_Namespace'); /** Classe usada para armazenar e recuperar dados da sessão */

Zend_Registry::set('post', new Zend_Filter_Input(NULL,NULL,$_POST));
Zend_Registry::set('get', new Zend_Filter_Input(NULL,NULL,$_GET));

$view = new Zend_View(); 						/** Cria um novo objeto do tipo view */

$view->setEncoding('UTF-8');
$view->setEscape('htmlspecialchars');
$view->setBasePath('./application/views/');	/** Define o diretório onde estarão as visões */
Zend_Registry::set('view', $view); 				/** Registra na memória a variável view que indica a visão */

Zend_Session::start();

Zend_Registry::set('session',new Zend_Session_Namespace());

$baseUrl = substr($_SERVER['PHP_SELF'], 0, strpos($_SERVER['PHP_SELF'], '/index.php'));

$frontController = Zend_Controller_Front::getInstance();

$frontController->setbaseUrl($baseUrl);

$frontController->setControllerDirectory('./application/controllers');

$frontController->throwExceptions(TRUE);

$config = new Zend_Config_Ini('./application/config.ini', 'database');

Zend_Registry::set('config', $config);

$db = Zend_Db::factory($config->db->adapter, $config->db->config->toArray());
Zend_Db_Table_Abstract::setDefaultAdapter($db);

Zend_Registry::set('db', $db);

setlocale(LC_MONETARY,'ptb');

$frontController->dispatch();

Compartilhar este post


Link para o post
Compartilhar em outros sites

você alterou alguma coisa da classe do fpdf esta usando a class PDF extends FPDF ?

você esta montando o header chamando a função header?

 

$this->image('sistema_baltec/public/images/logo.jpg', 0, 0, 240, 10);

Compartilhar este post


Link para o post
Compartilhar em outros sites

OFF-Tópic - Cara, na real, teu bootstrap tá bem estranho. Tipo, você dá um load em várias classes, mesmo se não for usar todas elas em cada vez. Isto não pode ser bom para o desempenho.

Outra coisa.

 

$operatingSystem =  stripos($_SERVER['SERVER_SOFTWARE'],'win32')!== FALSE ? 'WINDOWS' : 'LINUX';
$bar = $operatingSystem == 'WINDOWS' ? '\\' : '/' ;
$pathSeparator = $operatingSystem == 'WINDOWS' ? ';' : ':' ;
$documentRoot =  $operatingSystem == 'WINDOWS' ? str_replace('/','\\',$_SERVER['DOCUMENT_ROOT']) : $_SERVER['DOCUMENT_ROOT'];

$path   =       $pathSeparator.$documentRoot.$bar.'sistema_baltec'.$bar.'library';
$path   .=      $pathSeparator.$documentRoot.$bar.basename(getcwd()).$bar.'application'.$bar.'models';

Não precisa utilizar variáveis pra isto. Utilize constantes que é melhor.

 

Sugiro 2 leituras para você.

 

http://forum.imasters.com.br/index.php?/topic/284116-zend-framework/

Tutorial do Fabyo. Dá uma olhada no bootstrap dele.

http://forum.imasters.com.br/index.php?/topic/343336-zendframework-1-8-0/

Tutorial do Fabyo também. Aqui ele fala como configurar o Zend_Autoloader a partir da versão 1.8.

 

Você deve ter seguido o livro do Flavio Gomes. Eu comecei assim. Daí eu vi os tutos do Fabyo e achei MUITO mais fácil. Principalmente o autoloader, que agiliza bastante o desenvolvimento.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mais ainda não resolveu, certo? Semana passada estava com um problema assim e passei trabalho pra resolver, mas ao invés de imagens, era um arquivo DBF que eu precisava ler. Era o include_path que estava errado. Quem sabe modificando este include_path você consiga resolver. No meu caso foi tentativa e erro.

 

Carlos Eduardo

 

EDIT - Tenta colocar o caminho a partir do public. Assim...

$this->Image("public/images/logo.jpg", 240, 10);

Depois, se não funcionar, tenta assim.

$this->Image("/public/images/logo.jpg", 240, 10);

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu modifiquei o bootstrap de acordo com o exemplo do fabyo, nossa ficou muito melhor mesmo, vou testar o pdf e posto se deu certo ou nao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha amigos fiz os teste e continua dando erro, porem tentei colocar uma imagem gif funcionou, o problema parece estar no formato da imagem, ele não aceita jpg e nem png.

$pdf->Image("public/images/ajax.gif",0,0); // assim funcionou

Compartilhar este post


Link para o post
Compartilhar em outros sites

segue o codigo

<?php
//o cabeçalho e o rodape foram configurados diretamente no arquivo fpdf.php
require_once 'library/fpdf/pdf.php';
require_once 'Zend/Pdf.php';
class pdfController extends Zend_Controller_Action {
	public function indexAction() {
		$session = Zend_Registry::get('session');
	 	if(!isset($session->usuario)){
	  		$this->_redirect('index');
	  	}
		$this->_helper->layout->disableLayout();
		$get      = Zend_Registry::get('get');
		$garantia = $get->id;
		
		//consulta a garantia
		$db     = Zend_Registry::get('db');
		$sql    = "select * from Garantia g,Clientes c where g.id_cliente = c.Cod_Cliente and g.id_garantia = $garantia";
		$result = $db->fetchAll($sql);
		foreach ($result as $dados){
			
			$pdf  = new PDF();
			$pdf->AliasNbPages();
			$pdf -> AddPage();
			$pdf -> SetFont('Arial','B',9);
			$pdf -> Ln(9);
			$pdf -> Cell(15,4,"À",0,1,"L");
			$pdf -> Cell(100,4,utf8_encode($dados["Fantasia"]),0,1,"L");
			$pdf -> Cell(100,4,"Att. Sr. ".utf8_encode($dados["contato"]),0,1,"L");
			$pdf -> Cell(15,8,"Assunto: ",0,0,"L");
			$pdf -> Cell(80,8,"Análise dos seguinte produtos ref a garantia n.".$dados["id_garantia"]."",0,1,"L");
			$pdf -> Ln(4);
			//consulta os intens da garantia
			$pdf -> SetFont('Arial','',9);
			$sqlItens    = "select * from ItensGarantia i,Produto p where i.id_produto = p.id_produto and id_garantia = $garantia";
			$resultItens = $db->fetchAll($sqlItens);
			
			foreach ($resultItens as $itens){
				$conteudo = $itens["cod_produto"]." - ".utf8_decode($itens["descricao"])." Serie: ".$itens["serie"]." - MARCA BALTEC FREIOS";
				$pdf->Cell(200,4,$conteudo,0,1,"L");
				
			}
			$pdf->Ln(6);
			$pdf->Cell(100,3,"Vimos por meio desta, apresentar relatório técnico dos ensaios na peça em epígrafe nos enviada para análise",0,1,"L");
			$pdf -> SetFont('Arial','B',10);
			$pdf -> ln(6);
			$pdf->Cell(200,3,"Relatório de ensaio",0,1,"C");
			
			/* Abre um espaço para o cabeçalho dos campos */
			$pdf->Ln(5);
			
			$pdf->SetFont("Arial", "B", 9);
			//exibe os procedimentos e a descricao
			$sqlItens = "select p.cod_produto, i.serie,pr.procedente, pr.descricaoCli, a.descricaoCli as acao from 
					     ItensGarantia i,
					     Problemas pr,
					     AcaoCorrecao a,
					     Produto p 
					     where i.id_produto = p.id_produto and 
					     i.id_problema = pr.id_problema 
					     and i.id_acao = a.id_acao_correcao and 
				     id_garantia = $garantia";
						     
			$resultItens = $db->fetchAll($sqlItens);
			
			$pdf -> SetFont("Arial", "B", 9);
			
			$pdf -> Cell(18,8,"Código",0,0);
			$pdf -> Cell(22,8,"Série",0,0);
			$pdf ->Cell(22,8,"Procedente",0,0);
			$pdf -> Cell(65,8,"Análise",0,0);
			$pdf -> Cell(25,8,"Procedimento:",0,1);	 
			
		foreach ($resultItens as $itens){
			$procedente = $itens["procedente"];
			if($procedente==1){
				$valorProcedente = "Sim";
			}
			else{
				$valorProcedente = "Não";
			}
				
 			 $pdf->SetWidths(array(18,22,22,65,65));//CADA VALOR DESTE ARRAY SERÁ A LARGURA DE CADA COLUNA
  			  srand(microtime()*1000000);
 			  $pdf->Row(array($itens["cod_produto"],$itens["serie"],$valorProcedente,utf8_decode($itens["descricaoCli"]),utf8_decode($itens["acao"])));
	
		}
			$pdf -> Ln(12);
			$pdf -> SetFont("Arial", "B", 8);
			$pdf -> Cell(25,6,"Sem mais para o momento, aproveitamos para agradecer a sua preferência, ficando a disposição para esclarecer quaisquer dúvidas.",0,1);
			$pdf -> Ln(6);
			$pdf -> Cell(190,6,"Atenciosamente.",0,1,"C");
			
			//consulta o tecnico
			$sqlFunc = "select f.Nome from Garantia g, Funcionarios f where g.id_garantia = $garantia and g.id_tecnico = f.Cod_Func";
			$resultFunc = $db->fetchAll($sqlFunc);
			foreach ($resultFunc as $func){
				$pdf -> Ln();
				$pdf -> Cell(190,6,$func["Nome"],0,1,"C");
				$pdf -> Cell(190,6,"Assistente Técnico",0,1,"C");
			}
			
			$pdf->Output();
		}
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.