Ik ben al enkele dagen aan het zoeken of er een mogelijkheid is om via php een pagina naar pdf te krijgen.
Het idee is zo, ik heb het in mijn windows programma toen zo gemaakt, dat als iemand op afdrukken drukt dat de pagina word afgedrukt en dat een copy als pdf cq image in een map word opegslagen.

Nu wil ik dit ook via mijn webpagina maken, dus drukt iemand op afdrukken dat ook de pagina word opgeslagen.
Nu kom ik ook diverse dingen tegen maar ik krijg ze van geen 5 cent werkt.

Is er iemand hier die mij kan helpen hoe dit te krijgen?
En nee heb echt google afgezocht en van alles geprobeerd, dus ik vraag serieuze hulp.

Bvd
Pascal.
De pdf's schrijf ik gewoon in de html map weg.
De rechten staan in mijn ogen goed

sudo chmod -R 777 /var/www/html


Ik heb die error regel eens aangepast op jullie advies nar het volgende in mijn php test pagina.:
exec('/usr/bin/wkhtmltopdf error http://www.google.nl outfile.pdf 2> wkhtmltopdf_error2.log');


Dan lees ik in die log file de volgende melding.:

QXcbConnection: Could not connect to display 


Hier op verder gezocht en het schijnt een of andere service te zijn die op de achtergrond mee moet draaien, echter vind ik niet 1-2-3 hoe ik die zou moeten installeren, ben wel nog aan het zoeken, maar als iemand het eerder weet zie ik uiteraard de hulp graag komen.


[size=xsmall]Toevoeging op 08/09/2018 17:42:09:[/size]

[UPDATE]

Aan de hand van jullie tip dus verder gaan zoeken op die fout melding wat ik net vermeld had.
Wat ik dus aan de hand van die fout melding gedaan heb is het volgende.
Ik heb die xvfb geïnstalleerd met .:
sudo apt-get install xvfb 


Door nu in de php code dit te plaatsen.:
  exec("xvfb-run /usr/bin/wkhtmltopdf http://www.google.com google2.pdf");  

Krijg ik nu mooi een pdf met de pagina van google erin.
[link]https://ibb.co/c43YC9[/link]

Thx aan jullie om mee te denken.

[size=xsmall]Toevoeging op 08/09/2018 18:02:39:[/size]

Alleen een vraagje op een idee van mij.
Omdat het enkele sec duurt voor dat om te zetten, is er via php geen progressbar te zien die de voortgang ervsan kan tonen?
Je zou met ajax wel wat kunnen doen.

Maar ik heb het idee dat wkhtmltopdf ook enige ondersteuning moet bieden hoe ver die al is. Geen idee of dat kan.

Maar een 'oneindig' draaiwieltje is met AJAX geen enkel probleem.
Tja anders laat ik het zo, het doet nu wat hij moet doen :D
Oke thx @Aad B zal die meenemen als ik de server her indeel achteraf.
Ik zit alleen met een klein min puntje.

Ik laad een pagina die briefjes invult aan de hand van gegevens die hij ontvang van te voren wat iemand invuld.
Als hij het ingevuld briefje laat zien krijg je de mogelijk deze af te drukken.
Na afdrukken of annuleren blijft de pagina van die briefjes nog even open en sluit zich van zelf af na x seconde.
Echter op het einde van het briefje weergave voor hij zich afsluit laat ik die opslaan zoals hierboven verholpen is.
Het min puntje is nu dat hij die briefjes opslaat zonder iets ingevuld.

Nu is mijn vraag is er een commando of iets dergelijks die voor het afsluiten alle waarde meeneemt in dat opslaan zodat de opgeslagen waarde wel in die pdf erbij staat?

ik had als test toch eens php in het script gedeelte gezet maar dan slaat hij die waarde alsnog niet mee op.:

<script type="text/javascript">

 setTimeout(function () { window.print(); }, 500);
        window.onfocus = function () { setTimeout(function () { window.close(); }, 500);
  <?php
exec("xvfb-run /usr/bin/wkhtmltopdf http://192.168.0.105/totalbriefjes.php Briefjes/Totalebriefjes_".date('m-d-Y_hia').".pdf 2> Briefjes/wkhtmltopdf_error_".date('m-d-Y_hia').".log" );
?>
 }
 </script>


Deze code staat op het einde van het briefje pagina.
Ik heb ook de php code buiten het script gedaan onder in de pagina, maar dan doet hij hetzelfde.
Je moet dan AJAX gebruiken. Want Javascript heeft geen weet van PHP en daarom wordt je per PHP-Script ook direct uitgevoerd.
Zoiets dan?

<script>
    $(window).unload(function(){exec("xvfb-run /usr/bin/wkhtmltopdf http://192.168.0.105/totalbriefjes.php Briefjes/Totalebriefjes_".date('m-d-Y_hia').".pdf 2> Briefjes/wkhtmltopdf_error_".date('m-d-Y_hia').".log" );
})
</script>


Ik heb totaal geen idee hoe dit exact moet als die commando uitgevoerd moet worden voor hij de pagina afsluit.
Je gebruikt dus de jQuery bibliotheek.
Je moet dus het PHP-script als bestandsnaam aanroepen met de $.ajax() functie. Of via $.get() om het simpel te houden.

$.load() kan ook nog eens. Lees de manual maar eens. :-)

Reageren