ConFoo 2025

ps_show_boxed

(PECL ps >= 1.1.0)

ps_show_boxedВыводит текст в поле

Описание

ps_show_boxed(
    resource $psdoc,
    string $text,
    float $left,
    float $bottom,
    float $width,
    float $height,
    string $hmode,
    string $feature = ?
): int

Выводит текст в заданном поле. Нижний левый угол поля находится в (left, bottom). При необходимости будут вставлены разрывы строк. Несколько пробелов рассматриваются как один. Табуляторы рассматриваются как пробелы.

Текст будет переноситься через дефис, если для параметра hyphenation установлено значение true, а параметр hyphendict содержит допустимое имя файла для файла расстановки переносов. Межстрочный интервал берётся из значения leading. Абзацы можно разделять пустой строкой, как в TeX. Если для параметра parindent установлено значение > 0.0, то первые n строк будут с отступом. Количество строк n задаётся параметром numindentlines. Чтобы предотвратить отступ первых m абзацев, установите положительное число значением параметра parindentkip.

Список параметров

psdoc

Идентификатор ресурса файла postscript, возвращённый функцией ps_new().

text

Текст, который нужно вывести в данное поле.

left

Координата X левого нижнего угла поля.

bottom

Координата Y левого нижнего угла поля.

width

Ширина поля.

height

Высота поля.

hmode

Параметр hmode может быть fulljustify, right, left или center. Разница между justify и fulljustify влияет только на последнюю строку поля. В режиме fulljustify последняя строка будет выровнена по левому и правому краю, если только это не последняя строка абзаца. В режиме justify она всегда будет выровнена по левому краю.

feature

Используемые параметры

Вывод ps_show_boxed() может быть сконфигурирован с несколькими параметрами и значениями, которые должны быть установлены с помощью ps_set_parameter() или ps_set_value(). Помимо параметров и значений, влияющих на вывод текста, оцениваются следующие параметры и значения:

leading (значение)

Расстояние между базовыми линиями двух последовательных линий.

linebreak (параметр)

Установите значение true, если хотите, чтобы возврат каретки начинал новую строку, а не рассматривал его как пробел. По умолчанию false.

parbreak (параметр)

Установите значение true, если хотите, чтобы возврат каретки в отдельной строке начинал новый абзац, а не рассматривал его как пробел. По умолчанию true.

hyphenation (параметр)

Установите значение true, чтобы включить расстановку переносов. Для этого требуется, чтобы словарь был установлен с параметром hyphendict. По умолчанию false.

hyphendict (параметр)

Имя файла словаря, используемого для расстановки переносов (смотрите ниже).

hyphenminchar (значение)

Количество символов, которое должно быть по крайней мере оставлено до или после дефиса. Это означает, что через дефис будут перенесены только слова, которые как минимум в два раза превышают это значение. Значение по умолчанию - три. Установка нулевого значения установит значение по умолчанию.

parindent (значение)

Установите количество места в пикселях для отступа первых m строк абзаца. m можно установить с помощью значения numindentlines.

parskip (значение)

Установите количество дополнительного пространства в пикселях между абзацами. По умолчанию 0, что приведёт к нормальному расстоянию между линиями.

numindentlines (значение)

Количество строк от начала абзаца, которые будут с отступом. По умолчанию 1.

parindentskip (значение)

Количество абзацев в поле, первые строки которых будут без отступа. По умолчанию 0. Это полезно для абзацев сразу после заголовка раздела или текста, продолжающегося во втором поле. В обоих случаях можно установить значение 1.

linenumbermode (параметр)

Задайте способ нумерации строк. Возможные значения: box для нумерации строк во всем блоке или paragraph для нумерации строк в каждом абзаце.

linenumberspace (значение)

Пространство для столбца слева от нумерованной строки, содержащей номер строки. Номер строки в этом столбце будет выровнен по правому краю. По умолчанию 20.

linenumbersep (значение)

Пространство между столбцом с номерами строк и самой строкой. По умолчанию 5.

Переносы

Текст переносится, если в параметре hyphenation установлено значение true и задан допустимый словарь для расстановки переносов. pslib не предоставляет собственный словарь для расстановки переносов, но использует словарь из openoffice, scribus или koffice. Вы можете найти их словари для разных языков в одном из следующих каталогов, если установлено соответствующее программное обеспечение:

  • /usr/share/apps/koffice/hyphdicts/
  • /usr/lib/scribus/dicts/
  • /usr/lib/openoffice/share/dict/ooo/
В настоящее время у scribus наиболее полные словари расстановки переносов.

Возвращаемые значения

Количество символов, которые не удалось записать.

Смотрите также

Добавить

Примечания пользователей 2 notes

up
0
php at catchall dot toao dot net
15 years ago
In order to justify text in the way a word processor would, one must set 'linebreak' to 'false' and 'parbreak' to 'true'. For every new line, you must use "\n\n" (two newlines, NOT carriage returns as stated in the docs). If you wish to make two new lines in your finished document, "\n\n\n\n" will not work. Instead, you must use "\n\n \n\n".

For every line to be justified, you should append "\n " (new line and a space) to the end of the text. For this to work, 'linebreak' must be 'true'.
up
0
tilman dot schroeder at gmx dot de
17 years ago
Note that there will no box be drawn around the text even if the function name suggests this.

After the box has been drawn you can get the new x and y position with

<?php
$x
=ps_get_value($ps,'textx',NULL);
$y=ps_get_value($ps,'texty',NULL);
?>

textx points to the end of the last character written by ps_show_boxed and texty points to the baseline of the last line written (which means, if there is e.g. a 'g' in the last line then the lower part's y-coordinates of the g will be lower than the value of texty. I hope you understand what I meant)
To Top