PHP Conference Japan 2024

ps_show_boxed

(PECL ps >= 1.1.0)

ps_show_boxed在方框中输出文本

描述

ps_show_boxed(
    资源 $psdoc,
    字符串 $text,
    浮点数 $left,
    浮点数 $bottom,
    浮点数 $width,
    浮点数 $height,
    字符串 $hmode,
    字符串 $feature = ?
): 整数

在给定的方框中输出文本。方框的左下角位于(leftbottom)。将在需要的地方插入换行符。多个空格将被视为一个空格。制表符将被视为空格。

如果参数 hyphenation 设置为 true 并且参数 hyphendict 包含连字符文件有效的文件名,则文本将进行连字符化。行间距取自值 leading。段落可以通过空行分隔,就像在 TeX 中一样。如果值 parindent 设置为值 > 0.0,则前 n 行将缩进。n 行数由参数 numindentlines 设置。为了防止前 m 个段落的缩进,将值 parindentskip 设置为正数。

参数

psdoc

Postscript 文件的资源标识符,由 ps_new() 返回。

text

要输出到给定方框中的文本。

left

方框左下角的 x 坐标。

bottom

方框左下角的 y 坐标。

width

方框的宽度。

height

方框的高度。

hmode

参数 hmode 可以是 justifyfulljustifyrightleftcenterjustifyfulljustify 的区别仅影响方框的最后一行。在 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 (值)

在连字符之前或之后必须至少剩余的字符数。这意味着只有至少两倍于此值的单词才会被连字符化。默认值为 3。将值设置为 0 将导致默认值。

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 条注释

0
php at catchall dot toao dot net
15 年前
为了像文字处理器那样对齐文本,必须将“linebreak”设置为“false”,将“parbreak”设置为“true”。对于每一行,您必须使用“\n\n”(两个换行符,而不是文档中所说的回车符)。如果您希望在完成的文档中创建两行,则“\n\n\n\n”不起作用。相反,您必须使用“\n\n \n\n”。

对于要对齐的每一行,您都应在文本末尾附加“\n ”(换行符和空格)。要使此方法起作用,“linebreak”必须为“true”。
0
tilman dot schroeder at gmx dot de
17 年前

请注意,即使函数名称暗示会绘制文本周围的方框,也不会绘制任何方框。

绘制方框后,您可以使用以下代码获取新的 x 和 y 位置:

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

textx 指向 ps_show_boxed 最后写入的字符的末尾,texty 指向最后写入行的基线(这意味着,如果最后一行例如有一个“g”,则 g 的下部的 y 坐标将低于 texty 的值。我希望您理解我的意思)
To Top