Html to pdf
Pagina: « vorige 1 2 3 4 5 volgende »
Zet de logging van wkhtmltopdf eens aan met --log-level <level>
Zie ook voor de uitleg ook: https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
Set log level to: none, error, warn or info (default info)
De map verwijzing kan ik helaas niet vinden, wat ik gevonden heb werkt ook niet helaas.
Error lijkt mij het logische.
dit probeer ik.:
wkhtmltopdf --log-level error
Maar schijnbaar is dit niet goed
Toevoeging op 08/09/2018 09:33:45:
Probeer eens van de andere waardes, of probeer eens te kijken of die allerminst zijn versienummer uit kan werpen.
terijl de command promp het wel gaat.
Ga straks nog even verder kijken, jammer dat hier niet iemand is die mee test, dat was stukken makkelijker geweest.
Wat is de exacte melding die je krijgt? En hoe ziet je functie eruit?
1. Het routeren van de error op exec (linux) level.
(overigens zou de tip van Ariën met het $output argument ook moeten werken)
2. Het schrijven van de pdf en de error daar waar het rechtens mag voor userproces www-data zie in de code hieronder /????/. Vervang de vraagtekens door de juiste dir
Code (php)
1
2
3
2
3
exec('/usr/local/bin/wkhtmltopdf --log-level error http://somesite.com /????/outfile.pdf 2>/????/wkhtmltopdf_error.log');
of
exec('/usr/local/bin/wkhtmltopdf --log-level error http://somesite.com /????/outfile.pdf 2>&1');
of
exec('/usr/local/bin/wkhtmltopdf --log-level error http://somesite.com /????/outfile.pdf 2>&1');
Verder kan je nog wel met een single/double quotes probleem geconfronteerd worden zodra je ook nog php variabelen gaat doorgeven.
In je eerdere testcode zit ook een foutje, je plakt een array achter de echo :(
Dit is een werkende oplossing:
Je krijgt overigens de output wel in beeld in jouw test maar dat komt door de echo in:
echo exec('whoami',$output);
de rest van de regel gaat fout :(
Gewijzigd op 08/09/2018 16:41:39 door Aad B
ik krijg bij jou code in de log deze melding te zien in de log file.:
Code (php)
1
2
2
exec('wkhtmltopdf --log-level error http://www.google.nl outfile.pdf 2> wkhtmltopdf_error.log');
Unknown long argument --log-level
Unknown long argument --log-level
@Ariën.:
Ik krijg geen melding, zie bv. wel de pdf maar als je die wil openen krijg je de melding dat hij beschadigd is.
de functie is o.a. al een flinke probeersel om diverse methodes te testen van die html naar pdf.:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if (isset($_POST['button'])) {
exec('wkhtmltopdf http://www.google.com > g2.pdf',$output);
//echo exec("/usr/local/bin/wkhtmltox/bin/wkhtmltopdf http://www.google.com google2.pdf",$output);
exec("/usr/local/bin/wkhtmltox/bin/wkhtmltopdf http://www.google.com > google2.pdf");
exec('wkhtmltopdf http://www.google.nl > file.pdf 2>&1');
echo "Uitvoer: ".$output."<br>";
echo exec('wkhtmltopdf -V');
// echo exec('wkhtmltopdf http://www.google.com > g3.pdf');
exec('wkhtmltopdf --log-level error http://www.google.nl > outfile.pdf 2>&1');
exec('wkhtmltopdf --log-level error http://www.google.nl outfile.pdf 2> wkhtmltopdf_error.log');
//echo exec('uptime');
}
?>
<form action="" method="post">
<button type="submit" name="button">Run pdf maker</button>
</form>
if (isset($_POST['button'])) {
exec('wkhtmltopdf http://www.google.com > g2.pdf',$output);
//echo exec("/usr/local/bin/wkhtmltox/bin/wkhtmltopdf http://www.google.com google2.pdf",$output);
exec("/usr/local/bin/wkhtmltox/bin/wkhtmltopdf http://www.google.com > google2.pdf");
exec('wkhtmltopdf http://www.google.nl > file.pdf 2>&1');
echo "Uitvoer: ".$output."<br>";
echo exec('wkhtmltopdf -V');
// echo exec('wkhtmltopdf http://www.google.com > g3.pdf');
exec('wkhtmltopdf --log-level error http://www.google.nl > outfile.pdf 2>&1');
exec('wkhtmltopdf --log-level error http://www.google.nl outfile.pdf 2> wkhtmltopdf_error.log');
//echo exec('uptime');
}
?>
<form action="" method="post">
<button type="submit" name="button">Run pdf maker</button>
</form>
Waar schrijf je de pdf? Zijn de rechten daar correct?
De eerste > moet in ieder geval weg, dat klopt niet met de syntax van wkhtmltopdf
Gewijzigd op 08/09/2018 17:12:24 door Aad B
De rechten staan in mijn ogen goed
Ik heb die error regel eens aangepast op jullie advies nar het volgende in mijn php test pagina.:
Code (php)
1
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.:
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.
Toevoeging op 08/09/2018 17:42:09:
[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 .:
Door nu in de php code dit te plaatsen.:
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.
Toevoeging op 08/09/2018 18:02:39:
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?
Gewijzigd op 08/09/2018 17:42:43 door Pascal Schuffelers
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.
Gewijzigd op 08/09/2018 18:36:08 door - Ariën -
Tja anders laat ik het zo, het doet nu wat hij moet doen :D
Hier ook nog een andere uitwerking met xvfb
https://github.com/JazzCore/python-pdfkit/wiki/Using-wkhtmltopdf-without-X-server
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.:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<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>
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.
Gewijzigd op 09/09/2018 13:02:13 door - Ariën -
Hulp hoe zet ik dat dan in ajax?
https://www.w3schools.com/xml/ajax_intro.asp
https://www.w3schools.com/jquery/jquery_ajax_intro.asp
Gewijzigd op 09/09/2018 21:01:44 door - Ariën -
Code (php)
1
2
3
4
2
3
4
<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>
$(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 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. :-)
Gewijzigd op 09/09/2018 21:14:11 door - Ariën -