PDF_fit_textline

(PECL pdflib >= 2.0.0)

PDF_fit_textlinePlace single line of text

说明

bool PDF_fit_textline ( resource $pdfdoc , string $text , float $x , float $y , string $optlist )

Places a single line of text on the page, subject to various options. 成功时返回 TRUE, 或者在失败时返回 FALSE

User Contributed Notes

Anders Lindn 19-Jan-2011 09:38
The function PDF_fit_textline has an "optlist" argument which you use to pass options. In other words, PDF_fit_textline contains many functions instead of one. A classical code smell.

The fact that the optlist argument is a string uglyfies this function by a factor of thousand.

Conclusion: when you make functions like PDF_show_boxed deprecated, replace it with a better function instead of doing the opposite.
scott at dont want spam dot com 13-Jul-2009 12:49
One point about using the PDF_show_boxed function.

It does not support Unicode. So if you need that support you will need to use this function or the text flow functions.
eslindsey at gmail dot com 25-Mar-2009 03:17
For right now, if you are using PDFlib Lite, you can still use the legacy (depreciated) PDF_show_boxed or $p->show_boxed functions to create a text area. This seems to be a good (if not as full-featured) alternative to the textflow functions, and definitely a whole lot easier than trying to write your own text wrapping/hyphenation solution.
Chris at postal-code dot com 27-Nov-2006 10:47
A patch to the code below to handle an array bounds error that arises:

<?php
$nextText
= "";
if ( (
count( $tmpTxt ) - 1 ) >= ( $i + 1 ) )
{
$nextText = $tmpTxt[ $i+1 ]; }
               
if ( (
strlen( $str ) + strlen( $nextText ) ) > $cols )
?>
rcable at workforceconnections dot biz 12-Jul-2006 02:49
Here is a function I created in order to allow me to do textblocks on pdflib lite.  Hope this helps someone else, cause all the stuff I've found on php.net has helped me.
$p is your pdf resource
$text is the string to put in the box
$cols is the number col characters before a carriage return
$xcrd,$ycrd is lower left of first line.

This will accept \n as a newline/carriage return and use it to skip to next line.  It is not setup to hyphenate words, but someday I'll build one, or buy the full pdf package. ;)

function text_block($p,$text,$cols,$xcrd,$ycrd)
{
$font_size=12;  //font size, used to space lines on y axis
$tmplines = explode("\n",$text);
for($j=0;$j<count($tmplines);$j++)
    {
    $tmptxt = explode(" ",$tmplines[$j]);
    $str="";
    for($i=0;$i<count($tmptxt);$i++)
        {
        if($str=="") $str=sprintf("%s",$tmptxt[$i]);
        else    $str=sprintf("%s %s",$str,$tmptxt[$i]);
        if((strlen($str) + strlen($tmptxt[$i+1])) > $cols)
            {
            pdf_fit_textline($p,$str,$xcrd,$ycrd,"");
            $str="";
            $ycrd-=$font_size;
            }
        }
    pdf_fit_textline($p,$str,$xcrd,$ycrd,"");
    $ycrd-=$font_size;
    }
return $ycrd;
}