DOMPDF — проблема с утечкой памяти

Я использую DOMPDF 0.6.0 beta 3. Я получил эту ошибку php, когда система генерирует много PDF-файлов.

Неустранимая ошибка PHP: разрешенный размер памяти 268435456 байт исчерпан (попытка выделить 639 байт) в /home/deal4uco/public_html/lib/dompdf/lib/php-font-lib/classes/font_binary_stream.cls.php в строке 144

Файл шрифта большой. Почти 24 МБ+. Я считаю, что dompdf сделал это как кеш (1,5 млн +). Я не думаю, что проблема с памятью связана с файлом шрифта.

Могу ли я узнать, в чем проблема? Многие люди говорили, что html-контент не может включать эти html-теги (table, tr, td). Это действительно причина вышеуказанной проблемы?


person Jun    schedule 13.07.2013    source источник
comment
Проблема возникает скорее всего из-за файла шрифта. Если вы отключите подмножество шрифтов, я полагаю, что PDF будет обработан. Прямо сейчас php-font-lib может столкнуться с проблемами памяти при обработке больших шрифтов.   -  person BrianS    schedule 15.07.2013
comment
Я предполагаю, что проблема вызвана файлом шрифта. Поскольку наш pdf будет содержать китайский язык, поэтому поднастройка включена из dompdf. Могу ли я узнать какое-либо решение для решения этой проблемы?   -  person Jun    schedule 17.07.2013
comment
К сожалению, у нас его сейчас действительно нет. Вы можете отключить подмножество, но PDF такого размера будет неразумным. Другим вариантом может быть попытка рендеринга PDF вне процесса (например, с использованием exec), чтобы увидеть, поможет ли вам меньшая загрузка процесса (и типичный больший предел памяти для командной строки PHP).   -  person BrianS    schedule 17.07.2013
comment
Мне интересно, почему подмножество шрифтов получит больше памяти. У меня есть один PDF-файл со встроенным подмножеством (ArialUnicodeMs). PDF может отображать китайский язык, а размер файла составляет 97 КБ++. Я никогда не использую дополнительный китайский шрифт. Потому что многие программы для работы с PDF обычно устанавливают свои встроенные подмножества. Поэтому я хочу спросить, любое решение может уменьшить использование памяти, поскольку файл шрифта по умолчанию встроен из программного обеспечения. см. stackoverflow.com/questions/8793828/   -  person Jun    schedule 18.07.2013
comment
Шрифт, который не является подмножеством, не требует дополнительной обработки и поэтому занимает мало памяти. Когда шрифт обрабатывается для подмножества (или даже просто загружается в dompdf), php-font-lib должен проделать большую работу, чтобы проанализировать всю необходимую информацию. В настольной системе у вас нет таких же ограничений памяти, и у вас нет таких же ограничений при работе через командную строку. Вы пробовали мое предложение запустить вне процесса?   -  person BrianS    schedule 18.07.2013
comment
Я установил для DOMPDF_ENABLE_FONTSUBSETTING значение false в dompdf_config.inc.php. И добавил файл шрифта (arialuni.ttf) в dompdf\lib\fonts. Файл шрифта почти 20MB++. Я включил это имя шрифта в dompdf_font_family_cache.dist. Код: 'arialuni' => array ( 'normal' => DOMPDF_FONT_DIR . 'ARIALUNI', 'bold' => DOMPDF_FONT_DIR . 'ARIALUNI', 'italic' => DOMPDF_FONT_DIR . 'ARIALUNI', 'bold_italic' => DOMPDF_FONT_DIR . «АРИАЛУНИ», ). dompdf уменьшил использование памяти на 20 МБ для одного нового pdf. Проблема здесь. Зачем загружать много памяти, когда шрифт встроен из программного обеспечения Adobe PDF Reader.   -  person Jun    schedule 19.07.2013
comment
Это обсуждение становится слишком длинным для StackOverflow. Хотите продолжить участие в группе поддержки?   -  person BrianS    schedule 20.07.2013