не может сгенерировать pdf с помощью tcpdf - PullRequest
12 голосов
/ 13 ноября 2011

на моем сайте пользователь может распечатать (в формате pdf) и принял, по какой-то причине я не могу отобразить pdf

здесь логика

сначала переписать правило

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

тогда 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");

я получаю:

"ОШИБКА TCPDF: Не удалось включить файл определения шрифта: AveriaSans-light"

шрифт: ll / fonts /

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

спасибо

Ответы [ 2 ]

15 голосов
/ 13 ноября 2011

Я думаю, что проблема в том, что каталоги cache и fonts TCPDF (находящиеся в папке, путь к которой хранится в константе K_PATH_MAIN, по умолчанию это каталог TCPDF) не доступны для записи ваш веб-сервер. Не путайте ваш собственный fonts -каталог с тем, который используется TCPDF внутри.

Каталог fonts должен быть доступен для записи, поскольку addTTFfont сначала преобразует файл TTF и записывает результаты преобразования в каталог fonts. Если позднее SetFont используется с «AveriaSans-light», он пытается включить эти файлы и выдает ошибку «Не удалось включить файл определения шрифта», если они не найдены.

2 голосов
/ 13 ноября 2011

vstm правильно, но также возможно, потому что у вас есть

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

с прописной L и в вашем коде строчная l

...