PDF Datei aus DB erzeugen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PDF Datei aus DB erzeugen

    Hallo zusammen

    Ich möchte PDF's in einer MSSQL DB ablegen und danach wieder 1:1 ausgeben. Die Dateien sollen heraufgeladen und danach direkt in der DB gespeichert werden. Bei einem späteren Zugriff sollen die PDF's wieder auf das File System geschrieben werden.

    Nun frage ich mich ob es nicht eine einfache Methode gibt dies zu handhaben. Ich möchte nicht mit den fpdf modulen arbeiten. An den Source der PDF Datei kommt man ja mit Implode, da bleibt nur noch das Header Problem.

    Mache ich einen gewöhnlichen implode auf eine PDF Datei und möchte sie danach wieder mit fwrite schreiben, ist die Datei natürlich leer, selbst bei grösserer Dateigrösse als zuvor. Gibts ne Möglichkeit dies relativ simpel zu lösen oder komme ich da nicht an den fpdf Modulen rum?

    Danke und Gruss,
    Cyrill

  • #2
    Re: PDF Datei aus DB erzeugen

    Verstehe ich das richtig, dass die PDFs schon fertig vorliegen, und nur in die DB hoch- und von dort wieder heruntergeladen werden sollen?
    Was willst du dann mit irgendwelchen PDF-Modulen?

    Das funktioniert doch dann genauso, wie jedes andere Einfügen/Auslesen von Binärdaten auch.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Du verstehst es richtig. Das Problem ist, die PDF Datei welche mit folgendem Code erzeugt wird, ist leer. Ich denke das liegt an den fehlenden Header Informationen.

      PHP-Code:
      $inhalt implode("\n",file($ATempPath));  
      $filename "blah.pdf";
      if (!
      $handle fopen($filename'w+')) {
          
      fwrite($handle$inhalt);
          
      fclose($handle);

      Zuletzt geändert von cbi; 24.03.2006, 10:59.

      Kommentar


      • #4
        Original geschrieben von cbi
        PHP-Code:
        $inhalt implode("\n",file($ATempPath)); 
        Was soll das denn?

        Bei einlesen binärer Daten mit sowas wie "\n" zu hantieren, halte ich für groben Unfug.
        Nutze file_get_contents. Diese Funktion ist binary safe, und liest dir gleich den kompletten Dateiinhalt in eine Variable.
        Ich denke das liegt an den fehlenden Header Informationen.
        Einen passenden Content-type Header solltest du natürlich auch noch auslösen, wenn du die Datei an einen Client schicken willst.
        Aber das hast du mit dem Code doch offenbar gar nicht vor?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Danke für den hint. Die Datei wird nicht an den Client gesendet. Sie wird auf das Filesystem geschrieben und von dort aus weiterverwendet.

          Nun lese ich die Daten mit file_get_contents aus. Die Datei wird auch mit fwrite geschrieben, aber ist immernoch leer im Sinne von es wird nichts angezeigt. Die Dateigrösse an und für sich trifft sich in etwa mit derjenigen des Originals.

          Eigentlich wollte ich mit file_put_contents die Datei wieder wegschreiben, dafür muss ich aber noch ein PHP Update auf die 5er Version vornehmen. Ich denke damit sollte es dann gehen, oder sollte es das schon mit fwrite?

          Kommentar


          • #6
            Wozu denn überhaupt das Gehampel mit aus einer Datei einlesen, und wieder in eine andere Speichern?


            Handelt es sich bei $ATempPath etwa um die gerade vom User hochgeladene Datei (bzw. deren Namen)?

            Dann beschäftige dich mit http://www.php.net/manual/de/features.file-upload.php
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Die Daten werden in eine DB gespeichert und von dort wieder ausgelesen. Aber das ist ja nicht das Problem, das Problem liegt beim wieder speichern. Ob die Daten nun zuvor in der DB waren oder nicht spielt ja keine Rolle, deshalb habe ich diesen Part weggelassen.

              Edit:
              Gut, PHP 5 ist installiert und mit file_put_contents funktioniert das ganze einwandfrei.

              Danke für deinen Hinweis.

              Gruss,
              Cyrill
              Zuletzt geändert von cbi; 24.03.2006, 12:31.

              Kommentar


              • #8
                Zu früh gefreut. Nun habe ich zwar alles was ich brauche, doch jetzt gibt es doch Probleme beim schreiben in die Datenbank. Wie schreibt ihr solchen Source Code in die Datenbank? Dort drin kommen alle Hochkommatas vor, so dass PHP natürlich eine Fehlermeldung ausgibt.

                PHP-Code:
                $sql    "INSERT INTO tblAnhang (fk_VID, ABeschreibung, ADaten) VALUES ('$VID', '$ADesc', '$inhalt')"

                Kommentar


                • #9
                  kannst du das mit addslashes vielleicht??

                  Kommentar


                  • #10
                    Ich habe es schon mit addslashes versucht, ausser einer anderen Fehlermeldung ist auch nicht viel zu wollen. Primär ist das zwar meistens gut, aber in diesem Falle hat es mich noch nicht weitergebracht. Gibt es keine Möglichkeit die variable als binär zu deklarieren? Das Problem liegt definitiv bei PHP, welches nicht damit umgehen kann. Ersetze ich die Hochkommas via str_replace, so wird der Text zwar eingetragen, doch der Zeichensatz wechselt ins chinesische.


                    mit addslashes();
                    PHP-Code:
                    Warningmssql_query() [function.mssql-query]: message
                    Zeile 3Falsche Syntax in der Nähe von '_'. (severity 15in
                    C
                    :\Programme\xampp\htdocs\app_appendix_save.php on line 22

                    Warning
                    mssql_query() [function.mssql-query]: messageBezeichner
                    (beginnend mit 'yð[³%x˜Ï‡é,v𘠽¦ö¸†œ¨ªÎVÈÍÛ‡xêä´íC 
                    ûúÇöÎ9äGv÷/˜¼ž2êí8æÌŒx4PÚÊ{®Ðæotœ–JßqN™ôfKL¾«ÏpÜÀZxÞ õ“Ðtf#øIwé”ÄA¿Ï@¿G`#¤´Còu'
                    ist zu lang
                    Die 
                    Maximallänge beträgt 128. (severity 15in C:\Programme\xampp\htdocs\app_appendix_save.php on line 22 
                    ohne addslashes();
                    PHP-Code:
                    Warningmssql_query() [function.mssql-query]: messageZeile 3:
                    Falsche Syntax in der Nähe von '_'. (severity 15in
                    C
                    :\Programme\xampp\htdocs\app_appendix_save.php on line 22 

                    Edit:
                    Habe die Meldungen mit Umbrüchen versehen, waren zu lang.
                    Zuletzt geändert von cbi; 24.03.2006, 14:38.

                    Kommentar

                    Lädt...
                    X