ps_show_boxed

(PECL ps >= 1.1.0)

ps_show_boxedÉcriture de texte dans une boîte

Description

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

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 seront insérées où nécessaire. Les espaces multiples sont traités comme un seul. Les tabulations sont traitées comme des espaces.

Le texte sera coupé si le paramètre hyphenation est fixé à true et le paramètre hyphendict contient un fichier valide de dictionnaire de césure. L'espacement 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, fixez la valeur parindentskip à un nombre positif.

Liste de paramètres

psdoc

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

text

Le texte à afficher 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 ce soit 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ée avec plusieurs paramètres et valeurs qui peuvent être fixés par ps_set_parameter() ou ps_set_value(). En plus des paramètres et des valeurs qui affectent l'écriture du texte, les paramètres et les valeurs suivants sont évalués.

leading (valeur)

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

linebreak (paramètre)

Fixé à true pour 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 pour 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 la césure. 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 les motifs de césure (voir plus bas).

hyphenminchar (valeur)

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

parindent (valeur)

Fixe le nombre d'espaces en pixels pour l'indentation des premières m lignes d'un paragraphe. m peut être configuré avec la valeur numindentlines.

parskip (valeur)

Fixe le nombre d'espace supplémentaire en pixels entre les paragraphes. Par défaut, 0, ce qui résulte en une distance normale entre les lignes.

numindentlines (valeur)

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

parindentskip (valeur)

Nombre de paragraphes dans la boîte dont 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 du texte qui commence dans une seconde boîte. Dans les deux cas, cette valeur devrait être fixée à 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 à gauche des lignes numérotées contenant le numéro de ligne. Le numéro de ligne 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.

Césure

Le texte est coupé si le paramètre hyphenation est fixé à true et un dictionnaire de césure valide est fixé. pslib ne fournit pas son propre dictionnaire de césure, mais utilise un d'openoffice, scribus ou koffice. Il est possible de trouver ces dictionnaires pour différentes langues 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 dictionnaires de césure les plus complets.

Valeurs de retour

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

Voir aussi

add a note

User Contributed Notes 2 notes

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