Jump to content
Wanze

Pages2Pdf

Recommended Posts

On 21.2.2017 at 5:49 PM, zyON said:

Is there an easy way to remove the space occupied by the header? It's probably me or my setup but I can't seem to remove the space.

Maybe you can set the headerMargin setting to zero in the WirePDF module configuration? Do you print the header?

Share this post


Link to post
Share on other sites

Hi @Wanze, i tried it all:

 

<img src="<?=$mandant->teaserbild->first()->height('100')->url;?>" width="<?=$mandant->teaserbild->first()->height('100')->width;?>" height="100" alt="logo" />

// AND

<img src="<?=$mandant->teaserbild->first()->height('100')->httpUrl;?>" width="<?=$mandant->teaserbild->first()->height('100')->width;?>" height="100" alt="logo" />

// AND ALSO

$imagedata = file_get_contents($mandant->teaserbild->first()->height('100')->filename);
$base64Img = "data:image/png;base64," . base64_encode($imagedata);
<img src="<?=$base64Img;?>" width="<?=$mandant->teaserbild->first()->height('100')->width;?>" height="100" alt="logo" />

 

but nothing works. How do I enable debug mode (showImageErrors) for the pdf module?

 

Thanks,

thomas

 

Share this post


Link to post
Share on other sites

Strange update:

 

$pdf->save();

shows the images, but

$pdf->download();

doesn't. Not sure what's going on here but I can work around that.

Thanks,

thomas

  • Like 1

Share this post


Link to post
Share on other sites

Greeting,

I need help to use a font 'dejavusans'? I have problems with the display Croatian letters š, đ, č, ć, ž.

I use

$pdf = $modules->get('WirePDF');

but I can not set the font 'dejavusans'

<?php

$pdf = $modules->get('WirePDF');

$mpdf = $pdf->mpdf;

$pdfPath = $config->paths->files . $page->id . "/" . $page->title.'.pdf';
$stylesheet = file_get_contents($config->paths->templates.'/pages2pdf/styles.css');

$wireSendOptions = array('exit' => false, 'forceDownload' => false, 'downloadFilename' => '');

$mpdf->WriteHTML($stylesheet,1);

$html = "";
$html .= "<html lang='hr'><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /></head><body>";
$html .= '<table border=0>';
$html .= 'text example š đ č ć ž';
$html .= "</body></html>";
$mpdf->WriteHTML($html);

$mpdf->Output($pdfPath, 'F');
wireSendFile($pdfPath, $wireSendOptions );
?>

 

Share this post


Link to post
Share on other sites

In administration, inside the WirePdf configuration, when I set Mode: "s"  then I get a an exception:

mPDF Error - cannot find TTF TrueType font file - /.../site/templates/fonts/DejaVuSans.ttf": invalid checksum 26f399eb8 table: FFTM (expected 6f399eb8)

Can i help me why there is a exception?

Share this post


Link to post
Share on other sites
On 08/03/2017 at 1:52 PM, Wanze said:

Maybe you can set the headerMargin setting to zero in the WirePDF module configuration? Do you print the header?

Wanze, yes thanks. I was missing the configuration options on the WirePDF module (was checking only the Pages2PDF module configuration).

Share this post


Link to post
Share on other sites

I'm trying to use this module to create a PDF of a page on my website. I've tried following along with this thread and the tutorials, etc on Github but I'm still having trouble getting it to work correctly. The page in question is vector.houseofdeadleg.co.uk. If you click on the button the pdf downloads but only includes a header and footer, and any text on the page. I can't get the images to be included.

Share this post


Link to post
Share on other sites

I have this installed on PW3 and my supposed pages2pdf link simply loads the page with the get variable specified ={page.id}, not as a PDF. What could be the matter?

Share this post


Link to post
Share on other sites

Does anybody know how to solve with Pages2Pdf second page content top margin?, I attach an image so you can see that the paragraph hasn't got any padding or margin although is set.

Captura de pantalla 2017-07-26 a las 19.31.24.png

Share this post


Link to post
Share on other sites

see the docs and examples on that page: https://mpdf.github.io/reference/mpdf-functions/addpagebyarray.html

$mpdf->AddPageByArray(array(
    'orientation' => 'L',
    'mgl' => '50',
    'mgr' => '50',
    'mgt' => '50',
    'mgb' => '50',
    'mgh' => '10',
    'mgf' => '10',
    ));

mgt = page margin from the top (where regular text starts, in the example it would start 50mm below the top)

mgh = margin for the header (where the header text ends, in the example it would end 10mm from the top)

 

  • Like 2

Share this post


Link to post
Share on other sites
<?php 

	$pdf = $modules->get('WirePDF');
	$pdf->pageFormat = 'A4';
	$pdf->bottomMargin = 10;

	$mpdf = $pdf->mpdf;

	$mpdf->AddPageByArray(array(
	    'orientation' => 'L',
	    'mgl' => '50',
	    'mgr' => '50',
	    'mgt' => '50',
	    'mgb' => '50',
	    'mgh' => '10',
	    'mgf' => '10',
	    ));

 ?>

Still not getting the margin within header and body, not sure if I've defined it the right way

Share this post


Link to post
Share on other sites

looks fine to me. try it with an empty pdf and the most simple headers & texts possible. maybe your header is just too large and it cannot shrink it (because it's not intended).

mpdf is often trial&error ;)

  • Like 3

Share this post


Link to post
Share on other sites
On 6.6.2017 at 2:18 AM, hellomoto said:

I have this installed on PW3 and my supposed pages2pdf link simply loads the page with the get variable specified ={page.id}, not as a PDF. What could be the matter?

The page you try to download the PDF from (the given ID via get parameter) must:

  • Be viewable for the current user
  • Its template must be allowed to create PDFs (see the module config)

Otherwise you should debug around this line:

https://github.com/wanze/Pages2Pdf/blob/master/Pages2Pdf.module#L91

Cheers

Share this post


Link to post
Share on other sites
9 hours ago, Manol said:

<?php 

	$pdf = $modules->get('WirePDF');
	$pdf->pageFormat = 'A4';
	$pdf->bottomMargin = 10;

	$mpdf = $pdf->mpdf;

	$mpdf->AddPageByArray(array(
	    'orientation' => 'L',
	    'mgl' => '50',
	    'mgr' => '50',
	    'mgt' => '50',
	    'mgb' => '50',
	    'mgh' => '10',
	    'mgf' => '10',
	    ));

 ?>

Still not getting the margin within header and body, not sure if I've defined it the right way

Did you check the settings in the WirePDF module? You can define the margin there, which should be the same for all pages. If it is not working on just one page, there might be a problem with the markup. Maybe you can introduce some manual page breaks for testing this, please see the mpdf documentation for this feature. 

  • Like 1

Share this post


Link to post
Share on other sites

Hello there,

I tried to use SVG files in image tags and some of the vector paths are "destroyed" and everything in the SVG is black.

Then in tried inlining the SVG:

if( $img->ext == "svg")
    echo "<div class'card__img'>".file_get_contents($img->filename)."</div>";
else
    echo "<img class='card__img' src='{$img->url}'>";

This outputs a small icon with a red "X" … meaning; "file not found" … I guess.

Before one of the icons there was this line in the PDF:

<?xml version="1.0" encoding="utf-8"?>

So this means the module found the file but did not render the content.

(… and YES, I saw there is a module "ImageRasterizer", but unfortunately it requires Imagemagick and the pecl imagick extension.)

Share this post


Link to post
Share on other sites
1 hour ago, bernhard said:

hi alf and welcome to the forum

did you read the docs of mpdf regarding svg? https://mpdf.github.io/what-else-can-i-do/images.html

maybe there is some helpful information..

@bernhard

No, but I read the PDF (http://www.mpdfonline.com/repos/mpdfmanual.pdf) and as far as I can see it has the same content … how ever … SVGs "should" work.

So the question is if there is a problem with the module or with my installation or who knows? … if nothing works, I will disable SVG files and I will use PNGs instead …

Share this post


Link to post
Share on other sites

Just in case someone else encounters the same problem:

I had to migrate a whole website to PW and during tests I imported around 200 pages. Now I wanted to delete them and start the real import process. To get rid of the test pages I tried to delete them with adrians AdminActions, but got an error message and nothing was deleted:

Error: Call to a member function path() on a non-object (line 261 of /xxx/site/assets/cache/FileCompiler/site/modules/Pages2Pdf/Pages2Pdf.module) 

I had to detach the template in question in Pages2Pdf settings. Then it worked and I was able to delete the pages.

Same error with a ListerPro Action(Delete), so I asume it's a problem with Pages2Pdf...

PW 3.0.62 Pages2Pdf 1.1.7

  • Like 1

Share this post


Link to post
Share on other sites

I've just added this module to a dev site and when trying to call the module for rendering I'm getting an error – Parse Error: syntax error, unexpected ',' (line 8910 of /Applications/MAMP/htdocs/xxx/site/modules/WirePDF/mpdf/mpdf.php)

 

Additional:

Looking at WirePDF module, it was saying I had two versions, one in the Pages2PDF folder and one separate one, I think one might be a Handover from a previous attempt to use teh same module. I deleted the Pages2PDF folder and the WirePDF one and did a fresh install, now I get teh error message  Compile Error: 'break' not in the 'loop' or 'switch' context (line 2416 of /Applications/MAMP/htdocs/xxx/site/modules/Pages2Pdf/mpdf/classes/svg.php)

Share this post


Link to post
Share on other sites
On 23.8.2017 at 5:05 PM, houseofdeadleg said:

I've just added this module to a dev site and when trying to call the module for rendering I'm getting an error – Parse Error: syntax error, unexpected ',' (line 8910 of /Applications/MAMP/htdocs/xxx/site/modules/WirePDF/mpdf/mpdf.php)

 

Additional:

Looking at WirePDF module, it was saying I had two versions, one in the Pages2PDF folder and one separate one, I think one might be a Handover from a previous attempt to use teh same module. I deleted the Pages2PDF folder and the WirePDF one and did a fresh install, now I get teh error message  Compile Error: 'break' not in the 'loop' or 'switch' context (line 2416 of /Applications/MAMP/htdocs/xxx/site/modules/Pages2Pdf/mpdf/classes/svg.php)

What PHP version are you using? These kind of errors make me guess that mpdf is not compatible with your PHP version. Can you try to use the dev branch of the module via GitHub?

Share this post


Link to post
Share on other sites

I have this

$pdf = $modules->get('Pages2Pdf')->render(array(
  'title' => 'PDF',
  'markup' => '<a href=\'{url}\' target=\'_blank\'>{title}</a>',
  'page_id' => '',
));

$content .= <<<EOT
<script type="text/javascript">
  $("h1").append(" <small>[$pdf]</small>");</script>
</script>
EOT;

which outputs to /?pdf={pid} but clicking the link just opens the current page in a new tab, no PDF.

???

Share this post


Link to post
Share on other sites

Also having a problem with images..

On some pages the PDF shows the image, on other pages the image is missing.

<img src="<?= $page->navimg->url ?>" width="220"/>

 

Share this post


Link to post
Share on other sites

try outputting the image url as plaintext

<p><?= $yourimage->url ?></p>

also check the return setting of your images field. it can be set as array or single image. if it is set as array you would have to define wich image to show (eg $yourimages->first()->url )

Share this post


Link to post
Share on other sites

Hi bernhard,

thank you for the hint.  The image field is set as single element.
 

  <td colspan="1" style="padding:15px">
    <img src="<?= $page->navimg->url; ?>" width="220"/>
    <p><?= $page->navimg->url ?></p>
  </td>

something between ..

<?php if ($page->images->count > 0) : ?>
<table>
  <tr>
  <?php
    $gallery = $page->images;
    $gallery = $gallery->slice(0,4);
   foreach ($gallery as $image): ?>
    <td>
      <img src="<?= $image->size(200, 200)->url ?>" width="200" height="200"/>
    </td>
  <?php endforeach; ?>
  </tr>
</table>
<?php endif; ?>

 

template part:

<?php 
$optionspdf = array(
  'title' => 'Datenblatt',
  'markup' => '<a class="uk-button gaming" href="{url}" download>{title}</a>',
  'pageFormat' => 'A4'
);
echo $modules->get('Pages2Pdf')->render($optionspdf);
?>

 

result:

Unbenannt.thumb.PNG.434147903301c5d7a1ddea668fee6fee.PNG

 

Share this post


Link to post
Share on other sites

@maxf5 Can you check if the image is existing on your hard drive by looking at the file in /site/assets/files? Recently I had a problem in ProcessWire that my thumbnails were not getting generated correctly if I was using numbers like 100,200,300,400 for the dimensions. Strangely it worked by using other dimensions like 110, 390 etc.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By MoritzLost
      TrelloWire
      This is a module that allows you to automatically create Trello cards for ProcessWire pages and update them when the pages are updated. This allows you to setup connected workflows. Card properties and change handling behaviour can be customized through the extensive module configuration. Every action the module performs is hookable, so you can modify when and how cards are created as much as you need to. The module also contains an API-component that makes it easy to make requests to the Trello API and build your own connected ProcessWire-Trello workflows.
      Features
      All the things the module can do for you without any custom code: Create a new card on Trello whenever a page is added or published (you can select applicable templates). Configure the target board, target list, name and description for new cards. Add default labels and checklists to the card. Update the card whenever the page is updated (optional). When the status of the card changes (published / unpublished, hidden / unhidden, trashed / restored or deleted), move the card to a different list or archive or delete it (configurable). You can extend this through hooks in many ways: Modifiy when and how cards are created. Modify the card properties (Target board & list, title, description, et c.) before they are sent to Trello. Create your own workflows by utilizing an API helper class with many convenient utility methods to access the Trello API directly. Feedback & Future Plans
      Let me know what you think! In particular:
      If you find any bugs report them here or on Github, I'll try to fix them. This module was born out of a use-case for a client project where we manage new form submissions through Trello. I'm not sure how many use-cases there are for this module. If you do use it, tell me about it! The Trello API is pretty extensive, I'll try to add some more helper methods to the TrelloWireApi class (let me know if you need anything in particular). I'll think about how the module can support different workflows that include Twig – talk to me if you have a use-case! Next steps could be a dashboard to manage pages that are connected to a Trello card, or a new section in the settings tab to manage the Trello connection. But it depends on whether there is any interest in this 🙂 Links
      Repository on Github Complete module documentation (getting started, configuration & API documentation) [Module directory pending approval] Module configuration

    • By MoritzLost
      Process Cache Control
      This module provides a simple solution to clearing all your cache layers at once, and an extensible interface to perform various cache-related actions.
      The simple motivation behind this module was that I was tired of manually clearing caches in several places after deploying a change on a live site. The basic purpose of this module is a simple Clear all caches link in the Setup menu which clears out all caches, no matter where they hide. You can customize what exactly the module does through it's configuration menu:
      Expire or delete all cache entries in the database, or selectively clear caches by namespace ($cache API) Clear the the template render cache. Clear out specific folders inside your site's cache directory (/site/assets/cache) Clear the ProCache page render cache (if your site is using ProCache) Refresh version strings for static assets to bust client-side browser caches (this requires some setup, see the full documentation for details). This is the basic function of the module. However, you can also add different cache management action through the API and execute them through the module's interface. For this advanced usage, the module provides:
      An interface to see all available cache actions and execute them. A system log and logging output on the module page to see verify what the module is doing. A CacheControlTools class with utility functions to clear out different caches. An API to add cache actions, execute them programmatically and even modify the default action. Permission management, allowing you granular control over which user roles can execute which actions. The complete documentation can be found in the module's README.
      Plans for improvements
      If there is some interest in this, I plan to expand this to a more general cache management solution. I particular, I would like to add additional cache actions. Some ideas that came to mind:
      Warming up the template render cache for publicly accessible pages. Removing all active user sessions. Let me know if you have more suggestions!
      Links
      https://github.com/MoritzLost/ProcessCacheControl ProcessCacheControl in the Module directory CHANGELOG in the repository Screenshots


    • By Macrura
      PrevNextTabs Module
      Github: https://github.com/outflux3/PrevNextTabs
      Processwire helper modules for adding page navigation within the editor.
      Overview
      This is a very simple module that adds Previous and Next links inline with the tabs on the page editor. Hovering over the tab shows the title of the previous or next page (using the admin's built in jqueryUI tooltips.)
      Usage
      This module is typically used during development where you or your editors need to traverse through pages for the purpose of proofing, flagging and/or commenting. Rather than returning to the page tree or lister, they can navigate with these links.
      Warnings
      If you are using PW version 2.6.1 or later, the system will prevent you from leaving the page if you have unsaved edits.
      For earlier versions, to avoid accidentally losing changes made to a page that might occur if a user accidentally clicks on one of these, make sure to have the Form Save Reminder module installed.
      http://modules.processwire.com/modules/prev-next-tabs/
    • By Gadgetto
      SnipWire - Snipcart integration for ProcessWire
      Snipcart is a powerful 3rd party, developer-first HTML/JavaScript shopping cart platform. SnipWire is the missing link between Snipcart and the content management framework ProcessWire.
      With SnipWire, you can quickly turn any ProcessWire site into a Snipcart online shop. The SnipWire plugin helps you to get your store up and running in no time. Detailed knowledge of the Snipcart system is not required.
      SnipWire is free and open source licensed under Mozilla Public License 2.0! A lot of work and effort has gone into development. It would be nice if you could donate an amount to support further development:

      Status update links (inside this thread) for SnipWire development
      2020-03-21 -- SnipWire 0.8.5 (beta) released! Improves SnipWires webhooks interface and provides some other fixes and additions 2020-03-03 -- SnipWire 0.8.4 (beta) released! Improves compatibility for Windows based Systems. 2020-03-01 -- SnipWire 0.8.3 (beta) released! The installation and uninstallation process has been heavily revised. 2020-02-08 -- SnipWire 0.8.2 (beta) released! Added a feature to change the cart and catalogue currency by GET, POST or SESSION param 2020-02-03 -- SnipWire 0.8.1 (beta) released! All custom classes moved into their own namespaces. 2020-02-01 -- SnipWire is now available via ProcessWire's module directory! 2020-01-30 -- SnipWire 0.8.0 (beta) first public release! (module just submitted to the PW modules directory) 2020-01-28 -- added Custom Order Fields feature (first SnipWire release version is near!) 2020-01-21 -- Snipcart v3 - when will the new cart system be implemented? 2020-01-19 -- integrated taxes provider finished (+ very flexible shipping taxes handling) 2020-01-14 -- new date range picker, discount editor, order notifiactions, order statuses, and more ... 2019-11-15 -- orders filter, order details, download + resend invoices, refunds 2019-10-18 -- list filters, REST API improvements, new docs platform, and more ... 2019-08-08 -- dashboard interface, currency selector, managing Orders, Customers and Products, Added a WireTabs, refinded caching behavior 2019-06-15 -- taxes provider, shop templates update, multiCURL implementation, and more ... 2019-06-02 -- FieldtypeSnipWireTaxSelector 2019-05-25 -- SnipWire will be free and open source Plugin Key Features
      Fast and simple store setup Full integration of the Snipcart dashboard into the ProcessWire backend (no need to leave the ProcessWire admin area) Browse and manage orders, customers, discounts, abandoned carts, and more Multi currency support Custom order and cart fields Process refunds and send customer notifications from within the ProcessWire backend Process Abandoned Carts + sending messages to customers from within the ProcessWire backend Complete Snipcart webhooks integration (all events are hookable via ProcessWire hooks) Integrated taxes provider (which is more flexible then Snipcart own provider) Useful Links
      SnipWire in PW modules directory SnipWire Docs (please note that the documentation is a work in progress) SnipWire @GitHub (feature requests and suggestions for improvement are welcome - I also accept pull requests) Snipcart Website  
      ---- INITIAL POST FROM 2019-05-25 ----
       
×
×
  • Create New...