PHP: объединить PDF без композитора? - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь объединить PDF-документы с PHP, много искал и пробовал несколько решений.Наиболее распространенным является использование библиотеки FPDI , а затем небольшого класса, например PDF-Merger .

Но проблема заключается в том, чточто эта библиотека зависит от других библиотек и этих библиотек других и так далее.И примеры установки в основном это как установить с помощью composer.Но я хочу быть в состоянии объединить PDF для сайта, который не использует композитор.И кажется, что это действительно трудно достичь.

Из-за руководства единственное, что нужно сделать, если я не хочу использовать компоновщик, это записать это в ваш код какустановка библиотеки:

require_once('path/to/src/autoload.php');

Конечно, с правильным путем.Но нет, это не сработало для меня.Не удалось найти класс fpdi.И если вы снова посмотрите руководство, вы увидите следующее предупреждение:

Не забудьте установить FPDF, TCPDF или tFPDF раньше!

Так что я вручную загрузил этитри библиотеки, а также те, которые было трудно установить без композитораИ все еще застряли в этом беспорядке.Я добился определенного успеха, изменив файл PDFMerger.php с use fpdi\FPDI; на \setasign\Fpdi\Fpdi.Итак, теперь класс Fpdi найден.Но все равно получаю ошибки.

Позвольте мне показать вам текущую ситуацию. Вот мой текущий код:

<?php
require_once get_stylesheet_directory().'/classes/fpdf/fpdf.php';
require_once get_stylesheet_directory().'/classes/tfpdf/tfpdf.php';

require_once get_stylesheet_directory().'/classes/tcpdf/src/Output.php';
require_once get_stylesheet_directory().'/classes/tcpdf/src/MetaInfo.php';
require_once get_stylesheet_directory().'/classes/tcpdf/src/ClassObjects.php';
require_once get_stylesheet_directory().'/classes/tcpdf/src/Tcpdf.php'; 

require_once get_stylesheet_directory().'/classes/FPDI/src/autoload.php';
require_once get_stylesheet_directory().'/classes/FPDI/src/Fpdi.php';

require_once get_stylesheet_directory().'/classes/PDFMerger/PDFMerger.php';

$pdf = new \Clegginabox\PDFMerger\PDFMerger;
$pdf->addPDF('path/to/file1.pdf', 'all', 'P');
$pdf->addPDF('path/to/file2.pdf', 'all', 'P');
$pdf->merge();
?>

А вот сообщения об ошибках в браузере:

Примечание: неопределенный индекс: w in / home /public_html / wp-content / themes / my-theme / classes / PDFMerger / PDFMerger.php в строке 85

Примечание: неопределенный индекс: h in / home / public_html / wp-content / themes / my-theme /classes / PDFMerger / PDFMerger.php в строке 85

Примечание: неопределенный индекс: w в /home/public_html/wp-content/themes/my-theme/classes/PDFMerger/PDFMerger.php в строке 85

Примечание: неопределенный индекс: h в /home/public_html/wp-content/themes/my-theme/classes/PDFMerger/PDFMerger.php в строке 85

Неустранимая ошибка: Uncaught Exception: ошибка FPDF: Некоторые данные уже выведены, не удается отправить файл PDF в /home/public_html/wp-content/themes/my-theme/classes/fpdf/fpdf.php:271 трассировки стека: # 0 / home / public_html / wp-content / themes / my-theme / classes / fpdf / fpdf.php (1063): FPDF-> Ошибка («Некоторые данные имеют ...») # 1 / home / public_html / wp-content / themes / my-тема / классы / FPDf / fpdf.php (999): FPDF -> _ checkoutput () # 2 /home/public_html/wp-content/themes/my-theme/classes/PDFMerger/PDFMerger.php(107): FPDF-> Output ('I',' newfile.pdf ') # 3 /home/public_html/wp-content/themes/my-theme/functions.php(269): Clegginabox \ PDFMerger \ PDFMerger-> merge () # 4 / home / public_html / wp-includes / class-wp-hook.php (286): cdon_woocommerce_loaded ('') # 5 / home / public_html / wp-includes / cla в / home / public_html / wp-content / themes / my-theme / classes / fpdf/fpdf.php в строке 271

И вы можете увидеть PDFMerger.php здесь и строка 85 такова:

$fpdi->AddPage($fileorientation, array($size['w'], $size['h']));

Я имею в виду, яЯ думаю, это немного преувеличено, чтобы все эти зависимости просто объединять PDF-файлы.Это действительно нужно?И если так, что не так с моей установкой?

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Упомянутый класс слияния устарел и использует устаревшие версии.Просто используйте обновленный собственный код FPDI, который вы можете найти здесь .Эта демонстрация показывает, как вы можете использовать FPDI для объединения нескольких документов PDF.

Вы также должны заметить или в информационном тексте инструкций по установке:

Не забудьте установить FPDF, TCPDF или tFPDF раньше!

Убедитесь, что вам нужен только один из этих классов.Если вы хотите объединить PDF-страницы, вы должны использовать FPDF.

0 голосов
/ 15 февраля 2019

Вам не нужен композитор для использования PDFMerger.

Просто клонируйте исходный репозиторий из https://github.com/myokyawhtun/PDFMerger и переместите PDFMerge.php и каталог tcpdf в свой проект.

Тогда вы можете сделать следующее:

include 'PDFMerger.php';

$pdf = new \PDFMerger\PDFMerger;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...