2011-11-13 42 views
12

en mi sitio, el usuario puede imprimir (pdf) del nda aceptó por alguna razón no puedo mostrar el pdfno puede generar pdf con TCPDF

aquí la lógica

primera reescribir la regla

.htaccess 
RewriteRule ^nda/?$ ndapdf.php?useSessionUser=1 [L] 

entonces el php

<?php 

$html = file_get_contents("/lib/nda.txt"); 
$html = str_replace("##user##", $_SESSION["currentUser"]); 
$html = str_replace("##date##", date("Y-m-d h:i:s")); 

require("/lib/web/tcpdf/config/lang/eng.php"); 
require("/lib/web/tcpdf/tcpdf.php"); 
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, "UTF-8", false); 
$pdf->SetCreator("mysite"); 
$pdf->SetAuthor("author_name"); 
$pdf->SetTitle("NDA"); 
$pdf->SetSubject("Accepted NDA"); 

$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, "", PDF_FONT_SIZE_MAIN)); 
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, "", PDF_FONT_SIZE_DATA)); 

$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); 
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); 
$pdf->setLanguageArray(array("w_page" => "")); 
$fontname = $p->addTTFfont("/fonts/AveriaSans-light.ttf", "TrueTypeUnicode", "", 32); 
$pdf->SetFont("arial", "", 10); 
$pdf->AddPage(); 
$pdf->writeHTML($html, true, false, true, false, ""); 
$pdf->lastPage(); 

$pdf->Output("/home/comp/pdf/nda/$currentUser.pdf", "F"); 
header("Content-Type: application/pdf\n"); 
read("/home/comp/pdf/nda/$currentUser.pdf"); 

me sale:

"ERROR TCPDF: No se pudo incluir la fuente archivo de definición: AveriaSans luz"

la fuente es: ll/fonts/

-rw-r--r-- 1 root root 85084 2011-11-02 17:51 AveriaSans-Light.ttf 

gracias

Respuesta

15

Creo que el problema es , que los directorios cache y fonts de TCPDF (que residen en la carpeta cuya ruta está almacenada en la constante K_PATH_MAIN, de manera predeterminada es el directorio TCPDF) no son editables por su servidor web er. No confunda su propio directorio fonts con el utilizado internamente por TCPDF.

El directorio fonts tiene que ser grabable porque addTTFfont primero convierte el archivo TTF y escribe el resultado de la conversión en el directorio fonts. Si más adelante se usa SetFont con "AveriaSans-light", intenta incluir esos archivos y falla con "No se pudo incluir el archivo de definición de fuente" si no se encuentran.

2

VSTM es correcto, pero también quizá porque tiene

-rw-r--r-- 1 root root 85084 2011-11-02 17:51 AveriaSans-Light.ttf 

con mayúscula y en su código es l minúscula

+1

mal copiar y pegar –

Cuestiones relacionadas