PDF uit db wordt niet correct gedownload

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Laravel / PHP developer

Functie omschrijving Wij zijn op zoek naar een Medior PHP / Laravel Developer voor een IT-consultancy in de omgeving van Hoofddorp! Ben jij op zoek naar een leuke nieuwe uitdaging binnen een veelzijdige werkomgeving? Lees dan snel verder! Binnen dit bedrijf werk je in een ontwikkelteam, waarin je zeer betrokken bent en meedenkt over softwareoplossingen. Binnen dit Team hou je je bezig met het aanpassen, verbeteren en vernieuwen van de logistieke oplossingen. Je zult je bezig houden met de volgende werkzaamheden: Je gaat aan de hand van de wensen van klanten software ontwikkelen; Je bent bij het gehele proces betrokken;

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor een informele club in omgeving Delft zijn wij op zoek naar versterking. Ben jij op zoek naar een nieuwe uitdaging als Software Programmeur lees dan snel verder! Als ontwikkelaar kom je terecht op een afdeling van 6 medewerkers. Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Er wordt voornamelijk gewerkt met PHP, Java en

Bekijk vacature »

C# Developer

Functie omschrijving Voor een softwarebedrijf in de omgeving van Veghel zijn we op zoek naar een C# developer. Word jij blij van ontwikkelen in C# en .NET? Lees dan snel verder! Jouw werkzaamheden zullen er als volgt uit gaan zien: Door middel van ASP.NET, MVC Framework en C# ga je webshops, websites en webapplicaties ontwikkelen. Je zorgt voor de optimalisatie van bestaande software en de automatisering van bedrijfsprocessen. Op basis van de wensen van de klant ga je samen met je collega's ga je op zoek naar de juiste oplossingen en je gaat dit uitwerken tot een mooi eindproduct. Bedrijfsprofiel

Bekijk vacature »

Java Developer bij een jonge groeiende organisatie

Bedrijfsomschrijving Vind jij het als Java developer ook zo belangrijk dat een bedrijf je de ruimte en tijd geeft voor persoonlijke ontwikkeling? Dan zit je hier helemaal goed. Deze jonge organisatie is opgericht in 2018 en is ondertussen uitgegroeid tot een club van ongeveer 30 medewerkers. Het gaat hier om een echte Java club, die vrijheid en verantwoordelijkheid erg belangrijk vinden. Het bedrijf heeft een informele sfeer en de teams zijn erg hecht met elkaar. Ze delen graag de kennis en ervaringen met anderen, maar vinden andermans mening ook zeer belangrijk. De organisatie zet zich in voor ontwikkeling en besteed

Bekijk vacature »

Front-end PHP Developer

Dit ga je doen Bouwen van de frontend van een nieuwe applicaties; Verbeteren van de user experience; Opstellen van een style guide; Schakelen met collega developers over de te bouwen oplossing; Je speelt een belangrijke rol in het neerzetten van het nieuwe systeem; Werken met o.a. Symfony 6, API Platform, Twig, Javascript, Redis Automatiseren van processen; Koppelen van verschillende functionaliteiten; Unit tests, integration tests, end-to-end tests; In de toekomst ga je nog werken aan andere projecten. Hier ga je werken Voor onze vaste opdrachtgever in de regio Breda zijn wij op zoek naar een Frontend Developer. Het betreft een organisatie

Bekijk vacature »

Java Developer

Functie Wat ga je doen als Java developer? Jij komt terecht binnen een informeel team waarin je verantwoordelijk bent voor de backend systemen voor grote klanten als Ziggo en KPN. Als Medior Java developer werk je in teamverband en soms individueel. Gedurende de werkweek zal je veelvuldig sparren met je collega’s voor een goede implementatie van de software. Ben jij een echte Java developer? Ben je geïnteresseerd in de nieuwste technieken en de laatste ontwikkelingen? Dan ben je hier aan het juiste adres! Eisen Wat wordt er van jou verwacht? • Minimaal HBO/WO denk- en werkniveau; • Analytisch sterk, open

Bekijk vacature »

Front-end Developer

Onze klant is sinds 2 jaar actief als adviseur en bemiddelaar in de verzekeringsmarkt. Sindsdien proberen zij deze slapende markt flink wakker te schudden. Dit willen zij doen door het bouwen van slimme vergelijkers op hun eigen website en die van partners. Het bedrijf wil continu voorop lopen, zodat consumenten eenvoudig de verzekeringen kunnen vinden die het beste bij ze past. Functieomschrijving Als Front-end Developer werk je aan vergelijkingsmodules die consumenten dagelijks gebruiken bij het vergelijken en afsluiten van verzekeringen. Je vindt het leuk om samen te werken met de product owner, bestaande modules te verbeteren en nieuwe vergelijkers "from

Bekijk vacature »

Front-end (Angular) developer - remote werken

Functie Als Front-end (Angular) developer ga je aan de slag met het uitbouwen van hun webapplicatie, als één van de front-end experts ga je samen met collega’s in een devops team werken aan een nieuw front-end voor hun calculatie oplossing. Binnen de calculatiesoftware kunnen meerdere professionals tegelijk samenwerken, 3D calculaties uitvoeren en ook inzien met de benodigde specifieke details. Deze software wordt veel ingezet om projectbeschrijvingen en kosten in kaart te brengen, en tijdens de uitvoering te bewaken. Maar hiernaast liggen er in de toekomst veel meer plannen op het gebied van front-end in de andere applicaties. Genoeg te doen

Bekijk vacature »

.Net ontwikkelaar - Het schoolsysteem verbeteren!

Bedrijfsomschrijving Onze klant is een prettige en kleinschalige organisatie waar hard gewerkt wordt om het onderwijs te verbeteren. Daarom werken ze aan complexe om administratieve, financiële en facilitaire processen te versnellen en te verbeteren. Dit doen ze vanuit een platte organisatie voor klanten die door geheel Nederland verspreid zitten, hier horen vanzelfsprekend een aantal aansprekende HBO scholen en universiteiten toe. Functieomschrijving Je komt terecht in een organisatie waar op dit moment 2 scrumteams werken. Jij zal als .Net developer binnen 1 van deze scrumteams functioneren, iedereen binnen dit team heeft zijn/haar eigen expertise waardoor er met verschillende invalshoeken aan een

Bekijk vacature »

Low-Code Expert/Developer: Power Platform Speciali

Bedrijfsomschrijving Als Low-Code Expert/Developer bij ons innovatieve bedrijf, neem je een cruciale rol op je in de creatie, ondersteuning en implementatie van diverse oplossingen met behulp van het veelzijdige Power Platform. Dit platform omvat Power Apps, Power BI, Power Automate, Power Virtual Agent en Azure Logic Apps. Het Power Platform biedt je de mogelijkheid om klanten te voorzien van naadloze integraties door op maat gemaakte oplossingen te creëren die compatibel zijn met (bijna) alle bestaande software-infrastructuren. Dankzij het uitgebreide scala aan toepassingen, krijg je de kans om als architect en projectleider van je eigen oplossing te fungeren. Dompel jezelf onder

Bekijk vacature »

Fullstack JavaScript developer (ReactJS, NodeJS, T

Functie Het team bestaat momenteel uit ruim 15 collega’s, waarvan ruim de helft in het ontwikkelteam werkzaam is. Er zijn gave plannen om het platform ook te gaan toepassen op bijv. vliegvelden, maar ook internationale groei zit in het verschiet en daarom zijn ze op zoek naar versterking. Als Fullstack JavaScript developer werk je nauw samen met 9 fullstack (Python en .NET) developers. Binnen het team ga jij je toespitsen op het creeren van de optimale toegankelijkheid en user experience. Om dit voor elkaar te krijgen zul je ontwerpen, programmeren, testen en implementeren. Het hele proces dus! Maar ook bijvoorbeeld

Bekijk vacature »

Database Developer

Functieomschrijving Heb jij ongeveer 3 jaar ervaring als Database Developer met MS SQL of een vergelijkbare database? Wil jij werken voor een ambitieuze werkgever in regio Tilburg waar jij volledig de mogelijkheid krijgt jezelf te ontwikkelen? Lees dan snel verder! Hoe ziet jouw takenpakket eruit? Je gaat projecten gedurende het hele proces begeleiden. Je sluit aan bij afspraken met klanten om hun processen helder te krijgen. Vervolgens voer jij het project uit en zorgt dat dit zo goed mogelijk verloopt; Je werkt aan nieuwe softwareoplossingen die de logistieke processen verbeteren of vernieuwen; Je houdt je bezig met het ontwikkelen van

Bekijk vacature »

Back-end Software Developer

Functie omschrijving Ben jij op zoek naar een uitdagende development functie bij een klein gespecialiseerd softwarebedrijf? Wil jij graag hybride werken (combi tussen thuis + kantoor), loop jij warm voor maatwerk software en voel jij je prettig in een informele cultuur? Zoek dan niet verder! Reageer direct! Voor een gewilde werkgever in omgeving Tilburg zoeken wij een back-end software developer met een aantal jaar werkervaring. Je gaat werken voor een klein softwarebedrijf dat gespecialiseerd is in de ontwikkeling van integratiesoftware. Jouw werkzaamheden zien er als volgt uit: In een klein team met 4 ontwikkelaars houd jij je bezig met afwisselende

Bekijk vacature »

Senior Front end developer Digital Agency

Functie Jij als Front end developer komt te werken in een van de 8 multidisciplinaire teams binnen de organisatie. Deze teams werken op basis van Scrum agile in 2 wekelijkse sprints. De grootte van de teams varieert van 9-14 collega’s en bestaan altijd uit één of meerdere project managers en een project manager. Samen met je team werk je aan verschillende projecten voor uiteenlopende klanten zoals grote multinationals tot het kleine mkb. De stack waarmee gewerkt wordt is voornamelijk Javascript, ES6, Es.next, HTML, CSS, React.js en Node.js. Wat deze organisatie onderscheid is dat ze echt langdurige partnerships aangaan met hun

Bekijk vacature »

Web Developer

Bedrijfsomschrijving ENGIE Nederland is onderdeel van de beursgenoteerde ENGIE Groep. ENGIE is actief in 70 landen, met wereldwijd 150.000 medewerkers. Als groep is het de missie om bij te dragen aan de verduurzaming van de wereld. ENGIE Energie biedt energiediensten aan particulieren en grootzakelijk en gaat de uitdagingen van de energietransitie aan door het beschikbaar maken van duurzame energie, het streven de klimaatverandering tot een minimum te beperken, leveringszekerheid te bieden en zorg te dragen voor een verantwoord gebruik van de beschikbare resources. ENGIE Energie investeert daarom in hernieuwbare energiebronnen zoals zon, wind en bio-gas. Functieomschrijving Heb jij veel ervaring

Bekijk vacature »
Marco

Marco

05/10/2009 16:21:00
Quote Anchor link
Met een upload script wordt een pdf bestand in een mysql database toegevoegd. Dit werkt prima. Echter wil ik met onderstaand script de gebruiker het pdf bestand laten downloaden. Opzich werkt alles, behalve het feit dat het bestand niet door Adobe wordt gelezen. Er wordt aangegeven dat het bestand 'damaged' is. Hoe is dit op te lossen?

s.schoolkrant in de query is het PDF bestand in de database.

Enige hulp zou erg welkom zijn. b.v.d.

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
    foreach($schoolkrant as $row) {?>

        
        <h2><?php echo $row['titel']; ?></h2>
        
        <p><a href="?schoolkrant_id=<?php echo $row['schoolkrant_id']; ?>" title="Download deze schoolkrant editie"><img src="<?php echo ADMIN_PATH; ?>schoolkrant/showthumbs.php?image_id=<?php echo $row['image_id']; ?>" alt="<?php echo $row['image_name']; ?>" width="<?php echo $row['thumb_width']; ?>px" height="<?php echo $row['thumb_height']; ?>px" /></a></p>
        
        <?php //echo $row['info']; // $row['info'] is al opgemaakt als paragraph style (<p>) d.m.v. wysiwyg-editor ?>
    <?php
    }
    
    try {

        $db = new PDO('mysql:host=localhost;dbname=xxx', 'xxx', 'xxx');
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
        if(isset($_GET['schoolkrant_id'])) {
        
            $db->beginTransaction();
    
            $schoolkrant_id = $_GET['schoolkrant_id'];
            
            $stmt = $db->prepare("
                SELECT
                    s.schoolkrant_id, s.titel, s.naam, s.type, s.size, s.datum, s.schoolkrant, s.info
                FROM
                    schoolkrant s
                WHERE
                    schoolkrant_id = :schoolkrant_id    
            "
);
            
            $stmt->bindParam(':schoolkrant_id', $schoolkrant_id, PDO::PARAM_INT);
            
            $stmt->execute();
            
            $db->commit();
            
            $array = $stmt->fetchAll();
            
            foreach($array as $row) {
            
                header("Content-Description: Schoolkrant download");
                header("Content-Disposition: attachment; filename=".basename($row['naam']));
                header("Content-Transfer-Encoding: binary");
                header("Expires: 0");
                header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
                header("Content-Length:".$row['size']);
                header("Content-Type:".$row['type']);
                header("Pragma: public");
                
                ob_clean();
                flush();
                readfile($row['schoolkrant']);
                exit();
            
            }
            
        }
        
    }

    
    # catch errors
    catch(PDOException $e) {
    
        if(isset($db)) {
            $db->rollBack();
        }

        
        echo '<pre>';
        echo 'Regelnummer: '.$e->getLine().'<br />';
        echo 'Bestand: '.$e->getFile().'<br />';
        echo 'Foutmelding: '.$e->getMessage().'<br />';
        echo '</pre>';
        
    }

    ?>
Gewijzigd op 01/01/1970 01:00:00 door Marco
 
PHP hulp

PHP hulp

24/11/2024 11:08:13
 
Michael -

Michael -

05/10/2009 16:29:00
Quote Anchor link
Zou je alle code even tussen en willen zetten?
Dan is 't beter leesbaar.
Edit: Waarom open en sluit je php steeds? Je kan ook gewoon je html erin zetten hoor.
Gewijzigd op 01/01/1970 01:00:00 door Michael -
 
Marco

Marco

05/10/2009 17:28:00
Quote Anchor link
Done.

Ja klopt maar deze manier hanteer ik meestal en dan houd ik het liever consistent :)
 
Hipska BE

Hipska BE

05/10/2009 18:18:00
Quote Anchor link
lijn 2 t.e.m. 10 horen er niet uitgevoerd te worden. Deze komen nu ook in je pdf bestand en maakt het dus kapot..

Dit had je al gemerkt wanneer je niet met ob_start(); gewerkt had. (hier ga ik van uit a.d.h.v. lijn 51)

Als je die pdf nu eens zou openen met kladblok of een andere tekst editor zou je dit al gemerkt hebben..
 
Marco

Marco

05/10/2009 22:17:00
Quote Anchor link
@Hipska
Nu heb ik de opmaak en php van elkaar gescheiden maar nog krijg ik het niet voor elkaar om er een pdf van te maken. Sterker nog met de huidige code haal ik een pdf op van 0 kb waar niks in staat.

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
<div class="block news">
    <h1>Schoolkranten</h1>
    
    <?php
    foreach($schoolkrant as $row) {?>

        
        <h2><?php echo $row['titel']; ?></h2>
        
        <p><a href="<?php echo LIB_PATH; ?>schoolkrant/schoolkrant.php?schoolkrant_id=<?php echo $row['schoolkrant_id']; ?>" title="Download deze schoolkrant editie"><img src="<?php echo ADMIN_PATH; ?>schoolkrant/showthumbs.php?image_id=<?php echo $row['image_id']; ?>" alt="<?php echo $row['image_name']; ?>" width="<?php echo $row['thumb_width']; ?>px" height="<?php echo $row['thumb_height']; ?>px" /></a></p>
        
        <?php //echo $row['info']; // $row['info'] is al opgemaakt als een paragraph style (<p>) d.m.v. wysiwyg-editor ?>
    <?php
    }
    ?>

</div>


schoolkrant.php
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
try {

    $db = new PDO('mysql:host=localhost;dbname=xxx', 'xxx', 'xxx');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    if(isset($_GET['schoolkrant_id'])) {
    
        $db->beginTransaction();

        $schoolkrant_id = $_GET['schoolkrant_id'];
        
        $stmt = $db->prepare("
            SELECT
                s.schoolkrant_id, s.titel, s.naam, s.type, s.size, s.datum, s.schoolkrant, s.info
            FROM
                schoolkrant s
            WHERE
                schoolkrant_id = :schoolkrant_id    
        "
);
        
        $stmt->bindParam(':schoolkrant_id', $schoolkrant_id, PDO::PARAM_INT);
        
        $stmt->execute();
        
        $db->commit();
        
        $array = $stmt->fetchAll();
        
        foreach($array as $row) {
        
            header("Content-Description: Schoolkrant download");
            header("Content-Disposition: attachment; filename=".basename($row['naam']));
            header("Content-Transfer-Encoding: binary");
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Content-Length:".$row['size']);
            header("Content-Type:".$row['type']);
            header("Pragma: public");
            
            readfile($row['schoolkrant']);
        
        }
        
    }
    
}


# catch errors
catch(PDOException $e) {

    if(isset($db)) {
        $db->rollBack();
    }

    
    echo '<pre>';
    echo 'Regelnummer: '.$e->getLine().'<br />';
    echo 'Bestand: '.$e->getFile().'<br />';
    echo 'Foutmelding: '.$e->getMessage().'<br />';
    echo '</pre>';
    
}

?>
 
Hipska BE

Hipska BE

05/10/2009 23:20:00
Quote Anchor link
Offtopic: Waarom doe je dit in een transaction? Waarom doe je $stmt->fetchAll? Hoeveel ben je er wel van plan om op te halen?

verder kan je eens var_dump van die $array doen om te zien wat je uberhaut vanuit de DB terug krijgt..
 
Marco

Marco

06/10/2009 20:03:00
Quote Anchor link
@Hipska

Klopt ik had het script even gekopieerd van een bestand waarin ik wel meerdere queries gebruikte en ben vergeten de transactie en commit weg te halen. En je hebt inderdaad gelijk wat betreft fetchAll, dat is niet echt nodig hier. Ik haal nu alleens de s.schoolkrant (blob) op maak gebruik van fetchColumn.

Met de 'var_dump' krijg ik een string terug met de inhoud van het PDF bestand alleen dan in de meest uiteenlopende tekens :)

Kortom ik ben nog niet veel verder. Iemand een suggestie of ervaringen hoe het wel goed te downloaden is? B.v.d.
 



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.