Foros del Web » Programando para Internet » PHP »

de PHP a PDF

Estas en el tema de de PHP a PDF en el foro de PHP en Foros del Web. Buenas , no se si ustedes saben como puedo generar mi pdf, Ya tengo algo adelantado , la misma persona que hace login en mi ...
  #1 (permalink)  
Antiguo 17/08/2011, 10:50
 
Fecha de Ingreso: febrero-2007
Ubicación: Caracas
Mensajes: 148
Antigüedad: 17 años, 2 meses
Puntos: 6
de PHP a PDF

Buenas , no se si ustedes saben como puedo generar mi pdf,

Ya tengo algo adelantado , la misma persona que hace login en mi pagina, realiza una cotizacion en linea, selecciona productos, y luego ve su cotizacion, despues genero mi cotizacion.pdf

Este es mi codigo, pero me tranque en: donde llamo a
Código:
<div><?php include($_SERVER[DOCUMENT_ROOT] . '/site/vercarrito.php'); ?></div>
Código PHP:
<?php
require_once("dompdf/dompdf_config.inc.php");
session_start();
$data_root $_SERVER[DOCUMENT_ROOT];
include (
$data_root "/site/sec/funciones.php");
$menu_links "";
if (isset(
$_SESSION['id'])) {
    
$userid $_SESSION['id'];
    
$usuario $_SESSION['usuario'];
    
//CREACION DEL MENU AUTOMATICO
    //MENU USUARIOS REGISTRADOS
    
$menu_links '<a href="cuenta.php?id=' $userid '">' $usuario '</a> &bull; <a href="logout.php">Fin Sesion</a>';
} else {
    
//MENU USUARIOS NO REGISTRADOS
    
$menu_links '<a href="registro.php">Registrarse</a> &bull; <a href="login.php">Inicio de Sesion</a>';
    
header("location: cuenta.php");
    exit();
}

$menu_links2 "";
$sql mysql_query("SELECT * FROM registro WHERE id='$userid'");
if(
$row mysql_fetch_array($sql)){
    
$nombres $row["nombres"];
    
$apellidos $row["apellidos"];
    
$email $row["email"];
    
$telefonos $row["telefono"];
    
$nick$row["nick"];
    
$password$row["password"];
    
$estado$row["estado"];
    
$zona$row["zona"];
}

 
  
$fecha date("d-m-Y");
$html=
"<html>
  
 <body  bgcolor='#FFFFFF'>
<div id='contenido'><div class='header'>
<table width='700' border='0'>
<tr> 
<td height='108' align='left'><img src='img/logo.gif' border='0' /></td>
</tr>
</table>
</div>
<div class='principal' align='center'>
    <div class='cabeza' >Cotizaci&oacute;n de Productos</div>
    
<table width='601' align='center'>
<tr>
<td width='192' align='center'>Datos del Usuario</td>
<td align='right'>Fecha de Cotizaci&oacute;n $fecha</td>
</tr>
<tr>
<td align='center'>Nombre</td><td width='397'>$nombres</td>
</tr>
<tr>
<td align='center'>Apellidos</td>
<td>$apellidos></td>
</tr>
<tr>
<td align='center'>Telefono</td>
<td>$telefonos</td>
</tr>
<tr>
<td colspan='2'></td>
</tr>
</table>
<br />
<div><?php include($_SERVER[DOCUMENT_ROOT] . '/site/vercarrito.php'); ?></div></div>
</div>
</body>
</html>
"
;
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("cotizacion.pdf");
?>
Ya veo del PDF el Logo , Nombres , Apellidos, Telefonos, y la fecha actual.
mas no los productos.
  #2 (permalink)  
Antiguo 17/08/2011, 11:30
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: de PHP a PDF

quitale las etiquetas de php a donde estas incluyendo el carrito ya que ya estas trabajando sobre php, aunque no se si el dompdf te tome los includes, seria cuestion de que probaras
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 18/08/2011, 08:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: de PHP a PDF

Lo que sucede, es que dicho include está dentro de una cadena de texto por lo tanto no se va a ejecutar.

Lo que puedes hacer es capturar dicho include en un buffer, y pasarlo como variable al texto:
Código PHP:
ob_start();
include(
$_SERVER[DOCUMENT_ROOT] . '/site/vercarrito.php');
$contenido ob_get_clean();

// ...

$html "<div>$contenido</div>"
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 18/08/2011, 12:35
 
Fecha de Ingreso: febrero-2007
Ubicación: Caracas
Mensajes: 148
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: de PHP a PDF

Jejeje disculpa

pero no me resulto se ve solo la vista del contenido de la cotizacion solo productos seleeccionados, no me genera el PDF y menos se ven los datos personales del cliente.

me genera el recuadro de los productos y esto

"Unable to stream pdf: headers already sent"

:(

Luego le quite el

session_start();
y coloque tal cual como lo explicas, me da lo siguiente:

Fatal error: Call to a member function get_cellmap() on a non-object in C:\xampp\htdocs\site\dompdf\include\table_cell_fra me_reflower.cls.php on line 64
  #5 (permalink)  
Antiguo 18/08/2011, 12:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: de PHP a PDF

Aquí la pregunta sería, ¿en que punto del script estas incluyendo el código como te sugerí?

Según el mensaje de error, hace referencia a DOMPDF, de forma que el include debería hacerse justo después de crear el objeto de DOMPDF, ¿es así?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 18/08/2011, 12:51
 
Fecha de Ingreso: febrero-2007
Ubicación: Caracas
Mensajes: 148
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: de PHP a PDF

Aqui va jejeje no estoy segura :(

Cita:
<?php
require_once("dompdf/dompdf_config.inc.php");
session_start();
$data_root = $_SERVER[DOCUMENT_ROOT];
include ($data_root . "/site/sec/funciones.php");
include($_SERVER[DOCUMENT_ROOT] . '/site/vercarrito.php');
$contenido = ob_get_clean();

$menu_links = "";
if (isset($_SESSION['id'])) { $userid = $_SESSION['id'];
$usuario = $_SESSION['usuario'];
//CREACION DEL MENU AUTOMATICO
//MENU USUARIOS REGISTRADOS
$menu_links = '<a href="cuenta.php?id=' . $userid . '">' . $usuario . '</a> &bull; <a href="logout.php">Fin Sesion</a>';
} else {
//MENU USUARIOS NO REGISTRADOS
$menu_links = '<a href="registro.php">Registrarse</a> &bull; <a href="login.php">Inicio de Sesion</a>';
header("location: cuenta.php");
exit();
}
$menu_links2 = "";
$sql = mysql_query("SELECT * FROM registro WHERE id='$userid'");
if($row = mysql_fetch_array($sql)){
$nombres = $row["nombres"];
$apellidos = $row["apellidos"];
$email = $row["email"];
$telefonos = $row["telefono"];
$nick= $row["nick"];
$password= $row["password"];
$estado= $row["estado"];
$zona= $row["zona"];
}
$fecha = date("d-m-Y");
$html=
"<html>
<body bgcolor='#FFFFFF'>
<div id='contenido'>
<div class='header'>
<table width='700' border='0'>
<tr>
<td height='108' align='left'><img src='img/logo.gif' border='0' /></td>
</tr>
</table>
</div>
<div class='principal' align='center'>
<div class='cabeza' >Cotizaci&oacute;n de Productos</div>
<table width='601' align='center'>
<tr>
<td width='192' align='center'>Datos del Usuario</td>
<td align='right'>Fecha de Cotizaci&oacute;n $fecha</td>
</tr>
<tr>
<td align='center'>Nombre</td><td width='397'>$nombres</td>
</tr>
<tr>
<td align='center'>Apellidos</td>
<td>$apellidos</td>
</tr>
<tr>
<td align='center'>Telefono</td>
<td>$telefonos</td>
</tr>
<tr>
<td colspan='2'></td>
</tr>
</table>
<br />
<br />
<br />
<br /><br />
<div>$contenido</div>
</body>
</html>";
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("cotizacion.pdf");
?>
  #7 (permalink)  
Antiguo 18/08/2011, 13:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: de PHP a PDF

A eso es a lo que me refiero, tu haces el include al inicio de tu script lo cual está mal.

Si dicho script hace uso de las funciones de DOMPDF, entonces deberías instanciar primero el objeto de DOMPDF y luego incluir dicho script, ¿no te parece mas lógico?

PDTA: la función para abrir el buffer es ob_start() y no session_start() procura leer con atención lo que se te comenta, por favor.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 18/08/2011, 13:11
 
Fecha de Ingreso: febrero-2007
Ubicación: Caracas
Mensajes: 148
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: de PHP a PDF

Sobre Buffer yo estoy llamando los datos desde mi Tabla registro jejeje, la parte de buffer solo la uso para productos seleccionados por el cliente...

o no se si me recomiendas el ob_start() , pero no se si me sirva para mi sistema.

lo otro a ver si capte

Cita:
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("cotizacion.pdf");
arriba de mis funciones pricipales ?
  #9 (permalink)  
Antiguo 18/08/2011, 13:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: de PHP a PDF

Por favor, ¿de verdad estas prestando atención de lo que te he dicho?

Creo que ya te confundiste bastante, la instanciación solo debes hacerla antes de que algún código use dicho objeto. Solo la instanciación, $dompdf = new DOMPDF();, no todo.

Segundo, el ob_start() claro que funciona si es que de verdad comprendes lo que hace, no confundas ob_start() con session_start(), lee el manual.

De veras... sal a tomar un poco de aire, creo que te estas enredando tu sola, pues entiendes lo que quieres entender y no lo que realmente deberías.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 18/08/2011, 13:52
 
Fecha de Ingreso: febrero-2007
Ubicación: Caracas
Mensajes: 148
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: de PHP a PDF

Cita:
Iniciado por pateketrueke Ver Mensaje
Por favor, ¿de verdad estas prestando atención de lo que te he dicho?

Creo que ya te confundiste bastante, la instanciación solo debes hacerla antes de que algún código use dicho objeto. Solo la instanciación, $dompdf = new DOMPDF();, no todo.

Segundo, el ob_start() claro que funciona si es que de verdad comprendes lo que hace, no confundas ob_start() con session_start(), lee el manual.

De veras... sal a tomar un poco de aire, creo que te estas enredando tu sola, pues entiendes lo que quieres entender y no lo que realmente deberías.
Thanks te escribo como me fue,,,,
  #11 (permalink)  
Antiguo 18/08/2011, 14:32
 
Fecha de Ingreso: febrero-2007
Ubicación: Caracas
Mensajes: 148
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: de PHP a PDF

Ya descubri algo he puesto
Cita:
include($_SERVER[DOCUMENT_ROOT] . "/site/vercarrito.php");
en cada linea casi y me muestra solo el cuadro de la cotizacion , y sale

Unable to stream pdf: headers already sent

es decir hay algo en head que no deja que lea lo demas, dejame ver si trayendome la info desde una tabla,
  #12 (permalink)  
Antiguo 22/08/2011, 14:41
 
Fecha de Ingreso: febrero-2007
Ubicación: Caracas
Mensajes: 148
Antigüedad: 17 años, 2 meses
Puntos: 6
Respuesta: de PHP a PDF

Solucionado cotizacion.php se convierte en PDF

Cita:
<?php
require_once("dompdf/dompdf_config.inc.php");
session_start();
$data_root = $_SERVER[DOCUMENT_ROOT];
include ($data_root . "/site/sec/funciones.php");


$menu_links = "";
if (isset($_SESSION['id'])) { $userid = $_SESSION['id'];
$usuario = $_SESSION['usuario'];
//CREACION DEL MENU AUTOMATICO
//MENU USUARIOS REGISTRADOS
$menu_links = '<a href="cuenta.php?id=' . $userid . '">' . $usuario . '</a> &bull; <a href="logout.php">Fin Sesion</a>';
} else {
//MENU USUARIOS NO REGISTRADOS
$menu_links = '<a href="registro.php">Registrarse</a> &bull; <a href="login.php">Inicio de Sesion</a>';
header("location: cuenta.php");
exit();
}
$menu_links2 = "";
$sql = mysql_query("SELECT * FROM registro WHERE id='$userid'");
if($row = mysql_fetch_array($sql)){
$nombres = $row["nombres"];
$apellidos = $row["apellidos"];
$email = $row["email"];
$telefonos = $row["telefono"];
$nick= $row["nick"];
$password= $row["password"];
$estado= $row["estado"];
$zona= $row["zona"];
}

$fecha = date("d-m-Y");
$carro =
//La asignamos a la variable
//$carro si existe o ponemos a false $carro
//en caso contrario
ob_start();

?>
<?php
if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];else $carro=false;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<style type="text/css">
<!--
.tit {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 9px;
color: #FFFFFF;
}
.prod {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 9px;
color: #333333;
}
h1 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 20px;
color: #990000;
}
-->
</style>

</head>

<body bgcolor="#FFFFFF">
<div id="contenido">
<div class="header">
<table width="700" border="0">
<tr>
<td height="108" align="left"><img src="img/logo.gif" border="0" /></td>
</tr>
</table>
</div>
<div class="principal" align="center">
<div class="cabeza">Cotizaci&oacute;n de Productos</div>
<table width="518" align="center">
<tr>
<td colspan="5" align="left">Datos del Usuario</td>
<td colspan="2" align="right">Fecha de Cotizaci&oacute;n <?php echo $fecha;?></td>
</tr>
<tr>
<td colspan="4">Nombre</td>
<td width="124" align="left"><?php echo $nombres; ?></td>
<td width="61" align="left">E-Mail </td>
<td width="245" align="left"><?php echo $email; ?></td>
</tr>
<tr>
<td colspan="4">Apellidos</td>
<td colspan="3" align="left"><?php echo $apellidos; ?></td>
</tr>
<tr>
<td colspan="4">Telefono</td>
<td colspan="3" align="left"><?php echo $telefonos; ?></td>
</tr>

</table>
<div>
<?php
if($carro){
//si el carro no está vacío,
//mostramos los productos
?>
<table width="502" border="0" cellspacing="0" cellpadding="0" align="center">
<tr bgcolor="#333333" class="tit">
<td width="97" align="center">Cantidad </td>
<td width="62" align="center">Ref</td>
<td width="260" align="center">Descripci&oacute;n</td>
<td width="83">Precio Unitario</td>

</tr>
<?php
$color=array("#ffffff","#F0F0F0");
$contador=0;
//las 2 líneas anteriores
//sirven sólo para hacer
//una tabla con colores
//alternos
$suma=0;
//antes de recorrer todos
//los valores de la matriz
//$carro, ponemos a cero la
//variable $suma, en la que
//iremos sumando los subtotales
//del costo de cada item por la
//cantidad de unidades que se
//especifiquen
foreach($carro as $k => $v){
//recorremos la matriz que tiene
//todos los valores del carro,
//calculamos el subtotal y el
// total
$subto=$v['cantidad']*$v['PrecioUnitario1'];
$suma=$suma+$subto;
$contador++;
//este es el contador que usamos
//para los colores alternos
?>
<tr bgcolor="<?php echo $color[$contador%2]; ?>" class='prod'>
<td align="center"><?php echo $v['cantidad'] ?></td>
<td align="center"><?php echo $v['Referencia'] ?></td>
<td><?php echo $v['Descripcion'] ?></td>
<td align="center"><?php echo $v['PrecioUnitario1'] ?></td>

</tr>
<?php
//por cada item creamos un
//formulario que submite a
//agregar producto y un link
//que permite eliminarlos
}
?>
</table>
<div align="center"><span class="prod">Total de Artículos: <?php echo count($carro);
//el total de items va a ser igual
//a la cantidad de elementos que
//tenga la matriz $carro, valor
//que obtenemos con la función
//count o con sizeof
?> </br>Todos Los Precios Incluyen IVA</span>
</div>
<br>
<div align="center"><span class="prod">Total: BsF.<?php echo number_format($suma,2);
//mostramos el total de la variable
//$suma formateándola a 2 decimales
?></span></div>
<div align="center"></div>
<?php }else{ ?>

<?php }?>

</div>
</body></html>

<?php
$html = ob_get_contents();
ob_end_clean();

$dompdf = new DOMPDF();

$dompdf->load_html($html);
$dompdf->render();
$dompdf->stream("cotizacion.pdf");
?>

Etiquetas: html, mysql, pdf, registro, sql, usuarios
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 03:07.