Мне нужно мое веб-приложение (на основе реагирования) для создания PDF-файла. Этот файл будет содержать текст, таблицы и холст с сгенерированным содержимым.
Я решил использовать встроенные возможности печати браузера, чтобы добиться этого (я также попробовал pdfkit и реагировать-pdf , но решил, что делать макет с помощью HTML и CSS будет работать лучше).
Проблема заключается в том, что полученные PDF-файлы были относительно большими (более 10 МБ, а допустимый максимум - около 1 МБ).
Я пытался уменьшить размер, генерируя JPEG с canvas.toDataURL('image/jpeg', 0.8)
и используя dataURL вместо canvas.
Это уменьшает размер файла в Chrome и Safari, но не в Firefox.
Используя Inkscape для импорта PDF, а затем экспортируйте его в формате SVG, а затем просмотрите его в текстовом редакторе (скажите, пожалуйста, что существует более простой рабочий процесс), я обнаружил, что Chrome и Safari действительно встраивают JPEG, но Firefox создает PDF с изображения, встроенные в файлы PNG.
Есть ли способ изменить это поведение в Firefox? Единственный другой вариант, который я вижу, - это использование библиотеки, такой как pdfkit, для создания PDF-файла из Javascript, что может стоить простой настройки макета.
Минимальный пример:
<!DOCTYPE html>
<html>
<head></head>
<body>
<img src="https://upload.wikimedia.org/wikipedia/commons/a/a4/Forum_romanum_1880.jpg" />
</body>
</html>
Печать в PDF дает менее 200 КБ в Google Chrome и более 1 МБ в Firefox