Создать PDF из .docx, сгенерированного PHPWord

Я создаю .docx файлы из шаблона с помощью PHPWord, Он работает нормально, но теперь я хочу преобразовать сгенерированный файл в PDF,

Сначала я попробовал использовать tcpdf в комбинации с PHPWord

$wordPdf = \PhpOffice\PhpWord\IOFactory::load($filename.".docx");

\PhpOffice\PhpWord\Settings::setPdfRendererPath(dirname(__FILE__)."/../../Office/tcpdf");
\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');

$pdfWriter = \PhpOffice\PhpWord\IOFactory::createWriter($wordPdf , 'PDF');
if (file_exists($filename.".pdf")) unlink($filename.".pdf");
$pdfWriter->save($filename.".pdf");

но когда я пытаюсь загрузить файл, чтобы преобразовать его в PDF Я получаю следующее исключение при загрузке файла

Неустранимая ошибка: необработанное исключение «BadMethodCallException» с сообщением «Невозможно добавить PreserveText в раздел».

После некоторых исследований я обнаружил, что некоторые другие также имеют эту ошибку (phpWord — Невозможно добавить PreserveText в разделе)

РЕДАКТИРОВАТЬ

Попробовав еще немного, я узнал, что Exception происходит только тогда, когда у меня есть некоторые mail merge fields в моем документе. Как только я удалил их Exception больше не подходит, но переделанный PDF файлы выглядят ужасно. Вся информация о стиле исчезла, и я не могу использовать результат, поэтому необходимость в альтернативе остается.

Я думал об использовании другого способа создания PDF, но я мог найти только 4 способа:

  1. С помощью OpenOffice — Невозможно, так как я не могу установить какое-либо программное обеспечение на Сервер. Также идет путь, упомянутый Вот не работал ни как мой хостер (Strato) использует SunOS в качестве ОС и для этого нужен Linux
  2. С помощью phpdocx — У меня нет никакого бюджета, чтобы заплатить за это, и демо не может создать PDF
  3. С помощью PHPLiveDocx — Это работает, но имеет ограничение 250 документов в день и 20 в час, и мне приходится конвертировать около 300 документов одновременно, может даже несколько раз в день
  4. С помощью PHP-Digital-Format-Convert — Вывод выглядит лучше чем с PHPWord а также tcpdf, но по-прежнему нельзя использовать, так как изображения отсутствуют, и большинство (не все!) стилей

Есть ли 5-й способ создания PDF? Или есть какое-нибудь решение, чтобы сгенерированные PDF документы выглядели красиво?

8

Решение

я использовал Шестерни / PDF преобразовать файл docx, сгенерированный phpword, в PDF:

$success = Gears\Pdf::convert(
'file_path/file_name.docx',
'file_path/file_name.pdf');
0

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

Вы пытаетесь отсоединить файл PDF перед его сохранением, и вам также нужно отменить связь документа DOCX, а не документа PDF.

Попробуй это.

$pdfWriter = \PhpOffice\PhpWord\IOFactory::createWriter($wordPdf , 'PDF');
$pdfWriter->save($filename.".pdf");
unlink($wordPdf);
0

Попробуй это:

// get the name of the input PDF
$inputFile = "C:\\PHP\\Test1.docx";

// get the name of the output MS-WORD file
$outputFile = "C:\\PHP\\Test1.pdf";

try
{
$oLoader = new COM("easyPDF.Loader.8");
$oPrinter = $oLoader->LoadObject("easyPDF.Printer.8");
$oPrintJob = $oPrinter->PrintJob;
$oPrintJob->PrintOut ($inputFile, $outputFile);
print "Success";
}


catch(com_exception $e)
{
Print "error code".$e->getcode(). "\n";
print $e->getMessage();
}
0

Я не думаю, что я прав ..
Вы сохраняете документ как контент HTML

$ objWriter = \ PhpOffice \ PhpWord \ IOFactory :: createWriter ($ phpWord, ‘HTML’);

После этого вы читаете содержимое файла HTML и записываете содержимое в виде файла PDF с помощью MPDF или tcPdf или fpdf.

-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector