Foros del Web » Programando para Internet » PHP »

generar pdf

Estas en el tema de generar pdf en el foro de PHP en Foros del Web. hola foro tengo un problema no se por que me marca este error estoy instalando un script en un sitio donde se genera un pdf ...
  #1 (permalink)  
Antiguo 01/12/2004, 10:39
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
generar pdf

hola foro tengo un problema no se por que me marca este error estoy instalando un script en un sitio donde se genera un pdf y marca este error


Warning: fopen(/var/www/html/mexternet/tienda/catalogues/catalog_1.pdf): failed to open stream: No such file or directory in /var/www/html/mexternet/catalog/admin/pdf_fpdf.php on line 1052
FPDF error: Unable to create output file: /var/www/html/mexternet/tienda/catalogues/catalog_1.pdf
  #2 (permalink)  
Antiguo 01/12/2004, 11:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y .. estás seguro que exite ese archivo con ese nombre en esa ruta?:
/var/www/html/mexternet/tienda/catalogues/catalog_1.pdf

Un saludo,
  #3 (permalink)  
Antiguo 01/12/2004, 13:37
Avatar de chr_c  
Fecha de Ingreso: junio-2003
Mensajes: 204
Antigüedad: 20 años, 10 meses
Puntos: 0
Si lo que intestas es crear el archivo , verifica los permisos del directorio
  #4 (permalink)  
Antiguo 01/12/2004, 16:10
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Cita:
Iniciado por chr_c
Si lo que intestas es crear el archivo , verifica los permisos del directorio

ok gracias deja lo intento, si cluster el script crea un pdf pero al manarlo llamar no esta ... mmm bueno deja chelo lo de los permisoos
  #5 (permalink)  
Antiguo 01/12/2004, 16:36
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
SI fuece porblemas de permisos diria eso en el error.

El script genera un PDF y luego tiene que abrirlo?, creo que ese es el error, el script no esta generando el archivo pero igual intenta abrirlo...

Fijate poniendo la URL entera al fopen...
__________________
I Love Programming...

Última edición por FuLaNo_; 01/12/2004 a las 16:37
  #6 (permalink)  
Antiguo 02/12/2004, 11:43
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
pues no aqui es donde me marca el error por favor AYUDAAAA¡¡¡¡

Código PHP:
    switch($dest)
    {
        case 
'I':
            
//Send to standard output
            
if(isset($HTTP_SERVER_VARS['SERVER_NAME']))
            {
                
//We send to a browser
                
Header('Content-Type: application/pdf');
                if(
headers_sent())
                    
$this->Error('Some data has already been output to browser, can\'t send PDF file');
                
Header('Content-Length: '.strlen($this->buffer));
                
Header('Content-disposition: inline; filename='.$name);
            }
            echo 
$this->buffer;
            break;
        case 
'D':
            
//Download file
            
if(isset($HTTP_SERVER_VARS['HTTP_USER_AGENT']) and strpos($HTTP_SERVER_VARS['HTTP_USER_AGENT'],'MSIE'))
                
Header('Content-Type: application/force-download');
            else
                
Header('Content-Type: application/octet-stream');
            if(
headers_sent())
                
$this->Error('Some data has already been output to browser, can\'t send PDF file');
            
Header('Content-Length: '.strlen($this->buffer));
            
Header('Content-disposition: attachment; filename='.$name);
            echo 
$this->buffer;
            break;
        case 
'F':
            
//Save to local file            
aqui marca el    ------->>$f=fopen($name,'wb');
error            if(!$f)
                
$this->Error('Unable to create output file: '.$name);
            
fwrite($f,$this->buffer,strlen($this->buffer));
            
fclose($f);
            break;
        case 
'S':
            
//Return as a string
            
return $this->buffer;
        default:
            
$this->Error('Incorrect output destination: '.$dest);
    }
    return 
'';

  #7 (permalink)  
Antiguo 02/12/2004, 11:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero que "error" te marca? (textual)

Un saludo,
  #8 (permalink)  
Antiguo 02/12/2004, 11:59
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
ya lo he dicho, para mi el problema es que no existe el archivo, por ende, FOPEN es imposible...

Warning: fopen(/var/www/html/mexternet/tienda/catalogues/catalog_1.pdf): failed to open stream: No such file or directory in /var/www/html/mexternet/catalog/admin/pdf_fpdf.php on line 1052
FPDF error: Unable to create output file: /var/www/html/mexternet/tienda/catalogues/catalog_1.pdf

Te esta diciendo claramente que el archivo no existe en el directorio indicado...
__________________
I Love Programming...
  #9 (permalink)  
Antiguo 02/12/2004, 12:04
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
si eso si tengo entendido pero por que no lo genera?

aquie les mado el codigo en partes ojala y me puedan ayudar

Código PHP:
<?php

if(!class_exists('FPDF'))
{
define('FPDF_VERSION','1.52');

class 
FPDF
{
//Private properties
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 $DefOrientation;     //default orientation
var $CurOrientation;     //current orientation
var $OrientationChanges//array indicating orientation changes
var $k;                  //scale factor (number of points in user unit)
var $fwPt,$fhPt;         //dimensions of page format in points
var $fw,$fh;             //dimensions of page format in user unit
var $wPt,$hPt;           //current dimensions of page in points
var $w,$h;               //current dimensions of 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 for cell positioning
var $lasth;              //height of last cell printed
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 $images;             //array of used images
var $PageLinks;          //array of links in pages
var $links;              //array of internal links
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 $AutoPageBreak;      //automatic page breaking
var $PageBreakTrigger;   //threshold used to trigger page breaks
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

/*******************************************************************************
*                                                                              *
*                               Public methods                                 *
*                                                                              *
*******************************************************************************/
function FPDF($orientation=PDF_ORIENTATION,$unit='mm',$format='A4')
{
    
//Some checks
    
$this->_dochecks();
    
//Initialization of properties
    
$this->page=0;
    
$this->n=2;
    
$this->buffer='';
    
$this->pages=array();
    
$this->OrientationChanges=array();
    
$this->state=0;
    
$this->fonts=array();
    
$this->FontFiles=array();
    
$this->diffs=array();
    
$this->images=array();
    
$this->links=array();
    
$this->InFooter=false;
    
$this->lasth=0;
    
$this->FontFamily='';
    
$this->FontStyle='';
    
$this->FontSizePt=12;
    
$this->underline=false;
    
$this->DrawColor='0 G';
    
$this->FillColor='0 g';
    
$this->TextColor='0 g';
    
$this->ColorFlag=false;
    
$this->ws=0;
    
//Standard fonts
    
$this->CoreFonts=array('courier'=>'Courier','courierB'=>'Courier-Bold','courierI'=>'Courier-Oblique','courierBI'=>'Courier-BoldOblique',
        
'helvetica'=>'Helvetica','helveticaB'=>'Helvetica-Bold','helveticaI'=>'Helvetica-Oblique','helveticaBI'=>'Helvetica-BoldOblique',
        
'times'=>'Times-Roman','timesB'=>'Times-Bold','timesI'=>'Times-Italic','timesBI'=>'Times-BoldItalic',
        
'symbol'=>'Symbol','zapfdingbats'=>'ZapfDingbats');
    
//Scale factor
    
if($unit=='pt')
        
$this->k=1;
    elseif(
$unit=='mm')
        
$this->k=72/25.4;
    elseif(
$unit=='cm')
        
$this->k=72/2.54;
    elseif(
$unit=='in')
        
$this->k=72;
    else
        
$this->Error('Incorrect unit: '.$unit);
    
//Page format
    
if(is_string($format))
    {
        
$format=strtolower($format);
        if(
$format=='a3')
            
$format=array(841.89,1190.55);
        elseif(
$format=='a4')
            
$format=array(595.28,841.89);
        elseif(
$format=='a5')
            
$format=array(420.94,595.28);
        elseif(
$format=='letter')
            
$format=array(612,792);
        elseif(
$format=='legal')
            
$format=array(612,1008);
        else
            
$this->Error('Unknown page format: '.$format);
        
$this->fwPt=$format[0];
        
$this->fhPt=$format[1];
    }
    else
    {
        
$this->fwPt=$format[0]*$this->k;
        
$this->fhPt=$format[1]*$this->k;
    }

    
//Page orientation
    
$orientation=strtolower($orientation);
    if(
$orientation=='p' or $orientation=='portrait')
    {
        
$this->DefOrientation='P';
        
$this->wPt=$this->fwPt;
        
$this->hPt=$this->fhPt;
    }
    elseif(
$orientation=='l' or $orientation=='landscape')
    {
        
$this->DefOrientation='L';
        
$this->wPt=$this->fhPt;
        
$this->hPt=$this->fwPt;
    }
    else
            
$this->Error('Incorrect orientation: '.$orientation);
        
// NH moved from before Page orientation, fw use wpt instead of fwpt
    
$this->fw=$this->wPt/$this->k;
    
$this->fh=$this->hPt/$this->k;
    
    
$this->CurOrientation=$this->DefOrientation;
    
$this->w=$this->wPt/$this->k;
    
$this->h=$this->hPt/$this->k;
    
//Page margins (1 cm)
    
$margin=28.35/$this->k;
    
$this->SetMargins($margin,$margin);
    
//Interior cell margin (1 mm)
    
$this->cMargin=$margin/10;
    
//Line width (0.2 mm)
    
$this->LineWidth=.567/$this->k;
    
//Automatic page break
    
$this->SetAutoPageBreak(true,2*$margin);
    
//Full width display mode
    
$this->SetDisplayMode('fullwidth');
    
//Compression
    
$this->SetCompression(true);
}

function 
SetMargins($left,$top,$right=-1)
{
    
//Set left, top and right margins
    
$this->lMargin=$left;
    
$this->tMargin=$top;
    if(
$right==-1)
        
$right=$left;
    
$this->rMargin=$right;
}

function 
SetLeftMargin($margin)
{
    
//Set left margin
    
$this->lMargin=$margin;
    if(
$this->page>and $this->x<$margin)
        
$this->x=$margin;
}

function 
SetTopMargin($margin)
{
    
//Set top margin
    
$this->tMargin=$margin;
}

function 
SetRightMargin($margin)
{
    
//Set right margin
    
$this->rMargin=$margin;
}

function 
SetAutoPageBreak($auto,$margin=0)
{
    
//Set auto page break mode and triggering margin
    
$this->AutoPageBreak=$auto;
    
$this->bMargin=$margin;
    
$this->PageBreakTrigger=$this->h-$margin;
}

function 
SetDisplayMode($zoom,$layout='continuous')
{
    
//Set display mode in viewer
    
if($zoom=='fullpage' or $zoom=='fullwidth' or $zoom=='real' or $zoom=='default' or !is_string($zoom))
        
$this->ZoomMode=$zoom;
    else
        
$this->Error('Incorrect zoom display mode: '.$zoom);
    if(
$layout=='single' or $layout=='continuous' or $layout=='two' or $layout=='default')
        
$this->LayoutMode=$layout;
    else
        
$this->Error('Incorrect layout display mode: '.$layout);
}

function 
SetCompression($compress)
{
    
//Set page compression
    
if(function_exists('gzcompress'))
        
$this->compress=$compress;
    else
        
$this->compress=false;
}

function 
SetTitle($title)
{
    
//Title of document
    
$this->title=$title;
}

function 
SetSubject($subject)
{
    
//Subject of document
    
$this->subject=$subject;
}

function 
SetAuthor($author)
{
    
//Author of document
    
$this->author=$author;
}

function 
SetKeywords($keywords)
{
    
//Keywords of document
    
$this->keywords=$keywords;
}

function 
SetCreator($creator)
{
    
//Creator of document
    
$this->creator=$creator;
}

function 
AliasNbPages($alias='{nb}')
{
    
//Define an alias for total number of pages
    
$this->AliasNbPages=$alias;
}

function 
Error($msg)
{
    
//Fatal error
die('<B>FPDF error: </B>'.$msg);
}

function 
Open()
{
    
//Begin document
    
if($this->state==0)
        
$this->_begindoc();
}

function 
Close()
{
    
//Terminate document
    
if($this->state==3)
        return;
    if(
$this->page==0)
        
$this->AddPage();
    
//Page footer
    
$this->InFooter=true;
    
$this->Footer();
    
$this->InFooter=false;
    
//Close page
    
$this->_endpage();
    
//Close document
    
$this->_enddoc();
}

*** 
continua
?>

Última edición por The_omars; 02/12/2004 a las 12:14
  #10 (permalink)  
Antiguo 02/12/2004, 12:11
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Código PHP:
function AddPage($orientation='')
{
    
//Start a new page
    
if($this->state==0)
        
$this->Open();
    
$family=$this->FontFamily;
    
$style=$this->FontStyle.($this->underline 'U' '');
    
$size=$this->FontSizePt;
    
$lw=$this->LineWidth;
    
$dc=$this->DrawColor;
    
$fc=$this->FillColor;
    
$tc=$this->TextColor;
    
$cf=$this->ColorFlag;
    if(
$this->page>0)
    {
        
//Page footer
        
$this->InFooter=true;
        
$this->Footer();
        
$this->InFooter=false;
        
//Close page
        
$this->_endpage();
    }
    
//Start new page
    
$this->_beginpage($orientation);
    
//Set line cap style to square
    
$this->_out('2 J');
    
//Set line width
    
$this->LineWidth=$lw;
    
$this->_out(sprintf('%.2f w',$lw*$this->k));
    
//Set font
    
if($family)
        
$this->SetFont($family,$style,$size);
    
//Set colors
    
$this->DrawColor=$dc;
    if(
$dc!='0 G')
        
$this->_out($dc);
    
$this->FillColor=$fc;
    if(
$fc!='0 g')
        
$this->_out($fc);
    
$this->TextColor=$tc;
    
$this->ColorFlag=$cf;
    
//Page header
    
$this->Header();
    
//Restore line width
    
if($this->LineWidth!=$lw)
    {
        
$this->LineWidth=$lw;
        
$this->_out(sprintf('%.2f w',$lw*$this->k));
    }
    
//Restore font
    
if($family)
        
$this->SetFont($family,$style,$size);
    
//Restore colors
    
if($this->DrawColor!=$dc)
    {
        
$this->DrawColor=$dc;
        
$this->_out($dc);
    }
    if(
$this->FillColor!=$fc)
    {
        
$this->FillColor=$fc;
        
$this->_out($fc);
    }
    
$this->TextColor=$tc;
    
$this->ColorFlag=$cf;
}

function 
Header()
{
    
//To be implemented in your own inherited class
}

function 
Footer()
{
    
//To be implemented in your own inherited class
}

function 
PageNo()
{
    
//Get current page number
    
return $this->page;
}

function 
SetDrawColor($r,$g=-1,$b=-1)
{
    
//Set color for all stroking operations
    
if(($r==and $g==and $b==0) or $g==-1)
        
$this->DrawColor=sprintf('%.3f G',$r/255);
    else
        
$this->DrawColor=sprintf('%.3f %.3f %.3f RG',$r/255,$g/255,$b/255);
    if(
$this->page>0)
        
$this->_out($this->DrawColor);
}

function 
SetFillColor($r,$g=-1,$b=-1)
{
    
//Set color for all filling operations
    
if(($r==and $g==and $b==0) or $g==-1)
        
$this->FillColor=sprintf('%.3f g',$r/255);
    else
        
$this->FillColor=sprintf('%.3f %.3f %.3f rg',$r/255,$g/255,$b/255);
    
$this->ColorFlag=($this->FillColor!=$this->TextColor);
    if(
$this->page>0)
        
$this->_out($this->FillColor);
}

function 
SetTextColor($r,$g=-1,$b=-1)
{
    
//Set color for text
    
if(($r==and $g==and $b==0) or $g==-1)
        
$this->TextColor=sprintf('%.3f g',$r/255);
    else
        
$this->TextColor=sprintf('%.3f %.3f %.3f rg',$r/255,$g/255,$b/255);
    
$this->ColorFlag=($this->FillColor!=$this->TextColor);
}

function 
GetStringWidth($s)
{
    
//Get width of a string in the current font
    
$s=(string)$s;
    
$cw=&$this->CurrentFont['cw'];
    
$w=0;
    
$l=strlen($s);
    for(
$i=0;$i<$l;$i++)
        
$w+=$cw[$s{$i}];
    return 
$w*$this->FontSize/1000;
}

function 
SetLineWidth($width)
{
    
//Set line width
    
$this->LineWidth=$width;
    if(
$this->page>0)
        
$this->_out(sprintf('%.2f w',$width*$this->k));
}

function 
Line($x1,$y1,$x2,$y2)
{
    
//Draw a line
    
$this->_out(sprintf('%.2f %.2f m %.2f %.2f l S',$x1*$this->k,($this->h-$y1)*$this->k,$x2*$this->k,($this->h-$y2)*$this->k));
}

function 
Rect($x,$y,$w,$h,$style='')
{
    
//Draw a rectangle
    
if($style=='F')
        
$op='f';
    elseif(
$style=='FD' or $style=='DF')
        
$op='B';
    else
        
$op='S';
    
$this->_out(sprintf('%.2f %.2f %.2f %.2f re %s',$x*$this->k,($this->h-$y)*$this->k,$w*$this->k,-$h*$this->k,$op));
}

function 
AddFont($family,$style='',$file='')
{
    
//Add a TrueType or Type1 font
    
$family=strtolower($family);
    if(
$family=='arial')
        
$family='helvetica'
    
$style=strtoupper($style);        
    if(
$style=='IB')
        
$style='BI';
    if(isset(
$this->fonts[$family.$style]))
        
$this->Error('Font already added: '.$family.' '.$style);
    if(
$file=='')
        
$file=str_replace(' ','',$family).strtolower($style).'.php';
    if(
defined('FPDF_FONTPATH'))
        
$file=FPDF_FONTPATH.$file;
    include(
$file);
    if(!isset(
$name))
        
$this->Error('Could not include font definition file');
    
$i=count($this->fonts)+1;
    
$this->fonts[$family.$style]=array('i'=>$i,'type'=>$type,'name'=>$name,'desc'=>$desc,'up'=>$up,'ut'=>$ut,'cw'=>$cw,'enc'=>$enc,'file'=>$file);
    if(
$diff)
    {
        
//Search existing encodings
        
$d=0;
        
$nb=count($this->diffs);
        for(
$i=1;$i<=$nb;$i++)
            if(
$this->diffs[$i]==$diff)
            {
                
$d=$i;
                break;
            }
        if(
$d==0)
        {
            
$d=$nb+1;
            
$this->diffs[$d]=$diff;
        }
        
$this->fonts[$family.$style]['diff']=$d;
    }
    if(
$file)
    {
        if(
$type=='TrueType')
            
$this->FontFiles[$file]=array('length1'=>$originalsize);
        else
            
$this->FontFiles[$file]=array('length1'=>$size1,'length2'=>$size2);
    }
}

function 
SetFont($family,$style='',$size=0)
{
    
//Select a font; size given in points
    
global $fpdf_charwidths;

    
$family=strtolower($family);
    if(
$family=='')
        
$family=$this->FontFamily;
    if(
$family=='arial')
        
$family='helvetica';
    elseif(
$family=='symbol' or $family=='zapfdingbats')
        
$style='';
    
$style=strtoupper($style);
    if(
is_int(strpos($style,'U')))
    {
        
$this->underline=true;
        
$style=str_replace('U','',$style);
    }
    else
        
$this->underline=false;
    if(
$style=='IB')
        
$style='BI';
    if(
$size==0)
        
$size=$this->FontSizePt;
    
//Test if font is already selected
    
if($this->FontFamily==$family and $this->FontStyle==$style and $this->FontSizePt==$size)
        return;
    
//Test if used for the first time
    
$fontkey=$family.$style;
    if(!isset(
$this->fonts[$fontkey]))
    {
        
//Check if one of the standard fonts
        
if(isset($this->CoreFonts[$fontkey]))
        {
            if(!isset(
$fpdf_charwidths[$fontkey]))
            {
                
//Load metric file
                
$file=$family;
                if(
$family=='times' or $family=='helvetica')
                    
$file.=strtolower($style);
                
$file.='.php';
                if(
defined('FPDF_FONTPATH'))
                    
$file=FPDF_FONTPATH.$file;
                include(
$file);
                if(!isset(
$fpdf_charwidths[$fontkey]))
                    
$this->Error('Could not include font metric file');
            }
            
$i=count($this->fonts)+1;
            
$this->fonts[$fontkey]=array('i'=>$i,'type'=>'core','name'=>$this->CoreFonts[$fontkey],'up'=>-100,'ut'=>50,'cw'=>$fpdf_charwidths[$fontkey]);
        }
        else
            
$this->Error('Undefined font: '.$family.' '.$style);
    }
    
//Select it
    
$this->FontFamily=$family;
    
$this->FontStyle=$style;
    
$this->FontSizePt=$size;
    
$this->FontSize=$size/$this->k;
    
$this->CurrentFont=&$this->fonts[$fontkey];
    if(
$this->page>0)
        
$this->_out(sprintf('BT /F%d %.2f Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
}

function 
SetFontSize($size)
{
    
//Set font size in points
    
if($this->FontSizePt==$size)
        return;
    
$this->FontSizePt=$size;
    
$this->FontSize=$size/$this->k;
    if(
$this->page>0)
        
$this->_out(sprintf('BT /F%d %.2f Tf ET',$this->CurrentFont['i'],$this->FontSizePt));
}

function 
AddLink()
{
    
//Create a new internal link
    
$n=count($this->links)+1;
    
$this->links[$n]=array(0,0);
    return 
$n;
}

function 
SetLink($link,$y=0,$page=-1)
{
    
//Set destination of internal link
    
if($y==-1)
        
$y=$this->y;
    if(
$page==-1)
        
$page=$this->page;
    
$this->links[$link]=array($page,$y);
}

function 
Link($x,$y,$w,$h,$link)
{
    
//Put a link on the page
    
$this->PageLinks[$this->page][]=array($x*$this->k,$this->hPt-$y*$this->k,$w*$this->k,$h*$this->k,$link);
}

function 
Text($x,$y,$txt)
{
    
//Output a string
    
$s=sprintf('BT %.2f %.2f Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt));
    if(
$this->underline and $txt!='')
        
$s.=' '.$this->_dounderline($x,$y,$txt);
    if(
$this->ColorFlag)
        
$s='q '.$this->TextColor.' '.$s.' Q';
    
$this->_out($s);
}

function 
AcceptPageBreak()
{
    
//Accept automatic page break or not
    
return $this->AutoPageBreak;
}

*** 
continua 

Última edición por The_omars; 02/12/2004 a las 12:13
  #11 (permalink)  
Antiguo 02/12/2004, 12:12
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 10 meses
Puntos: 2
usa las etiquetas de codigo! [ code ] [ /code ] ...
__________________
I Love Programming...
  #12 (permalink)  
Antiguo 02/12/2004, 12:16
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Código PHP:
function Cell($w,$h=0,$txt='',$border=0,$ln=0,$align='',$fill=0,$link='')
{
    
//Output a cell
    
$k=$this->k;
    if(
$this->y+$h>$this->PageBreakTrigger and !$this->InFooter and $this->AcceptPageBreak())
    {
        
//Automatic page break
        
$x=$this->x;
        
$ws=$this->ws;
        if(
$ws>0)
        {
            
$this->ws=0;
            
$this->_out('0 Tw');
        }
        
$this->AddPage($this->CurOrientation);
        
$this->x=$x;
        if(
$ws>0)
        {
            
$this->ws=$ws;
            
$this->_out(sprintf('%.3f Tw',$ws*$k));
        }
    }
    if(
$w==0)
        
$w=$this->w-$this->rMargin-$this->x;
    
$s='';
    if(
$fill==or $border==1)
    {
        if(
$fill==1)
            
$op=($border==1) ? 'B' 'f';
        else
            
$op='S';
        
$s=sprintf('%.2f %.2f %.2f %.2f re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op);
    }
    if(
is_string($border))
    {
        
$x=$this->x;
        
$y=$this->y;
        if(
is_int(strpos($border,'L')))
            
$s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k);
        if(
is_int(strpos($border,'T')))
            
$s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k);
        if(
is_int(strpos($border,'R')))
            
$s.=sprintf('%.2f %.2f m %.2f %.2f l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
        if(
is_int(strpos($border,'B')))
            
$s.=sprintf('%.2f %.2f m %.2f %.2f l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k);
    }
    if(
$txt!='')
    {
        if(
$align=='R')
            
$dx=$w-$this->cMargin-$this->GetStringWidth($txt);
        elseif(
$align=='C')
            
$dx=($w-$this->GetStringWidth($txt))/2;
        else
            
$dx=$this->cMargin;
        if(
$this->ColorFlag)
            
$s.='q '.$this->TextColor.' ';
        
$txt2=str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$txt)));
        
$s.=sprintf('BT %.2f %.2f Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$txt2);
        if(
$this->underline)
            
$s.=' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt);
        if(
$this->ColorFlag)
            
$s.=' Q';
        if(
$link)
            
$this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link);
    }
    if(
$s)
        
$this->_out($s);
    
$this->lasth=$h;
    if(
$ln>0)
    {
        
//Go to next line
        
$this->y+=$h;
        if(
$ln==1)
            
$this->x=$this->lMargin;
    }
    else
        
$this->x+=$w;
}

function 
MultiCell($w,$h,$txt,$border=0,$align='J',$fill=0)
{
    
//Output text with automatic or explicit line breaks
    
$cw=&$this->CurrentFont['cw'];
    if(
$w==0)
        
$w=$this->w-$this->rMargin-$this->x;
    
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
    
$s=str_replace("\r",'',$txt);
    
$nb=strlen($s);
    if(
$nb>and $s[$nb-1]=="\n")
        
$nb--;
    
$b=0;
    if(
$border)
    {
        if(
$border==1)
        {
            
$border='LTRB';
            
$b='LRT';
            
$b2='LR';
        }
        else
        {
            
$b2='';
            if(
is_int(strpos($border,'L')))
                
$b2.='L';
            if(
is_int(strpos($border,'R')))
                
$b2.='R';
            
$b=is_int(strpos($border,'T')) ? $b2.'T' $b2;
        }
    }
    
$sep=-1;
    
$i=0;
    
$j=0;
    
$l=0;
    
$ns=0;
    
$nl=1;
    while(
$i<$nb)
    {
        
//Get next character
        
$c=$s{$i};
        if(
$c=="\n")
        {
            
//Explicit line break
            
if($this->ws>0)
            {
                
$this->ws=0;
                
$this->_out('0 Tw');
            }
            
$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
            
$i++;
            
$sep=-1;
            
$j=$i;
            
$l=0;
            
$ns=0;
            
$nl++;
            if(
$border and $nl==2)
                
$b=$b2;
            continue;
        }
        if(
$c==' ')
        {
            
$sep=$i;
            
$ls=$l;
            
$ns++;
        }
        
$l+=$cw[$c];
        if(
$l>$wmax)
        {
            
//Automatic line break
            
if($sep==-1)
            {
                if(
$i==$j)
                    
$i++;
                if(
$this->ws>0)
                {
                    
$this->ws=0;
                    
$this->_out('0 Tw');
                }
                
$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
            }
            else
            {
                if(
$align=='J')
                {
                    
$this->ws=($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0;
                    
$this->_out(sprintf('%.3f Tw',$this->ws*$this->k));
                }
                
$this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill);
                
$i=$sep+1;
            }
            
$sep=-1;
            
$j=$i;
            
$l=0;
            
$ns=0;
            
$nl++;
            if(
$border and $nl==2)
                
$b=$b2;
        }
        else
            
$i++;
    }
    
//Last chunk
    
if($this->ws>0)
    {
        
$this->ws=0;
        
$this->_out('0 Tw');
    }
    if(
$border and is_int(strpos($border,'B')))
        
$b.='B';
    
$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
    
$this->x=$this->lMargin;
}

function 
Write($h,$txt,$link='')
{
    
//Output text in flowing mode
    
$cw=&$this->CurrentFont['cw'];
    
$w=$this->w-$this->rMargin-$this->x;
    
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
    
$s=str_replace("\r",'',$txt);
    
$nb=strlen($s);
    
$sep=-1;
    
$i=0;
    
$j=0;
    
$l=0;
    
$nl=1;
    while(
$i<$nb)
    {
        
//Get next character
        
$c=$s{$i};
        if(
$c=="\n")
        {
            
//Explicit line break
            
$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link);
            
$i++;
            
$sep=-1;
            
$j=$i;
            
$l=0;
            if(
$nl==1)
            {
                
$this->x=$this->lMargin;
                
$w=$this->w-$this->rMargin-$this->x;
                
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
            }
            
$nl++;
            continue;
        }
        if(
$c==' ')
            
$sep=$i;
        
$l+=$cw[$c];
        if(
$l>$wmax)
        {
            
//Automatic line break
            
if($sep==-1)
            {
                if(
$this->x>$this->lMargin)
                {
                    
//Move to next line
                    
$this->x=$this->lMargin;
                    
$this->y+=$h;
                    
$w=$this->w-$this->rMargin-$this->x;
                    
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
                    
$i++;
                    
$nl++;
                    continue;
                }
                if(
$i==$j)
                    
$i++;
                
$this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',0,$link);
            }
            else
            {
                
$this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,'',0,$link);
                
$i=$sep+1;
            }
            
$sep=-1;
            
$j=$i;
            
$l=0;
            if(
$nl==1)
            {
                
$this->x=$this->lMargin;
                
$w=$this->w-$this->rMargin-$this->x;
                
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
            }
            
$nl++;
        }
        else
            
$i++;
    }
    
//Last chunk
    
if($i!=$j)
        
$this->Cell($l/1000*$this->FontSize,$h,substr($s,$j),0,0,'',0,$link);
}

function 
Image($file,$x,$y,$w=0,$h=0,$type='',$link='')
{
    
//Put an image on the page
    
if(!isset($this->images[$file]))
    {
        
//First use of image, get info
        
if($type=='')
        {
            
$pos=strrpos($file,'.');
            if(!
$pos)
                
$this->Error('Image file has no extension and no type was specified: '.$file);
            
$type=substr($file,$pos+1);
        }
        
$type=strtolower($type);
        
$mqr=get_magic_quotes_runtime();
        
set_magic_quotes_runtime(0);
        if(
$type=='jpg' or $type=='jpeg')
            
$info=$this->_parsejpg($file);
        elseif(
$type=='png')
            
$info=$this->_parsepng($file);
        elseif(
$type=='gif')                          // Added for GIF Support 
          
$info=$this->_parsegif($file); // Added for GIF Support
        
else
        {
            
//Allow for additional formats
            
$mtd='_parse'.$type;
            if(!
method_exists($this,$mtd))
                
$this->Error('Unsupported image file type: ' $type '<br>File : ' $file); // Better Error Description, by Didier DEBBAUT
              
$info=$this->$mtd($file);
        }
        
set_magic_quotes_runtime($mqr);
        
$info['i']=count($this->images)+1;
        
$this->images[$file]=$info;
    }
    else
        
$info=$this->images[$file];
    
//Automatic width and height calculation if needed
    
if($w==and $h==0)
    {
        
//Put image at 72 dpi
        
$w=$info['w']/$this->k;
        
$h=$info['h']/$this->k;
    }
    if(
$w==0)
        
$w=$h*$info['w']/$info['h'];
    if(
$h==0)
        
$h=$w*$info['h']/$info['w'];
    
$this->_out(sprintf('q %.2f 0 0 %.2f %.2f %.2f cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i']));
    if(
$link)
        
$this->Link($x,$y,$w,$h,$link);
}

function 
Ln($h='')
{
    
//Line feed; default value is last cell height
    
$this->x=$this->lMargin;
    if(
is_string($h))
        
$this->y+=$this->lasth;
    else
        
$this->y+=$h;
}

function 
GetX()
{
    
//Get x position
    
return $this->x;
}

function 
SetX($x)
{
    
//Set x position
    
if($x>=0)
        
$this->x=$x;
    else
        
$this->x=$this->w+$x;
}

function 
GetY()
{
    
//Get y position
    
return $this->y;
}

function 
SetY($y)
{
    
//Set y position and reset x
    
$this->x=$this->lMargin;
    if(
$y>=0)
        
$this->y=$y;
    else
        
$this->y=$this->h+$y;
}

function 
SetXY($x,$y)
{
    
//Set x and y positions
    
$this->SetY($y);
    
$this->SetX($x);
}

function 
Output($name='',$dest='')
{
    
//Output PDF to some destination
    
global $HTTP_SERVER_VARS;

    
//Finish document if necessary
    
if($this->state<3)
        
$this->Close();
    
//Normalize parameters
    
if(is_bool($dest))
        
$dest=$dest 'D' 'F';
    
$dest=strtoupper($dest);
    if(
$dest=='')
    {
        if(
$name=='')
        {
            
$name='doc.pdf';
            
$dest='I';
        }
        else
            
$dest='F';
    }
    switch(
$dest)
    {
        case 
'I':
            
//Send to standard output
            
if(isset($HTTP_SERVER_VARS['SERVER_NAME']))
            {
                
//We send to a browser
                
Header('Content-Type: application/pdf');
                if(
headers_sent())
                    
$this->Error('Some data has already been output to browser, can\'t send PDF file');
                
Header('Content-Length: '.strlen($this->buffer));
                
Header('Content-disposition: inline; filename='.$name); 
            }
            echo 
$this->buffer;
            break;
        case 
'D':
            
//Download file
            
if(isset($HTTP_SERVER_VARS['HTTP_USER_AGENT']) and strpos($HTTP_SERVER_VARS['HTTP_USER_AGENT'],'MSIE'))
                
Header('Content-Type: application/force-download');
            else
                
Header('Content-Type: application/octet-stream');
            if(
headers_sent())
                
$this->Error('Some data has already been output to browser, can\'t send PDF file');
            
Header('Content-Length: '.strlen($this->buffer));
            
Header('Content-disposition: attachment; filename='.$name);
            echo 
$this->buffer;
            break;
        case 
'F':
            
//Save to local file            
            
$f=fopen($name,'wb');
            if(!
$f)
                
$this->Error('Unable to create output file: '.$name);
            
fwrite($f,$this->buffer,strlen($this->buffer));
            
fclose($f);
            break;
        case 
'S':
            
//Return as a string
            
return $this->buffer;
        default:
            
$this->Error('Incorrect output destination: '.$dest);
    }
    return 
'';

**** continua
  #13 (permalink)  
Antiguo 02/12/2004, 12:18
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Código PHP:

/*******************************************************************************
*                                                                              *
*                              Protected methods                               *
*                                                                              *
*******************************************************************************/
function _dochecks()
{
    
//Check for locale-related bug
    
if(1.1==1)
        
$this->Error('Don\'t alter the locale before including class file');
    
//Check for decimal separator
    
if(sprintf('%.1f',1.0)!='1.0')
        
setlocale(LC_NUMERIC,'C');
}

function 
_begindoc()
{
    
//Start document
    
$this->state=1;
    
$this->_out('%PDF-1.3');
}

function 
_putpages()
{
    
$nb=$this->page;
    if(!empty(
$this->AliasNbPages))
    {
        
//Replace number of pages
        
for($n=1;$n<=$nb;$n++)
            
$this->pages[$n]=str_replace($this->AliasNbPages,$nb,$this->pages[$n]);
    }
    if(
$this->DefOrientation=='P')
    {
        
$wPt=$this->fwPt;
        
$hPt=$this->fhPt;
    }
    else
    {
        
$wPt=$this->fhPt;
        
$hPt=$this->fwPt;
    }
    
$filter=($this->compress) ? '/Filter /FlateDecode ' '';
    for(
$n=1;$n<=$nb;$n++)
    {
        
//Page
        
$this->_newobj();
        
$this->_out('<</Type /Page');
        
$this->_out('/Parent 1 0 R');
        if(isset(
$this->OrientationChanges[$n]))
            
$this->_out(sprintf('/MediaBox [0 0 %.2f %.2f]',$hPt,$wPt));
        
$this->_out('/Resources 2 0 R');
        if(isset(
$this->PageLinks[$n]))
        {
            
//Links
            
$annots='/Annots [';
            foreach(
$this->PageLinks[$n] as $pl)
            {
                
$rect=sprintf('%.2f %.2f %.2f %.2f',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]);
                
$annots.='<</Type /Annot /Subtype /Link /Rect ['.$rect.'] /Border [0 0 0] ';
                if(
is_string($pl[4]))
                    
$annots.='/A <</S /URI /URI '.$this->_textstring($pl[4]).'>>>>';
                else
                {
                    
$l=$this->links[$pl[4]];
                    
$h=isset($this->OrientationChanges[$l[0]]) ? $wPt $hPt;
                    
$annots.=sprintf('/Dest [%d 0 R /XYZ 0 %.2f null]>>',1+2*$l[0],$h-$l[1]*$this->k);
                }
            }
            
$this->_out($annots.']');
        }
        
$this->_out('/Contents '.($this->n+1).' 0 R>>');
        
$this->_out('endobj');
        
//Page content
        
$p=($this->compress) ? gzcompress($this->pages[$n]) : $this->pages[$n];
        
$this->_newobj();
        
$this->_out('<<'.$filter.'/Length '.strlen($p).'>>');
        
$this->_putstream($p);
        
$this->_out('endobj');
    }
    
//Pages root
    
$this->offsets[1]=strlen($this->buffer);
    
$this->_out('1 0 obj');
    
$this->_out('<</Type /Pages');
    
$kids='/Kids [';
    for(
$i=0;$i<$nb;$i++)
        
$kids.=(3+2*$i).' 0 R ';
    
$this->_out($kids.']');
    
$this->_out('/Count '.$nb);
    
$this->_out(sprintf('/MediaBox [0 0 %.2f %.2f]',$wPt,$hPt));
    
$this->_out('>>');
    
$this->_out('endobj');
}

function 
_putfonts()
{
    
$nf=$this->n;
    foreach(
$this->diffs as $diff)
    {
        
//Encodings
        
$this->_newobj();
        
$this->_out('<</Type /Encoding /BaseEncoding /WinAnsiEncoding /Differences ['.$diff.']>>');
        
$this->_out('endobj');
    }
    
$mqr=get_magic_quotes_runtime();
    
set_magic_quotes_runtime(0);
    foreach(
$this->FontFiles as $file=>$info)
    {
        
//Font file embedding
        
$this->_newobj();
        
$this->FontFiles[$file]['n']=$this->n;
        if(
defined('FPDF_FONTPATH'))
            
$file=FPDF_FONTPATH.$file;
        
$size=filesize($file);
        if(!
$size)
            
$this->Error('Font file not found');
        
$this->_out('<</Length '.$size);
        if(
substr($file,-2)=='.z')
            
$this->_out('/Filter /FlateDecode');
        
$this->_out('/Length1 '.$info['length1']);
        if(isset(
$info['length2']))
            
$this->_out('/Length2 '.$info['length2'].' /Length3 0');
        
$this->_out('>>');
        
$f=fopen($file,'rb');
        
$this->_putstream(fread($f,$size));
        
fclose($f);
        
$this->_out('endobj');
    }
    
set_magic_quotes_runtime($mqr);
    foreach(
$this->fonts as $k=>$font)
    {
        
//Font objects
        
$this->fonts[$k]['n']=$this->n+1;
        
$type=$font['type'];
        
$name=$font['name'];
        if(
$type=='core')
        {
            
//Standard font
            
$this->_newobj();
            
$this->_out('<</Type /Font');
            
$this->_out('/BaseFont /'.$name);
            
$this->_out('/Subtype /Type1');
            if(
$name!='Symbol' and $name!='ZapfDingbats')
                
$this->_out('/Encoding /WinAnsiEncoding');
            
$this->_out('>>');
            
$this->_out('endobj');
        }
        elseif(
$type=='Type1' or $type=='TrueType')
        {
            
//Additional Type1 or TrueType font
            
$this->_newobj();
            
$this->_out('<</Type /Font');
            
$this->_out('/BaseFont /'.$name);
            
$this->_out('/Subtype /'.$type);
            
$this->_out('/FirstChar 32 /LastChar 255');
            
$this->_out('/Widths '.($this->n+1).' 0 R');
            
$this->_out('/FontDescriptor '.($this->n+2).' 0 R');
            if(
$font['enc'])
            {
                if(isset(
$font['diff']))
                    
$this->_out('/Encoding '.($nf+$font['diff']).' 0 R');
                else
                    
$this->_out('/Encoding /WinAnsiEncoding');
            }
            
$this->_out('>>');
            
$this->_out('endobj');
            
//Widths
            
$this->_newobj();
            
$cw=&$font['cw'];
            
$s='[';
            for(
$i=32;$i<=255;$i++)
                
$s.=$cw[chr($i)].' ';
            
$this->_out($s.']');
            
$this->_out('endobj');
            
//Descriptor
            
$this->_newobj();
            
$s='<</Type /FontDescriptor /FontName /'.$name;
            foreach(
$font['desc'] as $k=>$v)
                
$s.=' /'.$k.' '.$v;
            
$file=$font['file'];
            if(
$file)
                
$s.=' /FontFile'.($type=='Type1' '' '2').' '.$this->FontFiles[$file]['n'].' 0 R';
            
$this->_out($s.'>>');
            
$this->_out('endobj');
        }
        else
        {
            
//Allow for additional types
            
$mtd='_put'.strtolower($type);
            if(!
method_exists($this,$mtd))
                
$this->Error('Unsupported font type: '.$type);
            
$this->$mtd($font);
        }
    }
}

function 
_putimages()
{
    
$filter=($this->compress) ? '/Filter /FlateDecode ' '';
    
reset($this->images);
    while(list(
$file,$info)=each($this->images))
    {
        
$this->_newobj();
        
$this->images[$file]['n']=$this->n;
        
$this->_out('<</Type /XObject');
        
$this->_out('/Subtype /Image');
        
$this->_out('/Width '.$info['w']);
        
$this->_out('/Height '.$info['h']);
        if(
$info['cs']=='Indexed')
            
$this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]');
        else
        {
            
$this->_out('/ColorSpace /'.$info['cs']);
            if(
$info['cs']=='DeviceCMYK')
                
$this->_out('/Decode [1 0 1 0 1 0 1 0]');
        }
        
$this->_out('/BitsPerComponent '.$info['bpc']);
        if(isset(
$info['f'])) 
          
$this->_out('/Filter /'.$info['f']);
        if(isset(
$info['parms']))
            
$this->_out($info['parms']);
        if(isset(
$info['trns']) and is_array($info['trns']))
        {
            
$trns='';
            for(
$i=0;$i<count($info['trns']);$i++)
                
$trns.=$info['trns'][$i].' '.$info['trns'][$i].' ';
            
$this->_out('/Mask ['.$trns.']');
        }
        
$this->_out('/Length '.strlen($info['data']).'>>');
        
$this->_putstream($info['data']);
        unset(
$this->images[$file]['data']);
        
$this->_out('endobj');
        
//Palette
        
if($info['cs']=='Indexed')
        {
            
$this->_newobj();
            
$pal=($this->compress) ? gzcompress($info['pal']) : $info['pal'];
            
$this->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
            
$this->_putstream($pal);
            
$this->_out('endobj');
        }
    }
}

function 
_putresources()
{
    
$this->_putfonts();
    
$this->_putimages();
    
//Resource dictionary
    
$this->offsets[2]=strlen($this->buffer);
    
$this->_out('2 0 obj');
    
$this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
    
$this->_out('/Font <<');
    foreach(
$this->fonts as $font)
        
$this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
    
$this->_out('>>');
    if(
count($this->images))
    {
        
$this->_out('/XObject <<');
        foreach(
$this->images as $image)
            
$this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
        
$this->_out('>>');
    }
    
$this->_out('>>');
    
$this->_out('endobj');

  #14 (permalink)  
Antiguo 02/12/2004, 12:20
Avatar de The_omars  
Fecha de Ingreso: marzo-2004
Mensajes: 271
Antigüedad: 20 años, 1 mes
Puntos: 0
Código PHP:

function _putinfo()
{
    
$this->_out('/Producer '.$this->_textstring('FPDF '.FPDF_VERSION));
    if(!empty(
$this->title))
        
$this->_out('/Title '.$this->_textstring($this->title));
    if(!empty(
$this->subject))
        
$this->_out('/Subject '.$this->_textstring($this->subject));
    if(!empty(
$this->author))
        
$this->_out('/Author '.$this->_textstring($this->author));
    if(!empty(
$this->keywords))
        
$this->_out('/Keywords '.$this->_textstring($this->keywords));
    if(!empty(
$this->creator))
        
$this->_out('/Creator '.$this->_textstring($this->creator));
    
$this->_out('/CreationDate '.$this->_textstring('D:'.date('YmdHis')));
}

function 
_putcatalog()
{
    
$this->_out('/Type /Catalog');
    
$this->_out('/Pages 1 0 R');
    if(
$this->ZoomMode=='fullpage')
        
$this->_out('/OpenAction [3 0 R /Fit]');
    elseif(
$this->ZoomMode=='fullwidth')
        
$this->_out('/OpenAction [3 0 R /FitH null]');
    elseif(
$this->ZoomMode=='real')
        
$this->_out('/OpenAction [3 0 R /XYZ null null 1]');
    elseif(!
is_string($this->ZoomMode))
        
$this->_out('/OpenAction [3 0 R /XYZ null null '.($this->ZoomMode/100).']');
    if(
$this->LayoutMode=='single')
        
$this->_out('/PageLayout /SinglePage');
    elseif(
$this->LayoutMode=='continuous')
        
$this->_out('/PageLayout /OneColumn');
    elseif(
$this->LayoutMode=='two')
        
$this->_out('/PageLayout /TwoColumnLeft');
}

function 
_puttrailer()
{
    
$this->_out('/Size '.($this->n+1));
    
$this->_out('/Root '.$this->n.' 0 R');
    
$this->_out('/Info '.($this->n-1).' 0 R');
}

function 
_enddoc()
{
    
$this->_putpages();
    
$this->_putresources();
    
//Info
    
$this->_newobj();
    
$this->_out('<<');
    
$this->_putinfo();
    
$this->_out('>>');
    
$this->_out('endobj');
    
//Catalog
    
$this->_newobj();
    
$this->_out('<<');
    
$this->_putcatalog();
    
$this->_out('>>');
    
$this->_out('endobj');
    
//Cross-ref
    
$o=strlen($this->buffer);
    
$this->_out('xref');
    
$this->_out('0 '.($this->n+1));
    
$this->_out('0000000000 65535 f ');
    for(
$i=1;$i<=$this->n;$i++)
        
$this->_out(sprintf('%010d 00000 n ',$this->offsets[$i]));
    
//Trailer
    
$this->_out('trailer');
    
$this->_out('<<');
    
$this->_puttrailer();
    
$this->_out('>>');
    
$this->_out('startxref');
    
$this->_out($o);
    
$this->_out('%%EOF');
    
$this->state=3;
}

function 
_beginpage($orientation)
{
    
$this->page++;
    
$this->pages[$this->page]='';
    
$this->state=2;
    
$this->x=$this->lMargin;
    
$this->y=$this->tMargin;
    
$this->FontFamily='';
    
//Page orientation
    
if(!$orientation)
        
$orientation=$this->DefOrientation;
    else
    {
        
$orientation=strtoupper($orientation{0});
        if(
$orientation!=$this->DefOrientation)
            
$this->OrientationChanges[$this->page]=true;
    }
    if(
$orientation!=$this->CurOrientation)
    {
        
//Change orientation
        
if($orientation=='P')
        {
            
$this->wPt=$this->fwPt;
            
$this->hPt=$this->fhPt;
            
$this->w=$this->fw;
            
$this->h=$this->fh;
        }
        else
        {
            
$this->wPt=$this->fhPt;
            
$this->hPt=$this->fwPt;
            
$this->w=$this->fh;
            
$this->h=$this->fw;
        }
        
$this->PageBreakTrigger=$this->h-$this->bMargin;
        
$this->CurOrientation=$orientation;
    }
}

function 
_endpage()
{
    
//End of page contents
    
$this->state=1;
}

function 
_newobj()
{
    
//Begin a new object
    
$this->n++;
    
$this->offsets[$this->n]=strlen($this->buffer);
    
$this->_out($this->n.' 0 obj');
}

function 
_dounderline($x,$y,$txt)
{
    
//Underline text
    
$up=$this->CurrentFont['up'];
    
$ut=$this->CurrentFont['ut'];
    
$w=$this->GetStringWidth($txt)+$this->ws*substr_count($txt,' ');
    return 
sprintf('%.2f %.2f %.2f %.2f re f',$x*$this->k,($this->h-($y-$up/1000*$this->FontSize))*$this->k,$w*$this->k,-$ut/1000*$this->FontSizePt);
}

function 
_parsejpg($file)
{
    
//Extract info from a JPEG file
    
$a=GetImageSize($file);
    if(!
$a)
        
        print(
'Missing or incorrect image file: '.$file);
        
$file=DIR_S_CATALOG.DIR_WS_IMAGES.DEFAULT_IMAGE;
        
//$this->Error('Missing or incorrect image file: '.$file);
        
    
if($a[2]!=2)
        
$this->Error('Not a JPEG file: '.$file);
    if(!isset(
$a['channels']) or $a['channels']==3)
        
$colspace='DeviceRGB';
    elseif(
$a['channels']==4)
        
$colspace='DeviceCMYK';
    else
        
$colspace='DeviceGray';

    
$bpc=isset($a['bits']) ? $a['bits'] : 8;
    
//Read whole file
    
$f=fopen($file,'rb');
    
$data='';
    while(!
feof($f))
        
$data.=fread($f,4096);
    
fclose($f);
    return array(
'w'=>$a[0],'h'=>$a[1],'cs'=>$colspace,'bpc'=>$bpc,'f'=>'DCTDecode','data'=>$data);
}

function 
_parsepng($file)
{
    
//Extract info from a PNG file
    
$f=fopen($file,'rb');
    if(!
$f)
        
$this->Error('Can\'t open image file: '.$file);
    
//Check signature
    
if(fread($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10))
        
$this->Error('Not a PNG file: '.$file);
    
//Read header chunk
    
fread($f,4);
    if(
fread($f,4)!='IHDR')
        
$this->Error('Incorrect PNG file: '.$file);
    
$w=$this->_freadint($f);
    
$h=$this->_freadint($f);
    
$bpc=ord(fread($f,1));
    if(
$bpc>8)
        
$this->Error('16-bit depth not supported: '.$file);
    
$ct=ord(fread($f,1));
    if(
$ct==0)
        
$colspace='DeviceGray';
    elseif(
$ct==2)
        
$colspace='DeviceRGB';
    elseif(
$ct==3)
        
$colspace='Indexed';
    else
        
$this->Error('Alpha channel not supported: '.$file);
    if(
ord(fread($f,1))!=0)
        
$this->Error('Unknown compression method: '.$file);
    if(
ord(fread($f,1))!=0)
        
$this->Error('Unknown filter method: '.$file);
    if(
ord(fread($f,1))!=0)
        
$this->Error('Interlacing not supported: '.$file);
    
fread($f,4);
    
$parms='/DecodeParms <</Predictor 15 /Colors '.($ct==1).' /BitsPerComponent '.$bpc.' /Columns '.$w.'>>';
    
//Scan chunks looking for palette, transparency and image data
    
$pal='';
    
$trns='';
    
$data='';
    do
    {
        
$n=$this->_freadint($f);
        
$type=fread($f,4);
        if(
$type=='PLTE')
        {
            
//Read palette
            
$pal=fread($f,$n);
            
fread($f,4);
        }
        elseif(
$type=='tRNS')
        {
            
//Read transparency info
            
$t=fread($f,$n);
            if(
$ct==0)
                
$trns=array(ord(substr($t,1,1)));
            elseif(
$ct==2)
                
$trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1)));
            else
            {
                
$pos=strpos($t,chr(0));
                if(
is_int($pos))
                    
$trns=array($pos);
            }
            
fread($f,4);
        }
        elseif(
$type=='IDAT')
        {
            
//Read image data block
            
$data.=fread($f,$n);
            
fread($f,4);
        }
        elseif(
$type=='IEND')
            break;
        else
            
fread($f,$n+4);
    }
    while(
$n);
    if(
$colspace=='Indexed' and empty($pal))
        
$this->Error('Missing palette in '.$file);
    
fclose($f);
    return array(
'w'=>$w,'h'=>$h,'cs'=>$colspace,'bpc'=>$bpc,'f'=>'FlateDecode','parms'=>$parms,'pal'=>$pal,'trns'=>$trns,'data'=>$data);
}

// Added for GIF Support
function _parsegif($file

    
//Function by Jerome Fenal ([email protected])
    
require_once 'pdf_gif.php'//GIF class in pure PHP from Yamasoft ([url]http://www.yamasoft.com/php-gif.zip[/url])

    
$h=0;
    
$w=0;
    
$gif=new CGIF();

    if (!
$gif->loadFile($file0))
        
$this->Error("GIF parser: unable to open file $file");

    if(
$gif->m_img->m_gih->m_bLocalClr) {
        
$nColors $gif->m_img->m_gih->m_nTableSize;
        
$pal $gif->m_img->m_gih->m_colorTable->toString();
        if(
$bgColor != -1) {
            
$bgColor $this->m_img->m_gih->m_colorTable->colorIndex($bgColor);
        }
        
$colspace='Indexed';
    } elseif(
$gif->m_gfh->m_bGlobalClr) {
        
$nColors $gif->m_gfh->m_nTableSize;
        
$pal $gif->m_gfh->m_colorTable->toString();
        if(
$bgColor != -1) {
            
$bgColor $gif->m_gfh->m_colorTable->colorIndex($bgColor);
        }
        
$colspace='Indexed';
    } else {
        
$nColors 0;
        
$bgColor = -1;
        
$colspace='DeviceGray';
        
$pal='';
    }

    
$trns='';
    if(
$gif->m_img->m_bTrans && ($nColors 0)) {
        
$trns=array($gif->m_img->m_nTrans);
    }

    
$data=$gif->m_img->m_data;
    
$w=$gif->m_gfh->m_nWidth;
    
$h=$gif->m_gfh->m_nHeight;

    if(
$colspace=='Indexed' and empty($pal))
        
$this->Error('Missing palette in '.$file);

    if (
$this->compress) {
        
$data=gzcompress($data);
        return array( 
'w'=>$w'h'=>$h'cs'=>$colspace'bpc'=>8'f'=>'FlateDecode''pal'=>$pal'trns'=>$trns'data'=>$data);
    } else {
        return array( 
'w'=>$w'h'=>$h'cs'=>$colspace'bpc'=>8'pal'=>$pal'trns'=>$trns'data'=>$data);
    } 
}
// EOA

function _freadint($f)
{
    
//Read a 4-byte integer from file
    
$i=ord(fread($f,1))<<24;
    
$i+=ord(fread($f,1))<<16;
    
$i+=ord(fread($f,1))<<8;
    
$i+=ord(fread($f,1));
    return 
$i;
}

function 
_textstring($s)
{
    
//Format a text string
    
return '('.$this->_escape($s).')';
}

function 
_escape($s)
{
    
//Add \ before \, ( and )
    
return str_replace(')','\\)',str_replace('(','\\(',str_replace('\\','\\\\',$s)));
}

function 
_putstream($s)
{
    
$this->_out('stream');
    
$this->_out($s);
    
$this->_out('endstream');
}

function 
_out($s)
{
    
//Add a line to the document
    
if($this->state==2)
        
$this->pages[$this->page].=$s."\n";
    else
        
$this->buffer.=$s."\n";
}
//End of class
}

//Handle special IE contype request
if(isset($HTTP_SERVER_VARS['HTTP_USER_AGENT']) and $HTTP_SERVER_VARS['HTTP_USER_AGENT']=='contype')
{
    
Header('Content-Type: application/pdf');
    exit;
}
}
?> 


ojala y me puedan ayudar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:26.