• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • PDF_add_textflow()

    (PECL pdflib >= 2.1.0)

    Create Textflow or add text to existing Textflow

    说明

    PDF_add_textflow(resource $pdfdoc,int $textflow,string $text,string $optlist): int

    Creates a Textflow object, or adds text and explicit options to an existing Textflow.

    FYI -- PDFlib Lite does not support textflow(s).
    If you get an error like this:
    PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 3072 bytes) in /var/www/html/pdf/starter_textflow.php on line 70
    It is because you are sending too much data to the "add_textflow" function. Increasing the memory in the php.ini file won't fix the problem. The solution is to try buffering the data you send to the function.
    For example, if this fails:
    <?php
    $text=
    "Lorem ipsum dolor sit amet, consectetur adi­pi­sicing elit, sed do eius­mod tempor incidi­dunt ut labore et dolore magna ali­qua. Ut enim ad minim ve­niam, quis nostrud exer­citation ull­amco la­bo­ris nisi ut ali­quip ex ea commodo con­sequat. Duis aute irure dolor in repre­henderit in voluptate velit esse cillum dolore eu fugiat nulla pari­atur. Excep­teur sint occae­cat cupi­datat non proident, sunt in culpa qui officia dese­runt mollit anim id est laborum. ";
    //send lots of data all at once
    $max=100;
    for($i=0;$i<$max;$i++)
      $text .= $text;
    $tf = $p->add_textflow($tf, $text, $optlist1);
    ?>
    Try something like this instead:
    <?php
    $text=
    "Lorem ipsum dolor sit amet, consectetur adi­pi­sicing elit, sed do eius­mod tempor incidi­dunt ut labore et dolore magna ali­qua. Ut enim ad minim ve­niam, quis nostrud exer­citation ull­amco la­bo­ris nisi ut ali­quip ex ea commodo con­sequat. Duis aute irure dolor in repre­henderit in voluptate velit esse cillum dolore eu fugiat nulla pari­atur. Excep­teur sint occae­cat cupi­datat non proident, sunt in culpa qui officia dese­runt mollit anim id est laborum. ";
    //send chunks of data
    $max=100;
    for($i=0;$i<$max;$i++)
      $tf = $p->add_textflow($tf, $text, $optlist1);
    ?>
    In the second example we send less data, but we call the function more often. With the first example, I could only generate 3 or 4 pages of a PDF; with the latter example I could generate 200+ page PDF's.
    This took me a while to debug; hope it saves someone else some time. :)