PDF uit db wordt niet correct gedownload

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back-end Programmeur

Functieomschrijving Heb jij kort geleden je HBO ICT in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een ambitieuze werkgever in de regio van Breda zijn wij op zoek naar een Back-end programmeur met affiniteit met C#.NET, SQL en MS Access. Samen met team bestaand uit ware ICT professionals ben je verantwoordelijk voor het bouwen van maatwerk software voor hun klanten. Belangrijk is dat je kennis of ervaring hebt van C#.NET en SQL. Je toont een flexibele en sociale houding naar klanten toe. Je denkt in nieuwe mogelijkheden & gaat graag de uitdaging aan. Bedrijfsprofiel De

Bekijk vacature »

Full stack ontwikkelaar Laravel, Vue.js

Functie Als ontwikkelaar binnen deze organisatie hou jij je voornamelijk met lopende projecten voor de verschillende klanten. Zo bouw je de ene dag aan prijsschifting systemen en de andere dag onderzoek je crawlers en stel je ze zo in dat de data goed binnen komt binnen het systeem. Daarnaast bouw je mee aan dashboards en ben je dus constant bezig met het verbeteren van het platform. Er is een vaste werkwijze, zo werken ze met Trello kaarten en onderverdelen ze deze aan het begin van iedere week onder de developers. Dit wordt door de lead developer gedaan, maar in samenspraak

Bekijk vacature »

C# developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als C# Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the Year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Voor een mooi softwarebedrijf in omgeving Gouda zijn wij op zoek naar een Embedded Software developer. Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij enthousiast en een echte team player? Lees dan snel verder en laat wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot aantal creatieve en ambitieuze ontwikkelaars. Ze

Bekijk vacature »

Medior/Senior Python developer (Django)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en werken ze met pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Er is een kwaliteitsfocus en dan biedt ruimte om verbeteringen echt door te voeren binnen de gehele

Bekijk vacature »

Laravel developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Front-end developer - working on software for arou

Functie They have recently started looking for an experienced Front-end (mobile/app) developer. Because of the short lines within the team, they are also looking for someone who can communicate with the service desk, sales and support for technical questions. You will join their IT team consisting of about 10 colleagues divided over two teams in rooms opposite each other. Half of these are involved in their front-end. You will work together with, among others, the Architect, 1 senior, 1 junior and there is a Team Leader. In terms of technology, they work with a unique tech-stack, particularly because of the

Bekijk vacature »

Medior Front end developer React

Functie Voor deze functie ben ik op zoek naar een enthousiaste front end developer die communicatief vaardig is. Jij wordt onderdeel van een enthousiast jong team dat werkt aan grote websites. Binnen jouw rol ben jij diegene die de vertaling maakt van design naar functionele code en zorg jij voor goede experience op meerdere platformen. Dit doe je natuurlijk door gebruik te maken van Javascript, HTML, CSS en React. Daarnaast wordt er gebruik gemaakt van Webcomponents en verschillende authenticatie tools. Doordat er hier gestreefd wordt naar de beste gebruikerservaringen, wordt het product constant doorontwikkeld. Hierdoor blijven ze voor op de

Bekijk vacature »

.NET developer

Functie As a .NET developer you start in a driven and diverse development team. Your team consists of 16 IT professionals, including 7 software engineers. Because your new employer is internationally active, there are also international IT professionals working in the IT department. As a result, the official language is English. As a team you are responsible for a new Cloud Native product. This product runs entirely in Azure with a Progress Database and various Azure Functions. In addition, this product has a JS front-end, a REST API system and a layer in C # .NET. The idea is therefore

Bekijk vacature »

Software developer - C Sharp

Functie omschrijving Heb jij interesse in het programmeren en ontwikkelen van software? En heb jij enige ervaring met Oracle databases en PL/SQL? Wij zijn voor een leuke opdrachtgever in omgeving Naaldwijk op zoek naar een software ontwikkelaar die graag werkt met C#, JAVA of Oracle. Wij zoeken iemand die breed inzetbaar is en die aan veel verschillende applicaties wilt werken. Als software developer werk je met je collega's samen in een leuk en informeel team aan het (her)ontwerpen van bedrijfssystemen. Je houdt je bezig met het ontwikkelen van REST API's en je onderhoudt applicaties in Oracle PL/SQL en APEX. Vind

Bekijk vacature »

Java Developer (Training And Simulation)

Wat jij doet Je zou onze Java Developer zijn en nauw samenwerken met je Product Owner, Software System Engineer, Scrum Master en andere Developers. Samen draag je bij aan een multidisciplinair en zelf organiserend Agile team. De rol is zeer afwisselend en bestaat uit, maar is zeker niet beperkt tot: de-risk en prototype onbewezen simulatietechnologieën; simulatiekaders ontwikkelen voor gebruik door andere teams; je bent goed in het begrijpen van ingewikkelde ideeën; heeft de mogelijkheid om nauw samen te werken met grote internationale klanten, leveranciers en overheden om onze oplossingen, vastleggingsvereisten, enz. te definiëren en te presenteren. Ben jij het? Wij

Bekijk vacature »

Technical Asset Specialist Substations

TenneT is growing fast to realize its strategic ambitions. We play a leading role in driving the energy transition. We are looking for a passionate Technical Asset Specialist for substations (onshore and offshore) at our location in Arnhem who will contribute to this and that might be you? Your contribution to TenneT We are searching for a motivated and engaged colleague as a technical asset specialist (onshore and offshore) for instrument transformers and surge arresters, with preferably a strong background in the area of insulation coordination. As a specialist for insulation coordination you are responsible for overarching topics regarding insultation

Bekijk vacature »

.NET Developer

Functie De perfecte combinatie tussen techniek en vastgoed. Werk samen met de senior software developer om allerlei software van fluX te verbeteren. Gelukkig voel jij je helemaal thuis in de codewereld van .NET. Dus of je nu bezig bent met het verhogen van de conformiteitscore of het automatiseren van allerlei taxatiemodellen, jij weet precies hoe je de doelstellingen realiseert. En dat terwijl je ook samenwerkt met een extern ontwikkelteam. Waar dit team bepaalde softwaresystemen ontwikkelen, richt jij je vooral op onze Nederlands georiënteerde producten en alle wetgeving die daarbij komt kijken. Voor minimaal 32 uur per week verrijk jij onze

Bekijk vacature »

Traineeship Front-end developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

Bekijk vacature »

Junior .NET developer

Functie Jij hebt natuurlijk net jouw Bachelor op zak en gaat nu voor het eerst aan de slag bij een werkgever als junior .NET ontwikkelaar. Waarschijnlijk lijkt het jou spannend om ineens aan de slag te gaan bij klanten in de consultancy. Maak je niet druk, jij komt hier terecht in een warm bad en wordt totaal niet in het diepe gegooid. Zodra jij hier begint wordt jij gekoppeld aan een persoonlijke manager met een persoonlijk ontwikkelplan. Jij krijgt een scala aan trainingen, denk aan trainingen ten behoeve van het opdoen van zelf kennis en gedragscompetenties, maar ook trainingen voor

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

27/05/2026 04:53: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.