Ir para conteúdo

POWERED BY:

Arquivado

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

cristiadu

[Resolvido] Problema com FPDF

Recommended Posts

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

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

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

×

Informação importante

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