Преобразование HTML в PDF с помощью PHP (установить шрифт для html2pdf)

В настоящее время я пытаюсь динамически преобразовать разметку 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 (Мне даже не нужен какой-то конкретный шрифт, только тот, который работает).

0

Решение

Да, вы должны использовать 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);
1

Другие решения

Попробуйте использовать DomPdf вместо html2pdf. Это прекрасно работает для меня при создании счетов в формате PDF. Но некоторые обработки (позиционирование и размеры шрифта) в вашем коде CSS необходимы. Содержимое экрана не работает так, как я ожидал.
https://github.com/dompdf/dompdf

0

Это что-то вроде хака, но я обнаружил, что лучший способ для меня — вызывать capturejs с помощью exec:

$run = "capturejs -u ";
$run .= "https://www.example.com/";
$run .= " -p tlsv1 -V ";
$run .= "1024x768";
$run .= " -o 'myimage.png'";
exec($run);

https://github.com/superbrothers/capturejs

0
По вопросам рекламы [email protected]