2011-11-13 28 views
12

na moim miejscu użytkownik może wydrukować (w formacie pdf) NDA Przyjął z jakiegoś powodu nie może wyświetlić PDFnie można wygenerować pdf z TCPDF

tu logikę

najpierw przepisać regułę

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

potem 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"); 

uzyskać:

"TCPDF BŁĄD: Nie można zawierać czcionki plik definicji: AveriaSans-light"

czcionka jest: LL/fonts/

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

dzięki

Odpowiedz

15

Myślę, że problem jest , że katalogi cache i fonts TCPDF (znajdujące się w folderze, którego ścieżka jest przechowywana w stałej K_PATH_MAIN, domyślnie jest to katalog TCPDF) nie mogą być zapisane przez twój webserv er. Nie należy mylić własnego katalogu fonts z katalogiem używanym wewnętrznie przez TCPDF.

Katalog fonts musi być zapisywalny, ponieważ addTTFfont najpierw konwertuje plik TTF i zapisuje dane wyjściowe konwersji do katalogu fonts. Jeśli później zostanie użyta opcja SetFont z "AveriaSans-light", spróbuje dołączyć te pliki i zakończy się niepowodzeniem z "Nie można dołączyć pliku definicji czcionki", jeśli nie zostaną znalezione.

2

vstm ma rację, ale również może dlatego masz

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

z kapitału L w kodzie jest małe l

+1

złe kopiowanie i wklejanie –

Powiązane problemy