Задать вопрос
@saharok13
начинающий программист

Как изменить кодировку в phpword?

Я генерирую сначала word файл, потом в pdf. Вместо русских букв вопросы. Я так поняла нужно что-то сделать с кодировкой. В интернет советовали заккоментить кодировку в файле section.php setting.php, вставить header c кодировкой. Но ничего не меняется. Подскажите товарищи?
<?
require 'vendor/autoload.php';

 $phpWord->setDefaultFontName('Arial');
$phpWord->setDefaultFontSize(14);

$phpWord = new  \PhpOffice\PhpWord\PhpWord();
  
$document = $phpWord->loadTemplate('template1.docx');

$document->setValue('name', $name);

require __DIR__.'/vendor/dompdf/vendor/autoload.php';

use PhpOffice\PhpWord\IOFactory;
use PhpOffice\PhpWord\Settings;

// Make sure you have `dompdf/dompdf` in your composer dependencies.
Settings::setPdfRendererName(Settings::PDF_RENDERER_DOMPDF);
// Any writable directory here. It will be ignored.
Settings::setPdfRendererPath('dompdf/');

$phpWord = IOFactory::load('template1.docx', 'Word2007');
$phpWord->save('document.pdf', 'PDF');

     
 ?>
  • Вопрос задан
  • 1034 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@inFureal
iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text);
Ответ написан
Комментировать
@demach
Проблема может заключаться не столько в phpword, сколько в рендере (dompdf, TCPDF). На примере dompdf возможное решение таково: использовать шрифт семейства DejaVu

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$phpWord->setDefaultFontName('dejavu sans');
\PhpOffice\PhpWord\Settings::setPdfRendererPath('./dompdf');
\PhpOffice\PhpWord\Settings::setPdfRendererName('DomPDF');

Да поможет ищущему
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы