Announcement

Collapse
No announcement yet.

Byte()/BLOB pdf viewer

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Byte()/BLOB pdf viewer

    Hallo zusammen,

    ich habe PDF Dateien in einer Datenbank in einem BLOB Feld gespeichert. Diese Dateien möchte ich nun innerhalb meiner Anwendung anzeigen lassen ohne diese vorher auf der Festplatte speichern zu müssen.

    Ich habe mir gedacht, das die einfachste Möglichkeit wäre, die Datei im WebBrowser Steuerelement anzeigen zu lassen. Habe ich einen kompletten Pfad unter dem ich die Datei temporär abgelegt habe geht das einwandfrei.
    Weise ich aber als DocumentStream mein Byte Array zu bekomme ich einen Berg von Hieroglyphen. Der DocumentType ist NOTHING, was mich nicht wundert. Blöd ist nur, das man ihn nicht zuweisen kann. Sonst könnte ich ihm ja sagen, das das ein PDF ist was er da gerade anzeigt.

    Ich habe auch schon im Internet nach einer kostenlosen Bibliothek gesucht oder nach einem anderen Steuerelement, welches ich verwenden kann. Aber leider keine Change.

    Vielen Dank schonmal für die Hilfe

    Gruß

    Jens

  • #2
    Hallo Jens,

    es gibt beim WebBrowser-Control leider keine Möglichkeit den MIME-Typ (oder Content-Type) zu setzen. Deshalb erscheinen auch die "Hyroglyphen". Es bleibt also nichts anderes übrig als den Bytestrom als Datei zu speichern und diese im WebBrowser-Control ber Navigate zu laden.

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      "Einfach" einen kleinen Webserver ins eigene Programm integrieren und dann das File zum Webbrowser-Control stream. Dort ist dann wieder schön der Content-Type setzbar.

      Comment


      • #4
        Hallo,

        wenn ein PDF über einen eingebauten Webserver an das Control gestreamt wird erstellt das Control die temp. Datei um sie dann im PDF-Plugin (ActiveX-Kompente) darzustellen.
        Deshalb kann auch die temp. Datei direkt erstellt werden (Dateiname zB über GUID) und anschließend gelöscht.

        @Bernhard: Kannst du bitte ein Beispiel liefern?

        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Hallo,

          danke für die Hinweise. Klappt auch jetzt soweit alles. Ich hab mir nur noch zusätzlich überlegt, das ich die Dateien dann beim Beenden des Programms löschen will. Hier bekomme ich aber immer eine IO.Exception die mir sagt das die Datei bereits von einem anderen Programm verwendet wird. Nämlich von meinem Webbrowser. Wie kann ich denn die PDF vorher schließen oder den Webbrowser beenden, das ich die Datei im Anschluss löschen kann?

          Danke

          Gruß

          Jens

          Comment


          • #6
            Hallo Jens,

            das ist ein lästiges Problem - ich habs einfach so gelöst indem der Thread eine Zeit lang warten -> dann gehts. Vermutlich wird die Ressource (also die PDF-Datei) von der ActiveX-Komponente (die der Browser verwendet) nicht sofort freigegeben.

            [highlight=c#]
            private void frmWebBrowser_FormClosing(object sender, FormClosingEventArgs e)
            {
            // Da der Webbrowser ressourcenintensiv ist muss Dispose()
            // aufgerufen werden:
            browser.Dispose();

            // Eigenwürdiges Verhalten, aber nur so kann die temp. Datei
            // gelöscht werden:
            browser = null;
            System.Threading.Thread.Sleep(100);
            try
            {
            File.Delete(Url);
            }
            catch
            {
            }
            }
            [/highlight]

            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              sehr gut! Vielen Dank für die Hilfe, es hat funktioniert.

              Gruß

              Jens

              Comment

              Working...
              X