Html to pdf

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4 5 volgende »

Pascal Schuffelers

Pascal Schuffelers

09/09/2018 21:14:44
Quote Anchor link
Beetje hulp om op weg te komen misschien?
 
PHP hulp

PHP hulp

18/07/2019 18:11:32
 
- Ariën -
Beheerder

- Ariën -

09/09/2018 21:18:55
Quote Anchor link
Probeer eerst maar eens wat. De handleiding kent een hoop voorbeelden. :-)
 
Pascal Schuffelers

Pascal Schuffelers

10/09/2018 15:57:17
Quote Anchor link
Ja ja, ik probeer van alles maar kom er niet mee weg , alles laad in het begin met load of je moet er een button bij gebruiken.

Deze code is wat ik nu ben aan het proberen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script type="text/javascript">

 setTimeout(function () { window.print(); }, 500);
        window.onfocus = function () { setTimeout(function () { window.close(); }, 500);
  }
 </script>
<script>
   <script>
$(document).ready(function(){
  window.unload = function(){
     // $.ajax stuff here
    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>


Na het script om de pagina af te sluiten.
Wat ik probeer, hij maakt van de pagina een pdf maar zonder de gegevens die hij inlaad, dus voor afsluiten slaat hij leeg op zonder ingevulde waarde.
Gewijzigd op 10/09/2018 17:31:10 door Pascal Schuffelers
 
- Ariën -
Beheerder

- Ariën -

10/09/2018 17:46:01
Quote Anchor link
Ik denk dat je even goed op een rijtje moet zetten wat je aan het doen bent.

exec() is normaliter een PHP-functie die je nu als een Javascript-functie behandelt? Of is dit nu een JavaScript functie geworden? Zo ja, laat dan even zien wat die functie doet.
En waar is je ajax-functie gebleven? Ik zie enkel op lijn 11 een aanwijzing dat je daar je $.ajax() functie kan plaatsen, maar gebeurt dat ook in je exec()?
 
Pascal Schuffelers

Pascal Schuffelers

10/09/2018 18:01:50
Quote Anchor link
Daarom vraag ik om op weg geholpen te worden omdat ik het gewoon niet snap.
Ik probeer van alles en kom er niet mee uit de voeten.

Rijtje is simpel, voor dat de pagina afgesloten word door de timer, dan een pdf van de pagina maken waar alle gegevens in staan.

Aangezien ik nu het gevoel heb dat ik maar aan het aanmodderen ben om enigszins dat ajax proberen te begrijpen met voorbeelden die google mij toont , maar het niet in mijn pagina wil werken , vraag ik hulp cq op weg te worden geholpen.
Niet met mijn eigen code , dat snap ik , tis jullie regel de mensen aan te sturen een eigen code te proberen , maar tis ook een hulp forum, dus op weg helpen zou toch geen kwaad kunnen?

Als ik een voorbeeld neem.:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
window.onbeforeunload = function(){
    $.ajax({
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        url: '/save-data',
        data: { },
        success: function(result) { },
        async: true // <-- make the call synchronous
      });
}


is Ajax , maar hoe moet ik verder? laat mijn code achterwege, Hoe zeg ik gedag tegen een gebruiker als de pagina sluit? Dat krijg ik nog niet een met die code klaar.

Ik heb nog een andere optie open staan om het toch te krijgen wat ik zou willen, alleen dat vind ik zelf niet prettig om het dan zo te doen.
 
- Ariën -
Beheerder

- Ariën -

10/09/2018 18:09:48
Quote Anchor link
Heel simpel, in het URL-event roep je nu /save-data aan.
Dat is dus het PHP-script wat jouw exec() dus uitvoert. Dan ben je al op een goede weg.

Als je toch jQuery gebruikt voldoet
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$( document ).ready(function() {
  // Handler for .ready() called.
});


of dit ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$(function() {
  // Handler for .ready() called.
});


i.p.v. window.onbeforeunload = function(){..}
 
Pascal Schuffelers

Pascal Schuffelers

10/09/2018 18:26:00
Quote Anchor link
Ja maar ik moet in mijn geval geen url hebben maar een commando, dan gaat dat url geval niet op?
 
- Ariën -
Beheerder

- Ariën -

10/09/2018 18:27:32
Quote Anchor link
Dat zou raar zijn, want AJAX doet een aanvraag naar een document op een webserver.
AJAX kan met JavaScript geen server-commando uitvoeren. Dat moet een server-side script doen.
Gewijzigd op 10/09/2018 18:28:15 door - Ariën -
 
Pascal Schuffelers

Pascal Schuffelers

10/09/2018 18:31:49
Quote Anchor link
Maar bij die ajax , als ik die url zou oproepen worden mijn gegevens toch niet meegenomen, die komen pas als de pagina getoond word.

Als ik naar jquery kijk.
Neem jquery dan als voorbeeld.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>

<html>

<head>
  <title>Hello!</title>
  <script>
 $( document ).ready(function() {
      return "doei";
});
  </script>
</head>

<body>

<?php
echo("Hello, World!");
?>


</body>
</html>


Maar er komt ook geen doei te zien in het begin als ik de pagina laad.
 
- Ariën -
Beheerder

- Ariën -

10/09/2018 18:41:55
Quote Anchor link
Klopt, want return geeft geen output naar het scherm, maar verwerkt het in het geheugen. Kijk eens naar deze snippet, die het hopelijk duidelijk uitlegt, met behulp van het getal pi.: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_state_return_pi
(plain javaScript)

Met jQuery heb je de $.html() functie om een HTML-element te vullen met een bepaalde waarde.

Vergeet trouwens ook niet om je jQuery bibliotheek in te laden, want anders doet jQuery helemaal niks.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
 
Pascal Schuffelers

Pascal Schuffelers

10/09/2018 18:51:35
Quote Anchor link
Als ik dat bekijk en ik bekijk die jquery dan ga ik mij afvragen of dat wel werkt met het geen om voor het auto sluiten een pdf te krijgen met de gegevens erin.

Als ik mij dat zo ga bekijken, kan ik beter gewoon de laatst ingevoerde id in te lezen en dat in de pagina te stoppen en dan op te slaan via die exec op het einde, geen fijne pagina dan, maar daar weet ik van dat het werk, ben straks weer een week kwijt om iets van 3 regels werkend te krijgen.

Ik wil het vanavond cq morgen nog eens proberen, maar wil mij hier niet teveel tijd in gaan spenderen als het zo moeilijk blijkt te zijn.

Bij deze code..
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<html>
    <head>
        <script type="text/javascript">
            var hook = true;
            window.onbeforeunload = function() {
                if (hook) {
                    return "Did you save your stuff?"
                }
            }
            function unhook() {
                hook=false;
            }
        </script>
    </head>
    <body>
        <!-- this will ask for confirmation: -->
        <a href="http://google.com">external link</a>

        <!-- this will go without asking: -->
        <a href="anotherPage.html" onClick="unhook()">un-hooked</a>
    </body>
</html>


Werkt het zodra ik op een link klik, maar zonder die links enz werkt het niet als hij auto moet sluiten.
Gewijzigd op 10/09/2018 18:53:22 door Pascal Schuffelers
 
- Ariën -
Beheerder

- Ariën -

10/09/2018 18:58:37
Quote Anchor link
Het voordeel van AJAX is dat je direct kan zien of een pagina geladen is. En dat asynchroon.... :-)

Je moet dus een PHP-script maken met je exec() en die aanroepen met AJAX.

Ik vraag mij alleen af of het PHP-script uitgevoerd blijft worden totdat het genereren van de PDF klaar is. Voor hetzelfde geldt wordt die exec() apart uitgevoerd, en geeft AJAX aan dat het laden al klaar is, terwijl de conversie nog blijft draaien. Daar kan iemand anders vast wel antwoord op geven. Ik heb nu geen tijd om een hele testcase te bouwen met wkhtmltopdf.

Maar goed, als je in deze materie wilt duiken, dan moet je wel weten wat de verschillen tussen JavaScript en PHP zijn, en hoe dit wordt uitgevoerd.
 
Pascal Schuffelers

Pascal Schuffelers

10/09/2018 21:12:33
Quote Anchor link
Maar ik ben eens aan het lezen, lijk erop wkhtmltopdf vanuit de server kant de pagina benaderd, dus gegevens krijg je niet te zien als je vanaf een client invult naar mijns inziens, dus je zult een pagina moeten maken de vanuit de server de gegevens inlaat en dan pas opslaat.

Waarbij nu een vraag bij mij opkomt, is er een sqli command die gegevens van de hoogste id uit kan lezen?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT *
FROM table
ORDER BY id DESC
LIMIT 1

?
Gewijzigd op 10/09/2018 21:13:43 door Pascal Schuffelers
 
- Ariën -
Beheerder

- Ariën -

10/09/2018 21:44:48
Quote Anchor link
Zoals ik al zei, ik weet niet zeker of het script op de achtergrond wordt uitgevoerd, of tijdens het laden van het PHP-script. Test het eens uit met een flinke PDF die lekker zwaar is. Dan kan je zien of je AJAX-request blijft laden, of direct klaar is.

Om op je vraag te komen.
Ja, die SQL-query voldoet aan je vraag.
 
Pascal Schuffelers

Pascal Schuffelers

11/09/2018 07:11:32
Quote Anchor link
Script word dus inderdaad op de achtergrond via de client opgeroepen.
Als test haal ik alle waarden binnen met die sql van de laatste id met een php pagina.
Op het einde van de pagina doe ik die wkhtmltopdf command en alles word netjes ingeuld getoond in de opgeslagen pdf.
Moet dus wel even alles ombouwen , maar goed als het hiermee dus wel werkt ga ik daar niet moeilijk om doen.

Het enigste wat vreemd is dat hij de images niet met overneemt.
Gewijzigd op 11/09/2018 07:35:27 door Pascal Schuffelers
 
- Ariën -
Beheerder

- Ariën -

11/09/2018 08:53:34
Quote Anchor link
Welke images, van website naar pdf?
 
Pascal Schuffelers

Pascal Schuffelers

11/09/2018 11:24:24
Quote Anchor link
Ja, ik vermoed dat ik in het script van de server die map locatie denk ik moet opgeven ipv de link.
 
- Ariën -
Beheerder

- Ariën -

11/09/2018 12:02:38
Quote Anchor link
Om wat voor plaatjes gaat het op die site? In een background, of uit een img-tag.
 
Pascal Schuffelers

Pascal Schuffelers

12/09/2018 18:46:21
Quote Anchor link
Een img-taq.
Wat me opvalt is dat als ik in mijn pagina de link van de google image doe (link met een ip) dan neemt hij die wel mee, maar interne images niet.

Voorbeeld.:
https://ibb.co/j8nRaU

Google image word getoond, maar onder het intern ip adres zie je een witte balk, hier zou een image moeten komen wat intern op de rpi in de www map zit.
 
- Ariën -
Beheerder

- Ariën -

12/09/2018 18:53:46
Quote Anchor link
Hoe roep je die image aan?
 

Pagina: « vorige 1 2 3 4 5 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.