cristiadu 0 Denunciar post Postado Maio 17, 2010 Então, estive procurando uma maneira de colocar uma celula que quebrasse linha ao atingir um tamanho máximo...beleza, encontrei o multicell e o fiz. Também fiz uma rotina (que agora percebo ser falha) para verificar quantas vezes a célula irá ultrapassar o valor máximo daquela linha, para que eu pudesse aumentar o valor de Y. EX: a linha cabia 114 caracteres, eu verificava se a string tinha mais de 114 e dividia pelo nº de vezes que ela ultrapassava 114 arredondado pra baixo. Se a string tinha 228 caracteres o Y valeria 10 [5(valor inicial de Y)*2(228/114)]. Ok, tudo parecia estar correto com essa rotina, exceto que o multicell coloca na linha de baixo caso a palavra ocupe mais do que o espaço que sobra naquela linha, ferrando assim a verificação dos 114 caracteres... Alguém teria uma solução? Outra coisa que aconteceu é, peguei um campo text da tabela mysql, ele tinha várias quebras de linha, dei explode em um campo comum (<br> que tinha preenchido já no campo) e depois um join pra juntar toda a string em uma linha só, na exibição normal tá certinho, o problema é que no FPDF ele exibe as quebras de linha q foram pegas no campo sql...mesmo que a palavra caiba naquela mesma linha. entende? Estou sem o código agora porque o servidor local aqui da empresa caiu, assim que ele voltar eu mando o código aqui, mas dá pra ter uma idéia do meu problema, certo? Alguém já teve ele e tem como resolver? Compartilhar este post Link para o post Compartilhar em outros sites
Leandromx 0 Denunciar post Postado Maio 17, 2010 Diz uma coisa, Esta usando o método public? Como esta chamando a class? O Estilo de folha que vocer que é A4? Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Maio 17, 2010 sim, A4. tô sem o código aqui, não tenho como te mostrar os metodos e a maneira q chamo a classe... Compartilhar este post Link para o post Compartilhar em outros sites
Leandromx 0 Denunciar post Postado Maio 17, 2010 Ai ficou dificil de ajudar Segue o site oficial Oficial FPDF Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Maio 17, 2010 require_once ( '../libs/fpdf.php' ); chamo assim na pag onde vou gerar o relatório. Daí na pag fpdf.php tem a classe fpdf e dentro a função fpdf... define('FPDF_VERSION','1.6'); class FPDF { var $page; //current page number var $n; //current object number var $offsets; //array of object offsets var $buffer; //buffer holding in-memory PDF var $pages; //array containing pages var $state; //current document state var $compress; //compression flag var $k; //scale factor (number of points in user unit) var $DefOrientation; //default orientation var $CurOrientation; //current orientation var $PageFormats; //available page formats var $DefPageFormat; //default page format var $CurPageFormat; //current page format var $PageSizes; //array storing non-default page sizes var $wPt,$hPt; //dimensions of current page in points var $w,$h; //dimensions of current page in user unit var $lMargin; //left margin var $tMargin; //top margin var $rMargin; //right margin var $bMargin; //page break margin var $cMargin; //cell margin var $x,$y; //current position in user unit var $lasth; //height of last printed cell var $LineWidth; //line width in user unit var $CoreFonts; //array of standard font names var $fonts; //array of used fonts var $FontFiles; //array of font files var $diffs; //array of encoding differences var $FontFamily; //current font family var $FontStyle; //current font style var $underline; //underlining flag var $CurrentFont; //current font info var $FontSizePt; //current font size in points var $FontSize; //current font size in user unit var $DrawColor; //commands for drawing color var $FillColor; //commands for filling color var $TextColor; //commands for text color var $ColorFlag; //indicates whether fill and text colors are different var $ws; //word spacing var $images; //array of used images var $PageLinks; //array of links in pages var $links; //array of internal links var $AutoPageBreak; //automatic page breaking var $PageBreakTrigger; //threshold used to trigger page breaks var $InHeader; //flag set when processing header var $InFooter; //flag set when processing footer var $ZoomMode; //zoom display mode var $LayoutMode; //layout display mode var $title; //title var $subject; //subject var $author; //author var $keywords; //keywords var $creator; //creator var $AliasNbPages; //alias for total number of pages var $PDFVersion; //PDF version number /******************************************************************************* * * * Public methods * * * *******************************************************************************/ function FPDF($orientation='P', $unit='mm', $format='A4') { // Não copiei o resto pq n eh necessario, são as funções restantes do fpdf A parte onde tenho o multicell e o problema explicado é: $sqlServico="SELECT laudo,valor FROM os_ftecnica WHERE numos=$num_os"; //echo $sqlServico; $_DAO->executaSQL($sqlServico,"Servicos"); $vtotal_serv=0; while ($dados_serv=$_DAO->getArray("Servicos")) { $y += 2; $pdf->SetXY($x, ($y)); $pdf->SetFont( 'Arial', 'B', 8 ); $pdf->Cell(($w + 85), $h, "Descrição:"); $pdf->SetX(($x + 15)); $pdf->SetFont( 'Arial', '', 8 ); $kk=$h+5; $arraylaudo_tec=explode("<br>",$dados_serv[0]); //$laudo_tec=join(",",$arraylaudo_tec); $contador_laudo=count($arraylaudo_tec); for ($i=0;$i<=$contador_laudo;$i++) { $laudo_tec .= $arraylaudo_tec[$i].","; } $laudo_tec=rtrim($laudo_tec,","); //echo $laudo_tec; $pdf ->MultiCell(($w+180), $h, $string=strtoupper($laudo_tec), 0, 'L', 0); $tamanho_string=strlen($string); if ($tamanho_string>114) { $qtd_quebra=$tamanho_string/114; $qtd_quebra=(int)$qtd_quebra; $y+=5*$qtd_quebra; } $y+=5; $pdf->SetXY($x,($y)); $pdf->SetFont( 'Arial', 'B', 8 ); $pdf->Cell(($w + 85), $h, "Valor:"); deixei a celula "valor" sendo exibida pra vcs perceberem a manipulação do Y. ah, e a classe DAO é somente pra executar as sqls, ñ tem mto haver... Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Maio 19, 2010 problema já resolvido, podem fechar o tópico. Compartilhar este post Link para o post Compartilhar em outros sites