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 = ?
): 整數

在給定方框內輸出文字。方框左下角的座標為 (left, bottom)。會在需要時插入換行符號。多個空格會被視為一個空格。定位字元會被視為空格。

如果參數 hyphenation 設定為 true 且參數 hyphendict 包含有效的連字字典檔名,則文字將會斷字。行距取自 leading 的值。段落之間可以像 TeX 一樣以空行分隔。如果 parindent 的值設定為大於 0.0,則前 n 行會縮排。行數 n 由參數 numindentlines 設定。若要避免前 m 個段落縮排,請將 parindentskip 的值設定為正數。

參數

psdoc

ps_new() 返回的 PostScript 檔案資源識別碼。

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 則註解

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'。
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