Announcement

Collapse
No announcement yet.

Anzeige von automatisch mitgelieferten PDFs in Listview- How To???

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

  • Anzeige von automatisch mitgelieferten PDFs in Listview- How To???

    Hallo,

    ich habe mal folgendes bei einer professionellen Software gesehen: Handbücher wurden in einem entspechendem Reiter in einer Listview als normale Dateien angezeigt. Analog zum Explorer konnten diese mit Doppelklick geöffnet werden. Soetwas möchte ich auch in meinem aktuellen Projekt implementieren, um Templates laden zu können.

    Dateien mit ListView anzuzeigen bekomme ich hin. Aber wie bekomme ich Dateien als Ressource in die .Exe mit eingepackt und wie sind diese in die Listview zu füllen? Bin in dem Punkt bei Visual Studio noch nicht dahintergestiegen...

    Beste Grüße,
    André

  • #2
    In den Projektoptionen die Resourcen öffnen und die Datei da hinzufügen.
    Über "Properties.Resources.DerNameDerResource" im Code dann darauf zugreifen. Da das kein Standardtyp ist wird das ein byte[] sein. Das Byte Array also in eine Date schreiben (zum Beispiel in einem der Temp Ordner) der Datei eine passende Extension geben und über cmd ausführen damit sich die Standardanwendung für diese Extension öffnet.

    Comment


    • #3
      Danke für die schnelle Antwort.

      Gibt es eine Möglichkeit das "Neuerstellen" der Dateien zu umgehen?

      Comment


      • #4
        Ich wüßte nicht wie man sonst die Daten an einen anderen Prozess zum Anzeigen bekommt. Der Acrobat Reader kann nur aus Dateien anzeigen auch wenn man den in der Anwendung embedden würde. Das es einen alternativen Viewer gibt der das kann bezweifle ich stark. Kann ich aber nicht ausschließen.

        Comment


        • #5
          Warum müssen die auch in die Resource? Sie können doch als normale Dateien mitgeliefert werden. Bsp. wird über einen Installer ein Verzeichnis pdf angelegt. Dort werden die Dateien abgelegt. Zur Anzeige wird das Verzeichnis durchsucht und die PDFs dann in der ListView angezeigt. Dann könenn sie auch einfach im PDFViewer angezeigt werden
          Christian

          Comment


          • #6
            Würde auch ohne (eigene) Zwischenspeicherung gehen. "Einfach" einen kleinen Webserver mitliefern und die PDF aus der Ressource über http-Ausliefern.
            Die frage ist aber ob der Aufwand sich lohnt da u.U. der Reader trotzdem die Datei als Temporärdatei ablegt.

            Comment


            • #7
              Brauchst doch gar keinen Webserver. Kann man nicht einfach auf der Shell (Process.Start()) das PDF aufrufen und der standard PDF reader wird geöffnet? Den Pfad hast Du ja weil Du weisst von wo aus Dein Programm läuft und relativ zu dem Pfad sollten auch irgendwo Deine PDFs liegen.

              Ich habe jetzt mal angenommen dass Du auf einem Rich Client unterwegs bist und jeder seine eigene Installation der Software hat.

              Comment


              • #8
                "Brauchst doch gar keinen Webserver. Kann man nicht einfach auf der Shell (Process.Start()) das PDF aufrufen und der standard PDF reader wird geöffnet? Den Pfad hast Du ja weil Du weisst von wo aus Dein Programm läuft und relativ zu dem Pfad sollten auch irgendwo Deine PDFs liegen."
                -> Wenn sie in einer Resource liegen wird genau das nicht gehen
                Christian

                Comment


                • #9
                  Deswegen würde ich sie auch nicht in eine Resource legen. Zusätzlich könnte man die Resource noch auf der Festplatte ablegen und sie von dort ausführen. Alternativ könnt man auch schauen ob der Adobe Reader über COM verfügbar ist und ihn direkt ins UI einbinden. Ich weiss aber auch nicht ob der PDFs direkt aus dem Speicher laden kann oder nur über Dateien.

                  Comment


                  • #10
                    Originally posted by fanderlf View Post
                    Alternativ könnt man auch schauen ob der Adobe Reader über COM verfügbar ist und ihn direkt ins UI einbinden.
                    Und damit einer der schlechtesten Programmierten COM-Schnittellen ins Haus holen? Adobe "garantiert" die Funktionsfähigkeit nur über den Browser. Eine direkte Verwendung der COM-Schnittstelle wird nicht unterstützt und es ist Zufall wenn es klappt und nicht durch API-Änderungen von Adobe mit der nächsten Version wieder kaputt gemacht wird.

                    Comment


                    • #11
                      Originally posted by Bernhard Geyer View Post
                      Und damit einer der schlechtesten Programmierten COM-Schnittellen ins Haus holen? Adobe "garantiert" die Funktionsfähigkeit nur über den Browser. Eine direkte Verwendung der COM-Schnittstelle wird nicht unterstützt und es ist Zufall wenn es klappt und nicht durch API-Änderungen von Adobe mit der nächsten Version wieder kaputt gemacht wird.
                      Hui das klingt nicht gut Meine Erfahrung damit ist auch schon eine ganze Zeit her. Ansonsten kann man das File auch immer noch auf Disk schreiben und sie per Process.Start mit dem default tool dafür ausführen. Bei größeren Projekten könnte ich mir vielleicht auch das mit integriertem Webserver vorstellen. Klingt jetzt für mich aber nicht nach eben mal schnell bauen.

                      Comment


                      • #12
                        Siehe #3,#4,#5
                        Christian

                        Comment

                        Working...
                        X