В настоящее время я пытаюсь динамически преобразовать разметку HTML (из ленты xml) в PDF с помощью сценария PHP.
Из прочтения других ответов лучший бесплатный способ сделать это, казалось бы, использовать html2pdf.
// HTML2PDF
require_once('/public_html/html2pdf/html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','en');
$html2pdf->WriteHTML($htmlContent);
$html2pdf->Output('/public_html/wp-content/uploads/rns/html2pdf.pdf');
Проблема у меня есть моя $htmlContent
содержит CSS: FONT-FAMILY: "Times New Roman","serif"
в разных местах и мой скрипт выдает ошибку:
TCPDF ERROR: Could not include font definition file: "times new roman"
Я погуглил, и единственная документация такова:
http://wiki.spipu.net/doku.php?id=html2pdf:en:v4:font
Что в свою очередь приводит вас к:
http://www.tcpdf.org/fonts.php
Я потерян, хотя, вторая ссылка говорит, что Times / Times New Roman является основным шрифтом PDF … Я пробовал разные вещи и получаю ту же ошибку.
Что мне на самом деле нужно написать, чтобы добавить шрифт, или, альтернативно, как я могу удалить все классы FONT-FAMILY из $htmlContent
(Мне даже не нужен какой-то конкретный шрифт, только тот, который работает).
Да, вы должны использовать DOMPDF вместо других библиотек. Есть много доступных шрифтов. Вы можете посмотреть в «dompdf / lib / fonts / dompdf_font_family_cache.dist.php» и выбрать в соответствии с вашими требованиями. Для изменения шрифта вам нужно изменить def («DOMPDF_DEFAULT_FONT», «serif») по пути к файлу «dompdf / dompdf_config.inc.php»:
Вы можете скачать последнюю доступную версию DOMPDF с: https://code.google.com/p/dompdf/downloads/detail?name=dompdf_0-6-0_beta3.tar.gz&может = 2&д =
Смотрите пример ниже:
require_once("dompdf/dompdf_config.inc.php");
$dompdf = new DOMPDF();
$dompdf->load_html($htmlContent);
$dompdf->render();
$fileName = "invoice.pdf";
$dompdf->stream($fileName);//DOWNLOAD PDF
//GET OUTPUT AS STRING AND PUT IN TO SOME FILE
$output = $dompdf->output();
file_put_contents($fileName, $output);
Попробуйте использовать DomPdf вместо html2pdf. Это прекрасно работает для меня при создании счетов в формате PDF. Но некоторые обработки (позиционирование и размеры шрифта) в вашем коде CSS необходимы. Содержимое экрана не работает так, как я ожидал.
https://github.com/dompdf/dompdf
Это что-то вроде хака, но я обнаружил, что лучший способ для меня — вызывать capturejs с помощью exec:
$run = "capturejs -u ";
$run .= "https://www.example.com/";
$run .= " -p tlsv1 -V ";
$run .= "1024x768";
$run .= " -o 'myimage.png'";
exec($run);