Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Writing a paragraph to a pdf [PDF::API2]

by pvaldes (Chaplain)
on Apr 19, 2016 at 23:22 UTC ( [id://1160950] : perlquestion . print w/replies, xml ) Need Help??

pvaldes has asked for the wisdom of the Perl Monks concerning the following question:

PROBLEM: When using PDF-API2 to create a new pdf file, I had writed some text on it with the method $page->text. It seems that the \newline do not works here and I wish to know if there is a method equivalent for writing paragraphs. Example:

use PDF::API2; ... my $txt = $page->text(); $txt->translate(50,500); $txt->text("This should be a text \n in four lines \n in coordinates x +=50, y=500, \n but is printed in a single line that reaches the borde +r of the page and escapes toward mars");

I tried $page->par() and $page->paragraph(), just because, without luck:

Can't locate object method "par" via package "PDF::API2::Page" at line 44.

AUTO-SOLVED: seconds before to submit the post, but the answer could be useful to other monks and is not trivial to find, so I'll send it in any case.

You need to use the method section from $txt:

$txt->section("this will be \n written in the pdf \n as a paragraph", $textboxwidth, $textboxheight);

There is also $txt->text_center('my text') that places the text in the center of the given coordinates

Replies are listed 'Best First'.
Re: Writing a paragraph to a pdf [PDF::API2]
by pvaldes (Chaplain) on Apr 20, 2016 at 15:07 UTC

    UPDATED: Showing the correct way to use the method paragraph (and avoid the need to place \n around the text): Thanks to poj.

    $txt->paragraph("This is a text that fits in a rectangle of 50x200 in the pdf current page. Newlines are placed automatically if needed, but any text reaching the lower limit of the given height will not be printed", 50, 200);