hheyne Posted February 10, 2015 Share Posted February 10, 2015 I use the module for a german page without multi language support. If I remember right you could do it with the Languagefields which processwire offers. If you need images or repeater or something else just name it with the ending of your language... e.g. if your shortname for english is en the you can name it myImage_en. Hope this will be help for you. Link to comment Share on other sites More sharing options...
Juergen Posted February 10, 2015 Share Posted February 10, 2015 hello Henning, as I understand you correct: you mean to create more than one instance of the pdf creation button depending on the language? Mmmhh, I will try this tomorrow but this could be a possible solution. It has to create a pdf file for each language - at the moment only on pdf-file is created (independent of the language). Best regards jürgen Link to comment Share on other sites More sharing options...
Wanze Posted February 10, 2015 Author Share Posted February 10, 2015 (edited) Hi Juergen, I'm the maintainer of the module. You could solve it by hooking after this method and return a PDF filename that depends on the language of the current user: https://github.com/wanze/Pages2Pdf/blob/master/Pages2Pdf.module#L454 I could make this method hookable for you. But I think supporting multilang would be a great feature for the module, I might need this myself soon. I'll find some time this weekend to implement it. My approach would be to create a new configuration option where you can select for what languages the PDFs are generated. When requesting a download, the PDF in the language of the current user is served. Cheers Edit: Could you post module related questions in the official module thread? Thanks. I'll try to merge them Edited February 10, 2015 by Wanze 5 Link to comment Share on other sites More sharing options...
Juergen Posted February 11, 2015 Share Posted February 11, 2015 Hello Stefan, thanks for your contribution (and the awesome module too). Yes it would be great to get the possibility of multilanguage support. At the moment I dont need this function immediately. I am not very familiar with hooks in processwire so I will wait until an update Next time I will post it under the right section, I`ll swear Thanks and best regards Jürgen Link to comment Share on other sites More sharing options...
Wanze Posted February 15, 2015 Author Share Posted February 15, 2015 Hi, I have implemented the feature and it's available in the dev branch: https://github.com/wanze/Pages2Pdf/tree/dev If anyone has time to test it out, please do so and report any issues back here. I will merge it into the master branch after some more testing How does it work? First, you need to enable multilanguage support in the module configuration. If enabled, the module creates a PDF in the language of the current user. The same is true when downloading a PDF. If the PDFs are pre-generated when saving pages in the admin, a PDF for each language is created. The language name is appended to the PDF filename in order to distinguish between files of different languages. In addition, if the module "LanguageSupportPageNames" is installed, the local page name is used for the filename. At the same time I added the newest version of mPDF to the module WirePDF. As always, please check that your PDFs are still rendered correctly after updating! Good night to everyone from Switzerland 6 Link to comment Share on other sites More sharing options...
Juergen Posted February 16, 2015 Share Posted February 16, 2015 Stefan, this is awesome. I have updated the module and at the moment I have not detected any problems. I am still testing it further more. Thanks so much!!!! Link to comment Share on other sites More sharing options...
Wanze Posted March 3, 2015 Author Share Posted March 3, 2015 Thanks for your feedback Jürgen! I've tested myself and didn't find any bugs, so i merged into master. Meaning that v. 1.1.2 is now official As described two posts above, this version adds support for multilanguage PDF files. Please make sure that your PDF files are still generated correctly before you update on a live site! Cheers 2 Link to comment Share on other sites More sharing options...
Peter Knight Posted March 23, 2015 Share Posted March 23, 2015 Wazne - I was trying Pages2PDF for the first time after recommendations from the guys and was getting an error as follows. Error: Call to a member function get() on a non-object (line 453 of /var/www/vhosts/pdf-tester.com/httpdocs/site/modules/WirePDF/Pages2Pdf.module)This error message was shown because you are logged in as a Superuser. Error has been logged. Looking at line 453 of /modules/WirePDF/Pages2PDF/ I see a reference to MultiLanguage Support. If I check the Multilanguage support checkbox in the Module settings, my error disappears and my PDF is working. Link to comment Share on other sites More sharing options...
kixe Posted March 26, 2015 Share Posted March 26, 2015 Hi Wanze,thanks for the module. I use it the first time. While testing in devmode I am getting the following error:Warning: Invalid argument supplied for foreach() in /site/modules/Pages2Pdf/Pages2Pdf.module on line 182 method | called from ----------------------------+------------- Wire->__call( ) | ../Page.php Wire->runHooks( ) | ../Wire.php Pages2Pdf->hookDeletePDF( ) | ../Wire.php After a quick look. Maybe something like this could help. Not tested! (Line 182) // Delete PDF for each language $languages =(wire('modules')->isInstalled('LanguageSupport'))?wire('languages'):array(wire('user')->language); foreach ($languages as $language) { Edit:I should read preceding posts first ... Maybe you made already an update and call determineLanguage() method in hookDeletePDF(). If not you should. Link to comment Share on other sites More sharing options...
Peter Knight Posted March 26, 2015 Share Posted March 26, 2015 Hi Wanze, thanks for the module. I use it the first time. While testing in devmode I am getting the following error: Warning: Invalid argument supplied for foreach() in /site/modules/Pages2Pdf/Pages2Pdf.module on line 182 method | called from ----------------------------+------------- Wire->__call( ) | ../Page.php Wire->runHooks( ) | ../Wire.php Pages2Pdf->hookDeletePDF( ) | ../Wire.php After a quick look. Maybe something like this could help. Not tested! (Line 182) // Delete PDF for each language $languages =(wire('modules')->isInstalled('LanguageSupport'))?wire('languages'):array(wire('user')->language); foreach ($languages as $language) { Edit: I should read preceding posts first ... Maybe you made already an update and call determineLanguage() method in hookDeletePDF(). If not you should. Had something similar. I think you need to enable multi-lingual support even if you're not using it. Link to comment Share on other sites More sharing options...
Wanze Posted March 26, 2015 Author Share Posted March 26, 2015 Hi guys, Thanks for reporting the problems. You're right, the problem is that if language support is not enabled, the langauges API variable is not available. I wasn't aware of that and of course only tested when language support was enabled. I'll push a fix this afternoon! Cheers 2 Link to comment Share on other sites More sharing options...
Wanze Posted March 26, 2015 Author Share Posted March 26, 2015 The bug is fixed with the latest commits, please upgrade the module. Thanks again for finding and posting this here 2 Link to comment Share on other sites More sharing options...
bernhard Posted April 15, 2015 Share Posted April 15, 2015 hey wanze, looks great and could help me a lot if i find time to code some day for what is in my head for a long time ^^ https://github.com/wanze/Pages2Pdf/blob/master/Pages2Pdf.module#L97 shouldn't it check if the user has at least viewing access for the page with the given ID because i think $pages->get(id) via API returns the page independent of its current publishing/hidden state and access? maybe anyone could easyly change the page id and download pdfs of pages he is not allowed to see? 2 Link to comment Share on other sites More sharing options...
Wanze Posted April 15, 2015 Author Share Posted April 15, 2015 Hi BernhardB, Thanks shouldn't it check if the user has at least viewing access for the page with the given ID because i think $pages->get(id) via API returns the page independent of its current publishing/hidden state and access?maybe anyone could easyly change the page id and download pdfs of pages he is not allowed to see? You are right, thanks for mentioning this. I'll add the check! The current system is secured that you must choose the templates allowed to generate PDF files. If a user does change the page ID and the template of the requested page is not allowed to create PDF's, nothing happens. However, if the template can generate PDFs and at the same time has restricted access, then this is a problem. 1 Link to comment Share on other sites More sharing options...
Wanze Posted April 24, 2015 Author Share Posted April 24, 2015 Added a check to make sure the user downloading a PDF has view permission, thanks again Bernhard for finding/suggesting this! https://github.com/wanze/Pages2Pdf/commit/30810213ae939ccc3fc033765570c91c9be47cdd Cheers 3 Link to comment Share on other sites More sharing options...
hheyne Posted May 28, 2015 Share Posted May 28, 2015 It seems like I'm to stupid to change the font. I followed the instructions for mpdf but I can only set default fonts like Helvetica, Times. The given example dejavu also don't work. I have converted an oft-font to ttf and put everything in the right place. Any hints how to change to individual fonts? Link to comment Share on other sites More sharing options...
hheyne Posted June 3, 2015 Share Posted June 3, 2015 OK. I got it. I used the switch in the wirepdf modul configuration and set it from core fonts "c" so "s". Now it works. Link to comment Share on other sites More sharing options...
Wanze Posted June 3, 2015 Author Share Posted June 3, 2015 Thanks for your information hheyne, glad it works! Link to comment Share on other sites More sharing options...
pwFoo Posted June 18, 2015 Share Posted June 18, 2015 Hi Wanze, is it possible to add additional / custom css files instead of change the styles.css file? I know there is a global configuration, but is it possible in template context? Regards Link to comment Share on other sites More sharing options...
Wanze Posted June 18, 2015 Author Share Posted June 18, 2015 Hi pwFoo, It should be possible with an autoload module that hooks before Pages2Pdf::createPDF. Delete the styles.css file in /site/templates/Pages2Pdf folder, so that the module does not add styles from this file Create a new autoload module (or use an existing one) and add the following code into the init method. // Inside an autoload module public function init() { $this->addHookBefore('Pages2Pdf::createPDF', function($event) { $pages2pdf = $event->object; $page = $event->arguments('page'); // Set a custom css file for the template of the page where the PDF is generated $cssFile = wire('config')->paths->templates . 'pages2pdf/' . $page->template . '.css'; $pages2pdf->wirePDF->set('cssFile', $cssFile); }); } I did not test this code, please report if it does work or not work Cheers 1 Link to comment Share on other sites More sharing options...
pwFoo Posted June 21, 2015 Share Posted June 21, 2015 Thanks! At the moment I have no time to test it, but I'll report back then... Make css file a module configuration isn't needed in every use case but would be nice. Any plans to change it? Link to comment Share on other sites More sharing options...
Wanze Posted June 22, 2015 Author Share Posted June 22, 2015 Make css file a module configuration isn't needed in every use case but would be nice. Any plans to change it? What kind of configuration do you have in mind? There is a setting to specify the path to a css file. When it comes down to change the configuration dynamically to have multiple CSS files, it's hard to introduce a config setting that would fit everyone's needs. That's where Pws hooking system is the best solution IMO. Link to comment Share on other sites More sharing options...
pwFoo Posted June 22, 2015 Share Posted June 22, 2015 Ok, should also be fine If I really need this modification I use a hook / autoload module. Thanks for this awesome module. It makes life easier Link to comment Share on other sites More sharing options...
Wanze Posted June 22, 2015 Author Share Posted June 22, 2015 @pwFoo Report back here if you have any issue with the hook. Another possibility would be to prefix your styles with the template and put everything in one CSS file, e.g. .home.style1 { background-color: green; } .contact.style1 { background-color: red; } Link to comment Share on other sites More sharing options...
pwFoo Posted June 24, 2015 Share Posted June 24, 2015 CSS prefix is also a nice way to do it! Thanks! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now