Я думал, что моя проблема будет простой: я хочу создать PDF-документ на основе шаблона. Есть 12 значений, которые я хочу заполнить. Я хочу иметь возможность изменить шаблон позже (дизайн), поэтому я подумал, что форма PDF будет хорошей идеей. Я продолжил использовать уже существующий шаблон Word и преобразовал его в форму PDF с помощью Adobe Acrobat Pro. В настоящее время мое серверное приложение полностью основано на PHP, но я открыт для предложений.
Я пробовал FPDI, FPDM и PDFTK.
С PDFTK все работает нормально, но я не могу заставить его заполнять специальные символы, такие как € ä ü ß ö :
частная функция createCertificate($certificate,$template): массив { $pathOutput = $this->basePathOutput. 'сертификат.pdf'; //ОТЛАДКА $pathFdf = $this->basePathFdf. 'сертификат.fdf'; //ОТЛАДКА $fdf = $this->createFDF($сертификат); file_put_contents($pathFdf, $fdf); $результат = [ «статус выхода» => 0, "pathOutput" => $pathOutput, ]; $command = "pdftk $template fill_form $pathFdf вывод $pathOutput Need_Appearances Flatten"; //эхо $команда; exec($команда,$pathOutput,$exitStatus); $result["exitstatus"] = $exitStatus; вернуть $результат; } частная функция createFDF($certificate): строка { $fdf = "%FDF-1.2\r\n"; $fdf .= "1 0 obj \r\n"; } $fdf .= "] >> >>\r\n"; $fdf .= "endobj\r\n"; $fdf .= "трейлер\r\n"; $fdf .="\r\n"; $fdf .= "%%EOF\r\n"; вернуть $fdf } Я пробовал закодировать его в UTF-16LE. Тогда символы ö,ä,ü отображаются, а € — нет. А еще между всеми персонажами есть странные пробелы.
Я полагаю, что для этой проблемы должно быть простое решение. Я также готов использовать другую технологию, поскольку знаю, что профессионалы не будут использовать pdftk
Изменить:
Я изменил $encodedValue = iconv('UTF-8', 'UTF-8', $value); на $encodedValue = utf8_decode($value); Теперь он отлично работает с ü. Но € отображается как ? Так что это пока неудовлетворительно
Мобильная версия