Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/04/2009, 15:24
cmarrero
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 3 meses
Puntos: 2
Exclamación Libreria FPDF, Que la Salida me guarde el archivo.

Hice lo siguiente...

Un formulario me carga un archivo xml en una carpeta, este mismo archivo lo tomo con php y lo cargo a un funcion que arme para que el xml me sirva de contenido del PDF.

Con la Libreria FPDF creo el archivo sin problemas, y genero el PDF, el tema es que me lo abre obviamente.

Quisiera saber si alguien me da una mano, para ver como guardar el archivo que me genera la libreria en una carpeta de mi servidor (ojo, no es para que me lo descargue el usuario, si no para que se guarde en el servidor).

El siguiente es el codigo de lo que arme, para generar el PDF

productos1.php
Código PHP:
<?php
function leer_XML($nombre_archivo){
require(
'fpdf/fpdf.php');

class 
PDF extends FPDF
{
    
//Cabecera de página
    
function Header()
    {
        
//Logo
        
$this->Image('Header.jpg',0,0,220);
        
//Salto de línea
        
$this->Ln(22);
    }
    
    
//Pie de página
    
function Footer()
    {
        
//Posición: a 1,5 cm del final
        
$this->SetY(-15);
        
//Arial italic 8
        
$this->SetFont('Arial','I',8);
        
//Número de página
        
$this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
    }
}

        
$archivo_XML file_get_contents ($nombre_archivo);
        if (empty(
$archivo_XML))
        die(
"No pudimos conectar");
    
        
preg_match_all("|<item>(.*)</item>|sU"$archivo_XML$items);
    
        
$listar_nodos = array();
    
        foreach (
$items[1] as $key => $item)
        {
            
preg_match("|<CDSECTOR>(.*)</CDSECTOR>|s"$item$sector);
            
preg_match("|<CDGRUPOARTICULOS>(.*)</CDGRUPOARTICULOS>|s"$item$grupo);
            
preg_match("|<VLDESCRIPCION>(.*)</VLDESCRIPCION>|s"$item$descripcion);
            
preg_match("|<AMPRECIOPLU>(.*)</AMPRECIOPLU>|s"$item$precio);
    
            
$listar_nodos[$key]['sector'] = $sector[1];
            
$listar_nodos[$key]['grupo'] = $grupo[1];
            
$listar_nodos[$key]['descripcion'] = $descripcion[1];
            
$listar_nodos[$key]['precio'] = $precio[1];
        
        }

$pdf=new PDF();

$pdf->AliasNbPages();
    
//Altura
    
$y_axis_initial 30;
    
$pdf->AddPage();
    
$pdf->SetFillColor(150,150,150);
    
$pdf->SetFont('Arial','B',12);
    
$pdf->SetY($y_axis_initial);
    
$pdf->SetX(10);
    
$pdf->Cell(15,6,'Sector',1,0,'C',1);
    
$pdf->Cell(30,6,'Grupo',1,0,'C',1);
    
$pdf->Cell(100,6,'Descripcion',1,0,'C',1);
    
$pdf->Cell(20,6,'Precio',1,0,'C',1);


$num 0;
$max 39;
$altura_linea 37;
$numRow 1;
for (
$e 0$e 200$e++)
{
if(
$numRow == 1){
$colorRow "232";
$numRow 2;
}else{
$colorRow "192";
$numRow 1;
}
   
    
$sector $listar_nodos[$e]['sector'];
    
$grupo $listar_nodos[$e]['grupo'];
    
$descripion $listar_nodos[$e]['descripcion'];
    
$precio $listar_nodos[$e]['precio'];
    
    if(
$num == $max){
            
$pdf->AddPage();
            
$pdf->SetFillColor(150,150,150);
            
$pdf->SetFont('Arial','B',12);
            
$pdf->SetY($y_axis_initial);
            
$pdf->SetX(10);
            
$pdf->Cell(15,6,'Sector',1,0,'C',1);
            
$pdf->Cell(30,6,'Grupo',1,0,'C',1);
            
$pdf->Cell(100,6,'Descripcion',1,0,'C',1);
            
$pdf->Cell(20,6,'Precio',1,0,'C',1);
            
$altura_linea $y_axis_initial 6;
            
$num 0;
        }
    
$pdf->SetFillColor($colorRow,$colorRow,$colorRow);
    
$pdf->SetY($altura_linea);
    
$pdf->SetX(10);
    
$pdf->Cell(15,6,$sector,1,0,'L',1);
    
$pdf->Cell(30,6,$grupo,1,0,'L',1);
    
$pdf->Cell(100,6,$descripion,1,0,'L',1);
    
$pdf->Cell(20,6,$precio,1,0,'L',1);
    
$altura_linea $altura_linea 6;
    
$num $num 1;

}

$pdf->Output();
}
?>

El siguiente es donde cargo el XML y se debe crear tanto el xml guardarse en una carpeta (que eso ya funciona perfecto) y el PDF que se guarde tambien en una carpeta que es lo que faltaria hacer...


cargar_producto.php
Código PHP:
<?
if(isset($_POST["cargar"])){
$destino 'xml' ;
// Leemos el tamaño del fichero
$tipo $_FILES 'archivo' ][ 'type' ];

$fecha time();
$fecha date("d-m-y-i-s",$fecha);
    if(
$tipo == "text/xml"){
        
move_uploaded_file $_FILES 'archivo' ][ 'tmp_name' ], $destino '/catalogo'.$fecha.'.xml');
        
        require(
"productos1.php");
        
        
$archivo 'catalogo.pdf';
        
$fp fopen($archivo"a");
        
$string leer_XML($destino."/catalogo".$fecha.".xml");
        
$write fputs($fp$string);
        
fclose($fp);
        
    }
    else{
        echo 
"Archivo incorrecto: Debe cargar un archivo de tipo XML";
    }
}
else{
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cargar Producto</title>
</head>
<body>
<div>Por favor ingrese su archivo XML para generar el documento en PDF</div>
<div>
  <form action="cargar_producto.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
    Busque el Archivo:
    <label>
    <input type="file" name="archivo" id="archivo" />
    </label>
    <p>
      <label>
      <input type="submit" name="cargar" id="cargar" value="Cargar Archivo" />
      </label>
    </p>
  </form>
</div>
</body>
</html>