PHP Unconference Europe 2015

ps_show_boxed

(PECL ps >= 1.1.0)

ps_show_boxedÉcriture de texte dans une boîte

Description

int ps_show_boxed ( resource $psdoc , string $text , float $left , float $bottom , float $width , float $height , string $hmode [, string $feature ] )

ps_show_boxed() écrit du texte dans une boîte donnée. Le coin inférieur gauche de la boîte est à (left, bottom). Les coupures de ligne sera insérées où nécessaires. Des espaces multiples sont traités comme une seule. Les tabulations sont traitées comme des espaces.

Le texte sera relié si le paramètre hyphenation est fixé à TRUE et le paramètre hyphendict contient un fichier valide pour un fichier de liaison. L'espace des lignes est pris à partir de la valeur leading. Les paragraphes peuvent être séparés par une ligne vide comme dans TeX. Si la valeur parindent est fixée à une valeur > 0.0, alors les premières n lignes seront indentées. Le nombre n de lignes est fixé par le paramètre numindentlines. Afin de prévenir l'indentation des premiers m paragraphes, fixés la valeur parindentskip à un nombre positif.

Liste de paramètres

psdoc

Identifiant d'un fichier PostScript retourné par ps_new().

text

Le texte à être affiché dans la boîte donnée.

left

La position x du coin inférieur gauche de la boîte.

bottom

La position y du coin inférieur gauche de la boîte.

width

Largeur de la boîte.

height

Hauteur de la boîte.

hmode

Le paramètre hmode peut être "justify", "fulljustify", "right", "left" ou "center". La différence entre "justify" et "fulljustify" affecte simplement la dernière ligne de la boîte. Dans le mode "fulljustify", la dernière ligne sera justifiée de gauche à droite à moins que cela est aussi la dernière ligne du paragraphe. Dans le mode "justify", le texte sera toujours justifié à gauche.

feature

Paramètres utilisés

L'écriture de ps_show_boxed() peut être configuré avec plusieurs paramètres et valeurs qui peuvent être fixés par soit ps_set_parameter() ou ps_set_value(). Près des paramètres et des valeurs qui affectent l'écriture du texte, les paramètres et les valeurs suivantes sont évalués.

leading (valeur)

Distance entre les lignes de bases de deux lignes consécutives.

linebreak (paramètre)

Fixé à TRUE si vous voulez un retour au chariot pour démarrer une nouvelle ligne plutôt que de traiter cela comme un espace. Par défaut, ce paramètre vaut FALSE.

parbreak (paramètre)

Fixé à TRUE si vous voulez un retour au chariot d'une seule ligne pour débuter un nouveau paragraphe plutôt que de traiter cela comme un espace. Par défaut, ce paramètre vaut TRUE.

hyphenation (paramètre)

Fixé à TRUE afin d'activer les liaisons. Cela requiert un dictionnaire fixé par le paramètre hyphendict. Par défaut, ce paramètre vaut FALSE.

hyphendict (paramètre)

Fichier du dictionnaire utilisé pour un motif de liaison (voir plus bas).

hyphenminchar (valeur)

Le nombre de caractères qui doit au moins être à gauche avant ou après le tiret. Cela implique que seuls les mots d'au moins deux fois cette valeur peuvent être liés. La valeur par défaut est trois. Fixer une valeur de zéro résultera de la valeur par défaut.

parindent (valeur)

Fixe le nombre d'espace en pixel pour l'indentation les premières m lignes d'un paragraphe. m peut être configuré avec la valeur "numindentlines".

parskip (valeur)

Fixe le nombre d'espace en extra en pixel entre les paragraphes. Par défaut, en mettant 0, le résultat sera d'une distance normale entre les lignes.

numindentlines (valeur)

Nombre de lignes à partir du début du paragraphe qui sera indentée. Par défaut, cette valeur vaut 1.

parindentskip (valeur)

Nombre de paragraphes dans la boîte à qui les premières lignes ne seront pas indentées. Par défaut, cette valeur vaut 0. Cela est utile pour les paragraphes immédiatement après une section d'en-tête ou de texte qui commence dans une seconde boîte. Dans les deux cas, un devrait être fixé à 1.

linenumbermode (paramètre)

Fixe comment les lignes sont numérotées. Les valeurs possibles sont "box" pour numéroter les lignes dans la boîte au complet ou "paragraph" pour numéroter les lignes dans chaque paragraphe.

linenumberspace (valeur)

L'espace pour la colonne laissé des lignes numérotées contenant le numéro de ligne. Le numéro des lignes sera justifié à droite dans cette colonne. Par défaut, cette valeur vaut 20.

linenumbersep (valeur)

L'espace entre la colonne avec le nombre de lignes et la ligne elle-même. Par défaut, cette valeur vaut 5.

Liaison

Le texte est lié si le paramètre hyphenation est fixé à TRUE et un dictionnaire valide de liaison est fixé. pslib ne fournit pas son propre dictionnaire de liaison, mais utilise un de openoffice, scribus ou koffice. Vous pouvez trouver ces dictionnaires pour différents langages dans un des dossiers suivants si le programme est installé :

  • /usr/share/apps/koffice/hyphdicts/
  • /usr/lib/scribus/dicts/
  • /usr/lib/openoffice/share/dict/ooo/
Présentement, Scribus semble avoir les plus complets dictionnaires de liaison.

Valeurs de retour

Nombre de caractères qui ne peuvent être écrits.

Voir aussi

add a note add a note

User Contributed Notes 2 notes

up
0
php at catchall dot toao dot net
5 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
7 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