alignment
работает, конечно, как встроенный параметр, но из-за используемого параметра textlen
это не будет работать в вашем случае.
Textlen объясняется в справочнике по API PDFlib 9.2.0 с помощью следующие слова:
(целое число или ключевое слово; требуется для фрагментов текста с fixedtextformat = false и textformat = utf16xx в языках, не поддерживающих Юникод) Количество байтов или (в языках, поддерживающих Юникод) символов перед следующим встроенным списком параметров (см. «Списки встроенных параметров для потоков текста», стр. 103).
(я добавил выделение жирным шрифтом)
Как вы указываете как textlen
длина текстовой строки complete , встроенный параметр обрабатываться не будет.
Основной вопрос: почему вы используете textformat=utf16
? Почему бы просто не использовать textformat=utf8
(или stringformat=utf8
), если у вас уже есть строки utf8? Также вы можете использовать опцию charref
, чтобы ссылки на символы обрабатывались.
Когда вы устанавливаете stringformat=utf8
и charref=true
(см. Руководство по PDFlib 9.2, глава «5.2.2 Привязки к языку с поддержкой UTF-8»), вы можете использовать упрощенный код:
PDF_set_option($p, "stringformat=utf8 charref=true");
$compo_txt = "<alignment=justify>".$compo_txt;
$compo_flow = PDF_create_textflow($p, $compo_txt, "fontname=arial fontsize=".$compo_size." encoding=unicode embedding=true");
$flow_warning = PDF_fit_textflow(
$p, $compo_flow, $compo_x + $compo_w,
$compo_y, $compo_x, $compo_y - $compo_h,
'orientate=' . $compo_o
);