Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[gelöst] PDF vom Stream im WebBrowser-Control anzeigen?
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 914
Herkunft: Germany

Themenstarter:

[gelöst] PDF vom Stream im WebBrowser-Control anzeigen?

beantworten | zitieren | melden

Hallo,

ich erstelle über FastReport.Net ein PDF als MemoryStream.
Meinem WebBroser-Control setzte ich diesen Stream als Propertie DocumentStream.

Mein Problem ist, dass nicht das PDF angezeigt wird, sondern der Text vom PDF,
also quasi sowas hier:
Zitat
%PDF-1.5
%µµµµ
1 0 obj
<</Type/Catalog/Pages 2 0 R/Lang(de-DE) /StructTreeRoot 14 0 R/MarkInfo<</Marked true>>>>
endobj
2 0 obj
<</Type/Pages/Count 1/Kids[ 3 0 R] >>
endobj
3 0 obj
<</Type/Page/Parent 2 0 R/Resources<</XObject<</Image6 6 0 R/Image11 11 0 R>>/Pattern<</P5 5 0 R>>/Font<</F1 7
/Prev 117061/XRefStm 116737>>
startxref
117899
%%EOF

Der Stream startet korrekt mit "%PDF-1.5" und endet korrekt mit "EOF".

Wo muss ich was einstellen, daß korrekt das PDF angezeigt wird?

Grüße

Joe
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Joetempes am .
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 7538
Herkunft: Waidring

beantworten | zitieren | melden

Hallo Joetempes,

den Mime-Type musst du dem WebBrowser noch bekannt geben.

Ich denke aber dass es hierzu keine Eigenschaft/Methode gibt und daher hab ich das byte[]-PDF immer als temp. Datei geschrieben und dieses geladen (und anschließend die temp. Datei gelöscht). Vllt. hab ich auch aber was übersehen.

mfG Gü
Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 914
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

Zitat von gfoidl
den Mime-Type musst du dem WebBrowser noch bekannt geben.
Ok, guck ich mir an...
Zitat von gfoidl
Ich denke aber dass es hierzu keine Eigenschaft/Methode gibt und daher hab ich das byte[]-PDF immer als temp. Datei geschrieben und dieses geladen (und anschließend die temp. Datei gelöscht).

Genau das wollte ich vermeiden...
private Nachricht | Beiträge des Benutzers
Joetempes
myCSharp.de - Member

Avatar #avatar-3309.jpg


Dabei seit:
Beiträge: 914
Herkunft: Germany

Themenstarter:

beantworten | zitieren | melden

Hallo gfoidl,

es geht wohl nur so wie Du es beschrieben hast.
Wie machst du das genau?

Mein Problem ist, das wenn das File geladen ist man es ja nicht löschen kann.
Nun wollte ich ein neues File laden und das alte File löschen.
Doch beim Versuch des Löschens gibt es einen Fehler, das File wird noch verwendet.
Wie Released Du das alte File?

Edit:
Hat sich erledigt: webBrowser1_DocumentCompleted
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Joetempes am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Joetempes,

es sollte reichen, im WebBrowser-Control eine neue Seite zu laden (auf DocumentCompleted warten). Wenn du nicht eine (z.B. leere) Zwischenseite anzeigen willst, während du dieselbe Datei neu schreibst, kannst du dir damit behelfen, dass du zwei Dateien im Wechsel beschreibst, dann kannst du direkt von einem PDF zum nächsten wechseln.

herbivore
private Nachricht | Beiträge des Benutzers
Jabi
myCSharp.de - Member



Dabei seit:
Beiträge: 223

beantworten | zitieren | melden

Hallo,

Ich kämpfe nun schon seit geraumer Zeit, mein PDF ( erstellt via PDFSharp ) welches ich in einen MemoryStream geladen habe im WebBrowser darzustellen.
Es kommt aber immer nur eine Leere Seite ... und ich verzweifle.

Einziger weg was bis jetzt geht => Den MemoryStream vom PDF in ein File zu speichern und dann mit Navigate im Webbrwoser das File öffnen.
Dies möchte ich aber vermeiden da dies eingescannte PDF's sind und zum teil nicht gespeichert werden.


using( MemoryStream ms = new MemoryStream())
                 {
                     // doc.Save = Funktion von PDF Sharp wo das PDF in einen Stream gespeichert wird
                     doc.Save(ms, false);
                     webBrowser1.Navigate("about:blank");
                     webBrowser1.Document.OpenNew(false);
                     ms.Position = 0;
                     webBrowser1.DocumentStream = ms;
                   }

leider bleibt das WebBrowser Control leer
hat dies schon jemand gelöst ?

Grüße Chris
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Jabi,

nachdem bisher keine weitere Antwort kam, erhöht das die nur Wahrscheinlichkeit, dass die bisherigen Aussagen im Thread weiter oben zutreffend sind und es anscheinend keine andere Lösung gibt, als die Daten in eine Datei zu schreiben und diese anzuzeigen.

Sollte doch noch jemand eine direkte Lösung kennen, kann er sie natürlich gerne schreiben.

herbivore
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15702
Herkunft: BW

beantworten | zitieren | melden

Die IE Instanz, die dahinter steckt, benötigt IMMER einen DocumentType, damit es mit dem Stream etwas anfangen kann.
Per default ist dies in .NET immer text/html. Gibst Du dem Stream nun einfach einen PDF Stream gibts eben nur Müll in der Anzeige.
Es ist nicht möglich dies zu ändern. Man müsste schauen, was das webBrowser Control für APIs verwendet und dieses selbst nachbauen.
private Nachricht | Beiträge des Benutzers