PHP code example of popphp / pop-pdf

1. Go to this page and download the library: Download popphp/pop-pdf library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

popphp / pop-pdf example snippets


use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Document\Page\Text;

$document = new Document();
$document->addFont(Font::ARIAL);

$page = $document->createPage(Page::LETTER);
$page->addText(new Text('Hello World', 12), Font::ARIAL, 50, 742);

Pdf::writeToFile($document, 'my-document.pdf');

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Document\Page\Text;
use Pop\Pdf\Document\Page\Image;

$document = new Document();
$document->addFont(Font::ARIAL);

$page = $document->createPage(Page::LETTER);
$page->addText(new Text('Look at this image:', 12), Font::ARIAL, 50, 742);
$page->addImage(Image::createImageFromFile('my-image.jpg'), 50, 380);

Pdf::writeToFile($document, 'my-document.pdf');

use Pop\Pdf\Pdf;

// Pass a valid document object and a path/filename
Pdf::writeToFile($document, 'path/to/my-document.pdf');

use Pop\Pdf\Pdf;

// Pass a valid document object and a path/filename
Pdf::outputToHttp($document, 'my-document.pdf', true);

use Pop\Pdf\Pdf;

$doc = Pdf::importFromFile('path/to/document.pdf');

use Pop\Pdf\Pdf;

// Import pages 2, 4 and 6 from the PDF document
$doc = Pdf::importFromFile('path/to/document.pdf', [2, 4, 6]);

use Pop\Pdf\Pdf;

$doc = Pdf::importRawData($rawData, [2, 4, 6]);

use Pop\Pdf\Pdf;

$doc = Pdf::importFromImages($arrayOfImages);

use Pop\Pdf\Pdf;

// Writes one image per page into 'path/to/output/', e.g. document-01.jpg, document-02.jpg, etc.
$images = Pdf::extractAsImages('path/to/document.pdf', 'path/to/output/');

// $images is keyed by 1-based page number:
// [1 => 'path/to/output/document-01.jpg', 2 => 'path/to/output/document-02.jpg', ...]

use Pop\Pdf\Pdf;

// Extract pages 1 and 3 only, as PNGs
$images = Pdf::extractAsImages('path/to/document.pdf', 'path/to/output/', 'png', 300, pages: [1, 3]);

// 'page-01.jpg', 'page-02.jpg', ...
$images = Pdf::extractAsImages('path/to/document.pdf', 'path/to/output/', filenameFormat: 'page-%2$02d');

// 'page_1.jpg', 'page_2.jpg', ... (no zero-padding)
$images = Pdf::extractAsImages('path/to/document.pdf', 'path/to/output/', filenameFormat: 'page_%2$d');

use Pop\Pdf\Pdf;

$doc = Pdf::merge(['path/to/one.pdf', 'path/to/two.pdf', 'path/to/three.pdf']);

Pdf::writeToFile($doc, 'merged.pdf');

use Pop\Pdf\Pdf;

$doc = Pdf::mergeRawData([$pdfStream1, $pdfStream2]);

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;

$document = new Document();
$document->addFont(Font::ARIAL);

$doc = Pdf::merge(['path/to/one.pdf', 'path/to/two.pdf'], $document);
// $doc is the same $document instance, with the merged pages appended

use Pop\Pdf\Pdf;

$text = Pdf::extractTextFromFile('path/to/document.pdf');

use Pop\Pdf\Pdf;

$text = Pdf::extractTextFromData($pdfStream);

use Pop\Pdf\Pdf;

// Extract text from pages 1, 2 and 3 only
$text = Pdf::extractTextFromFile('path/to/document.pdf', [1, 2, 3]);

// Extract text, but never walk past the first 50 pages
$text = Pdf::extractTextFromFile('path/to/document.pdf', null, 50);

use Pop\Pdf\Pdf;

if (Pdf::isImageOnlyDocument('path/to/document.pdf')) {
    // every page is just a single full-page image - send it to OCR
}

use Pop\Pdf\Pdf;

$isImageOnly = Pdf::isImageOnlyData($pdfStream);

use Pop\Pdf\Pdf;

$pages = Pdf::getImageOnlyPages('path/to/document.pdf');
// [0 => true, 1 => false, 2 => true]

use Pop\Pdf\Document;

$document = new Document();
$document->setCompression(true);

use Pop\Pdf\Document;

$document = new Document();
$document->setOrigin(Document::ORIGIN_TOP_LEFT);

use Pop\Pdf\Document\Security;
use Pop\Pdf\Document\Permissions;

$security = new Security('open-me', 'admin123');
$security->setPermissions((new Permissions())->allowPrinting(false)->allowCopying(false));

$document->setSecurity($security);
Pdf::writeToFile($document, 'protected.pdf');

use Pop\Pdf\Document;
use Pop\Pdf\Pdf;

$document = Pdf::importFromFile('protected.pdf', null, 'open-me');
$text     = Pdf::extractTextFromFile('protected.pdf', null, null, 'open-me');
$merged   = Pdf::merge(['a.pdf', 'protected.pdf'], new Document(), [1 => 'open-me']);

use Pop\Pdf\Document;
use Pop\Pdf\Document\Page;

$pageLetter = new Page(Page::LETTER);
$pageCustom = new Page(500, 1000); // Custom width and height

$document = new Document();
$document->addPages([$pageLetter, $pageCustom]);

use Pop\Pdf\Document;
use Pop\Pdf\Document\Page;

$document  = new Document();
$pageLegal = $document->createPage(Page::LEGAL);

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Document\Page\Text;

$document = new Document();
$document->addFont(Font::HELVETICA_BOLD);

$page = $document->createPage(Page::LETTER);
$page->addText(new Text('Hello World', 12), Font::HELVETICA_BOLD, 50, 742);

Pdf::writeToFile($document, 'my-document.pdf');

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;
use Pop\Pdf\Document\Page;

$font     = new Font('/path/to/some/font.ttf');
$document = new Document();
$document->embedFont($font);

$page = new Page(Page::LETTER);
$page->addText(new Page\Text('Hello World', 36), $font->getName(), 50, 600);

$document->addPage($page);

Pdf::writeToFile($document, 'my-document.pdf');

$font     = new Font('/path/to/DejaVuSans.ttf'); // a Unicode-capable font
$document = new Document();
$document->embedFont($font);

$page = new Page(Page::LETTER);
$page->addText(new Page\Text('123 ПРИВІТ:', 36), $font->getName(), 50, 600);

$document->addFont(new Font(Font::ZAPF_DINGBATS));
$document->addFont(new Font(Font::SYMBOL));

$page->addText(new Page\Text("\u{2713} \u{2714} \u{2605}", 12), Font::ZAPF_DINGBATS, 50, 700); // ✓ ✔ ★
$page->addText(new Page\Text("\u{03B1} + \u{03B2} \u{2264} \u{2211}", 12), Font::SYMBOL, 50, 680); // α + β ≤ ∑

use Pop\Pdf\Document\Page\Text;

$text = new Text('Hello World', 12);

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Document\Page\Text;

$document = new Document();
$document->addFont(Font::ARIAL);

$longString = 'Lorem ipsum [...really long string...] anim id est laborum.';
$text = new Text($longString, 12);
$text->setCharWrap(80, 16); // Set the wrap at 80 characters and a leading of 16

$page = $document->createPage(Page::LETTER);
$page->addText($text, Font::ARIAL, 50, 742);

Pdf::writeToFile($document, 'my-document.pdf');

use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;

$document = new Document();
$document->addFont(Font::ARIAL);
$document->createStyle('normal', Font::ARIAL, 12);

$page = $document->createPage(Page::LETTER);
$page->addText($text, 'normal', 50, 742); // The second parameter can either be a font or a reference to a style

use Pop\Color\Color;
use Pop\Pdf\Document\Style;

$document->addStyle(Style::create('heading', Font::ARIAL, 24, new Color\Rgb(0, 102, 204)));

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Document\Page\Text;
use Pop\Pdf\Document\Page\Text\Alignment;

$document = new Document();
$document->addFont(Font::ARIAL);

$longString = 'Lorem ipsum [...really long string...] anim id est laborum.';
$text = new Text($longString, 12);

// Create a left-aligned bounding area with the
// X between 50 and 350; leading set 16
$text->setAlignment(Alignment::createLeft(50, 350, 16));

$page = $document->createPage(Page::LETTER);
$page->addText($text, Font::ARIAL, 50, 742);

Pdf::writeToFile($document, 'my-document.pdf');

// Create a right-aligned bounding area with the
// X between 250 and 550; leading set 16
$text->setAlignment(Alignment::createRight(250, 550, 16));

// Create a center-aligned bounding area with the
// X between 50 and 350; leading set 16
$text->setAlignment(Alignment::createCenter(200, 412, 16));

use Pop\Pdf\Document\Font;

$font  = new Font(Font::HELVETICA_BOLD);
$width = $font->getStringWidth('Hello World', 12);
var_dump($width);

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Document\Page\Image;

$document = new Document();
$page     = $document->createPage(Page::LETTER);
$page->addImage(Image::createImageFromFile('my-image.jpg'), 50, 422);

Pdf::writeToFile($document, 'my-document.pdf');

$page->addImage(Image::loadImageFromStream($imageContents), 50, 422);

$page->addImage('my-image.jpg', 50, 422);

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Document\Page\Image;

$image = Image::createImageFromFile('my-image.jpg');
$image->resizeToWidth(120);

$document = new Document();
$page     = $document->createPage(Page::LETTER);
$page->addImage($image, 50, 622);

Pdf::writeToFile($document, 'my-document.pdf');

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Document\Page\Path;
use Pop\Color\Color;

$document = new Document();

$path = new Path(Path::FILL_STROKE);
$path->setFillColor(Color::rgb(155, 20, 20))
    ->setStrokeColor(Color::rgb(81, 125, 153))
    ->setStroke(5)
    ->drawRectangle(50, 400, 320, 240);

$page = new Page(Page::LETTER);
$page->addPath($path);

$document->addPage($page);

Pdf::writeToFile($document, 'my-document.pdf');

use Pop\Pdf\Document\Page\Path;
use Pop\Color\Color;

$path = new Path(Path::FILL_EVEN_ODD);
$path->setFillColor(Color::rgb(0, 102, 204));

$path->openPath();
$path->drawPolygon([
    ['x' => 150, 'y' => 250], ['x' => 450, 'y' => 250],
    ['x' => 450, 'y' => 550], ['x' => 150, 'y' => 550]
]);
$path->drawPolygon([
    ['x' => 250, 'y' => 350], ['x' => 350, 'y' => 350],
    ['x' => 350, 'y' => 450], ['x' => 250, 'y' => 450]
]);
$path->paintPath();

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Document\Page\Text;
use Pop\Pdf\Document\Page\Annotation\Url;

$document = new Document();
$document->addFont(Font::ARIAL);

$page = $document->createPage(Page::LETTER);
$page->addText(new Text('Visit Google', 12), Font::ARIAL, 50, 742);

$page->addUrl(new Url(100, 15, 'https://www.google.com/'), 50, 742);
Pdf::writeToFile($document, 'my-document.pdf');

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Document\Page\Text;
use Pop\Pdf\Document\Page\Annotation\Link;

$document = new Document();
$document->addFont(Font::ARIAL);

$page1 = $document->createPage(Page::LETTER);
$page1->addText(new Text('This is an internal link', 12), Font::ARIAL, 50, 742);
$page2 = $document->createPage(Page::LETTER);
$page2->addText(new Text('This is the destination', 12), Font::ARIAL, 50, 742);

// Create a link to page 2 and set the zoom to 110%
$link = new Link(120, 15, 10, 752);
$link->setPageTarget(2)
    ->setZTarget(110);
    
$page1->addLink($link, 50, 742);

Pdf::writeToFile($document, 'my-document.pdf');

$firstName->setBorderWidth(1)
    ->setBorderColor([153, 153, 153])    // [r, g, b], 0-255 each
    ->setBackgroundColor([255, 255, 255]);

$agree = new Page\Field\Button('agree');
$agree->setValue('Yes');    // the export value used once checked
$agree->setChecked();       // actually check it
$agree->isChecked();        // => true

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;
use Pop\Pdf\Document\Form;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Document\Page\Path;
use Pop\Pdf\Document\Page\Text;

$form = new Form('contact_form');

$document = new Document();
$document->addForm($form);
$document->addFont(new Font(Font::ARIAL));
$document->addFont(new Font(Font::ARIAL_BOLD));

$firstName = new Page\Field\Text('first_name');
$firstName->setWidth(200)
    ->setHeight(20);

$lastName = new Page\Field\Text('last_name');
$lastName->setWidth(200)
    ->setHeight(20);

$colors = new Page\Field\Choice('colors');
$colors->addOption('Red')
    ->addOption('Green')
    ->addOption('Blue')
    ->setMultiSelect()
    ->setWidth(200)
    ->setHeight(50)
    ->setFont(Font::ARIAL)
    ->setSize(11);

$city = new Page\Field\Choice('city');
$city->addOption('New Orleans')
    ->addOption('New York')
    ->addOption('Los Angeles')
    ->setCombo()
    ->setWidth(200)
    ->setHeight(20)
    ->setFont(Font::ARIAL)
    ->setSize(11);

$lovePhp = new Page\Field\Button('love_php');
$lovePhp->addOption('PHP')->setWidth(20)
    ->setHeight(20);

$lovePdf = new Page\Field\Button('love_pdf');
$lovePdf->addOption('PDF')->setRadio()
    ->setWidth(20)
    ->setHeight(20);

$comments = new Page\Field\Text('comments');
$comments->setWidth(500)
    ->setHeight(150)
    ->setMultiline();

$page = new Page(Page::LETTER);

$page->addText(new Text('First Name:', 14), Font::ARIAL_BOLD, 50, 680);
$page->addText(new Text('Last Name:', 14), Font::ARIAL_BOLD, 300, 680);
$page->addText(new Text('Favorite Colors?', 14), Font::ARIAL_BOLD, 50, 580);
$page->addText(new Text('Favorite City?', 14), Font::ARIAL_BOLD, 300, 580);
$page->addText(new Text('Love PHP?', 14), Font::ARIAL_BOLD, 80, 330);
$page->addText(new Text('Love PDF?', 14), Font::ARIAL_BOLD, 80, 290);
$page->addText(new Text('Comments:', 14), Font::ARIAL_BOLD, 50, 260);
$page->addPath((new Path())->drawRectangle(50, 650, 200, 20));
$page->addPath((new Path())->drawRectangle(300, 650, 200, 20));
$page->addPath((new Path())->drawRectangle(50, 520, 200, 50));
$page->addPath((new Path())->drawRectangle(300, 550, 200, 20));
$page->addPath((new Path())->drawSquare(50, 325, 20));
$page->addPath((new Path())->drawCircle(60, 295, 10));
$page->addPath((new Path())->drawRectangle(50, 100, 500, 150));

$page->addField($firstName, 'contact_form', 50, 650)
    ->addField($lastName, 'contact_form', 300, 650)
    ->addField($colors, 'contact_form', 50, 520)
    ->addField($city, 'contact_form', 300, 550)
    ->addField($lovePhp, 'contact_form', 50, 325)
    ->addField($lovePdf, 'contact_form', 50, 285)
    ->addField($comments, 'contact_form', 50, 100);

$document->addPage($page);

Pdf::writeToFile($document, 'my-document.pdf');

use Pop\Pdf\Document;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Build\Html\Parser;

$parser = new Parser(new Document(), Page::A4);
// or a custom size:
$parser = new Parser(new Document(), [400, 600]);

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Build\Html\Parser;

$document = new Document();
$document->addFont(Font::ARIAL);
$page = $document->createPage(Page::LETTER);

$parser = new Parser($document);
$parser->parseHtmlFile('test.html');
$parser->process();

Pdf::writeToFile($parser->document(), 'my-document.pdf');

use Pop\Pdf\Pdf;
use Pop\Pdf\Document;
use Pop\Pdf\Document\Font;
use Pop\Pdf\Document\Page;
use Pop\Pdf\Build\Html\Parser;

$html = <<<HTML
<h1>Hello World!</h1>
HTML;

$css = <<<CSS
h1 {
font-family: sans-serif;
color: #f00;
font-weight: normal;
}
h3 {
font-family: serif;
color: #009dff;
}
.red {
font-weight: bold;
color: #f00;
}
.img-med {
    width: 200px;
}
CSS;

$document = new Document();
$document->addFont(Font::ARIAL);
$page = $document->createPage(Page::LETTER);

$parser = new Parser($document);
$parser->parseHtml($html, __DIR__);
$parser->parseCss($css);
$parser->process();

Pdf::writeToFile($parser->document(), 'my-document.pdf');

$html = <<<HTML
<style>
h1 { color: #f00; }
</style>
<h1>Hello World!</h1>
<p style="color: #009dff; font-weight: bold;">Inline styles are supported too.</p>
HTML;

$parser = new Parser($document);
$parser->parseHtml($html, __DIR__);
$parser->process();

$html = <<<HTML
<table>
<thead>
<tr><th>Item</th><th>Quantity</th><th>Price</th></tr>
</thead>
<tbody>
<tr><td colspan="2">Widgets (assorted)</td><td>$19.99</td></tr>
<tr><td rowspan="2">Bulk Order</td><td>100</td><td>$4.50</td></tr>
<tr><td>250</td><td>$4.00</td></tr>
</tbody>
</table>
HTML;

$css = <<<CSS
th { background-color: #dddddd; border-width: 1px; border-color: #333333; }
td { border-width: 1px; border-color: #333333; }
CSS;

$document = new Document();
$document->addFont(Font::ARIAL);
$page = $document->createPage(Page::LETTER);

$parser = new Parser($document);
$parser->parseHtml($html, __DIR__);
$parser->parseCss($css);
$parser->process();

Pdf::writeToFile($parser->document(), 'my-document.pdf');