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>