Hallo,
ich hoffe ich hab das richtige Forum für meine frage gewählt 🙂
Ich will mir einen Editor bauen, der nur die beiden Formate doc (word) und pdf öffnen soll und den inhalt in der Form auch richtig dastellt.
Die Gui hab ich soweit fertig, wenn ich in meinem Menü auf öffnen gehe, dann erscheint mein OpenFileDialog indem ich die Dateien auswählen kann.
Was brauch ich jetzt noch alles damit der inhalt einer doc oder pdf datei richtig in der Form angezeigt wird???
danke für eure hilfe
Word- und PDF-Dokumente kannst Du innerhalb des WebBrowser-Steuerelements anzeigen.
Oder Du verwendest für Word die API-Funktion SetParent und bannst das komplette Word-Fenster in ein Panel. Für PDF-Dateien kannst Du alternativ auch das ActiveX-Steuerelement "Adobe PDF Reader" direkt verwenden. Dieses wird mit dem Adobe Reader automatisch mitinstalliert. Einfach zur Toolbox zufügen, auf Dein Formular ziehen und mit
axAcroPDF1.LoadFile(@"c:\test.pdf");
die gewünschte PDF-Datei laden.
Hallo...
Du könntest einfach das WebBrowserControl benutzen.
Dort werden dann *.doc oder *.pdf richtig dargestellt vorrausgesetzt du hast ein Programm installiert welches diese Dateiformate anzeigen kann (Word, Adobe Reader).
Diese werden dann als PlugIns geladen und zeigen deine Datein (nach übergeben der URL) an.
FileInfo fileInfo = new FileInfo(deinPfad);
if (fileInfo.Extension.ToLower() == ".pdf" ||
fileInfo.Extension.ToLower() == ".xls" ||
fileInfo.Extension.ToLower() == ".doc"
)
{
webBrowserPreview.Url = new Uri(fileInfo.FullName);
}
Gruss
Max
Original von Rainbird
Word- und PDF-Dokumente kannst Du innerhalb des WebBrowser-Steuerelements anzeigen.Oder Du verwendest für Word die API-Funktion SetParent und bannst das komplette Word-Fenster in ein Panel. Für PDF-Dateien kannst Du alternativ auch das ActiveX-Steuerelement "Adobe PDF Reader" direkt verwenden. Dieses wird mit dem Adobe Reader automatisch mitinstalliert. Einfach zur Toolbox zufügen, auf Dein Formular ziehen und mit
axAcroPDF1.LoadFile(@"c:\test.pdf");
die gewünschte PDF-Datei laden.
Danke sowas, das hat auch super geklappt.
ich will jetzt noch folgendes realisieren und hab einige Probleme.
Wenn ich jetzt ein PDF-File öffnen möchte ich dort einen Bereich markieren und zu diesem Bereich ein Kommentar schreiben. D.h. ich markiere einen Textabschnitt im File gehe dann oben in mein Menü (Kommentar schreiben), daraufhin soll sich ne Art TextBox (oder ähnliches) öffnen, wo ich dann mein Kommentar eintragen kann.
Wenn ich alle erwünschten Kommentare dann eingetragen habe will ich das ganze z.b. in einem xml-file speichern können.
Falls ich später mal dieses Pdf-File wieder öffne möchte ich das genau an den Stellen an denen ich ein kommentar verfasst habe es dort auch wieder auftaucht.
Ich hoffe ihr könnt mir folgen.
Da ich ja das ganze file in dem Activ X Steuerelemt drin habe, wie kann ich mir den markierten bereich im File auslesen lassen???
Und später natürlich wieder an der gleichen stelle wieder ausgeben lassen, d.h. ich muß das Dokument nach einem bestimmten String durchsuchen und mir dann dort meinen Kommentar z.b. in einer Quickbox oder ähnliches wieder anzeigen lassen.
Hat jemand ein paar tips?? Vorallem wie ich die sachen aus dem Pdf-File auslesen kann und später wieder im file finde? und genau an dieser postion mein Kommentar erscheint?
thx
Hallo!
Ein Problem, dass ich seit der neuen Version (Word 2007...) habe, ist, das wenn ich mittels des Webbrowser-Steuerelements eine .doc, .xls Datei öffnen möchte (OpenFileDialog), diese nicht innerhalb des Webbrowser Steuerelements öffnet, sondern das komplette Word öffnet.
OpenFileDialog fd = new OpenFileDialog();
fd.Title = "Öffnen - Links/Oben";
fd.Filter = "Alle Typen (*.*)|*.*|Microsoft Word (*.doc)|*.doc|Microsoft Excel (*.xls)|*.xls|Adobe pdf (*.pdf)|*.pdf";
fd.ShowDialog();
string filename = fd.FileName;
Uri uri = null;
if (fd.FileName != "")
{
uri = new Uri(filename);
webBrowser2..Url = uri;
}
Vielleicht kann mir da jemand helfen.
Markus
Das WebBrowser-Steuerelement ist von den Filetype Einstellungen des lokalen IEs abhängig. D.h. wenn im IE eingetragen ist, dass Word Dateien mit der registrierten Anwendung (also Word) geöffnet werden sollen, wird das WebBrowser-Steuerelement genauso verfahren.
Danke für die Info!
Die Einstellungen werden im Windows-Explorer gemacht, nicht im Internet Explorer.
So funktioniert es:
Quelle: http://www.pcwelt.de/start/dsl_voip/tipps_tricks/browser/26725/
Der Internet Explorer kann diese Dateien gar nicht selbst öffnen, er benötigt hierfür stets die passende Anwendung, etwa ein Office-Programm oder den Acrobat Reader. Diese Anwendungen stellen das Dokument bereit, der Internet Explorer sorgt lediglich für die Symbolleisten. Nicht alle Dokumente kommen dafür in Frage, allerdings die meisten Office-Dateitypen.
Mit einer gut versteckten Option können Sie steuern, welche Dateitypen der Internet Explorer nicht eingebettet anzeigen soll. Die Einstellung nehmen Sie jedoch nicht im Internet Explorer, sondern im Windows-Explorer vor: Gehen Sie dort auf den Menüpunkt "Extras", danach zu "Ordneroptionen, Dateitypen". In der Liste der registrierten Dateitypen suchen Sie den Typ aus, dessen Verhalten Sie ändern möchten, etwa "DOC". Rufen Sie dann mit einem Klick auf "Erweitert" beziehungsweise "Bearbeiten" den Dialog "Dateityp bearbeiten" auf.Hier steuert die Option "Im selben Fenster durchsuchen", ob der Internet Explorer die Datei im selben Fenster öffnet. Bei einem typischen Windows-Rechner mit installiertem Microsoft Office sind alle geeigneten Dateitypen für die eingebettete Ansicht voreingestellt. Um das zu ändern, entfernen Sie beim gewünschten Dateityp das Häkchen vor "Im selben Fenster durchsuchen", die Änderung ist nach einem Klick auf "OK" sofort wirksam.
Markus
Hallo,
Hab sowas wie das Acrobat Steuerelement schon länger gesucht.
Beschäftige mich erst seit kurzer Zeit mit C#.
Kann mir jemand sagen wie Pdf Dateien nicht nur geladen sondern auch Angezeigt werden?
Wie komme ich an eine Doku zu diesem Steuerelement?
Wie gesagt bin noch neu in der Programmierung und für jede Hilfe Dankbar.
Verwende VSExpress 2008
Hallo,
was meinst du mit geladen und angezeigt?
Anzeigen kannst du ein pdf-Dokument mit dem webBrowser Control im Visual Studio.
Markus
Hallo,
Habe das Acrobatsteuerelement in der Toolbar aktiviert und nun ein Acrobat Steuerelement.
Das soll nun auf die Form gezogen werden. Mit dem Code
axAcroPDF1.LoadFile("test.pdf");
axAcroPDF1.show();
soll die PDF Datei zur Anzeige gebracht werden.
Bei mir startet zwar die Anwendung aber das Dokument wird nicht Angezeigt.
Hallo Worf,
versuch mal den vollständigen Pfad zur Datei anzugeben (z.B. "c:\test.pdf").
habe den vollständigen Pfad eingegeben, hier mal der Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void axAcroPDF1_OnError(object sender, EventArgs e)
{
axAcroPDF1.LoadFile("d:\test.pdf");
axAcroPDF1.Show();
}
}
}
Der Pfad wird so wohl nicht als solches erkannt.
Denn innerhalb von den Anführungszeichen werden Kürzel wie z.B. " \n " als Zeilenumbruch erkannt.
Daher musst du 2 Backslashes nutzen oder ein @ davorsetzen:
axAcroPDF1.LoadFile("d:\\test.pdf");
oder
axAcroPDF1.LoadFile(@"d:\test.pdf");
Bist du dir sicher, dass du im Event "OnError" das Dokument öffnen willst und nicht z.B.: OnLoad?
lg Lion
wenn ich sicher wäre würde ich hier nicht nachfragen.
Habs aber trotzdem mal mit OnLoad probiert, gab halt nen fehler.
ausserdem wird der OnError vorgegeben wenn das Steuerelement auf die Form gezogen wird.
Würde mich schon über ein Codeschnipsel freuen mit dem über das Acrobat Steuerelement eine PDF Dateie geöffnet und Angezeigt werden kann.
Meine Internetsuche war bis jetzt auch erfolglos, finde es schon echt übel wenn Acrobat ein Steuerelement anbietet und mit Infos dazu dermaßen hinterm Berg hält.
Ich finds echt übel, wenn jemand ein Problem hat, eine Fehlermeldung hat, dieser aber nicht postet um den Lösungsweg eventuell zu vereinfachen 🙂
Hast du denn schon getestet, on OnError überhaupt erreicht wird?
Ich glaub nicht, dass man sich immer auf den StandardEvent verlassen sollte bzw. den für alles verwenden sollte 🙂
Wobei ich meinte, du hast das Event OnError vom Control selbst, ich dagegen meine das OnLoad Event von der Form.
lg Lion
lg Lion
Hi Lion1984
Sorry, aber ich bin mal davon ausgegangen das es nachdem ich einige Infos bekommen hatte, so geht wie ich es gemacht habe.
Ich möchte es auch nicht in einem OnLoad Event anwenden. Der grundsätzliche Aufruf interessiert mich halt.
Wie wäre es mit nem Codeschnipsel mit dem auch ein Anfänger was machen kann??
Huhu,
Prinzipiell schaut Dein Code in Ordnung aus - nur was Lion1984 sagte solltest Du nochmals lesen.
Bleibt denn der Debugger in Deiner Routine stehen, wenn Du da einen Haltepunkt machst?
🙂
Xynratron
Herr, schmeiss Hirn vom Himmel - Autsch!
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
Hi,
Wie Xynratron schrieb, dein Code ist richtig, ich verwende keinen anderen.
Und wie gesagt, die Fehlermeldung wäre durch auch interessant bzw. eben prüfen, ob die Methode erreicht bzw. der Event ausgelsöt wird.
Und wie gesagt, ich glaub noch immer dass du im falschen Event bist (OnError).
Mach dir mal ein Button und im Click Event deine 2 Codezeilen.
lg Lion
lg Lion
Hallo Ihr beiden,
Hab das ganze mal im Einzelschrittmodus laufen lassen und da hängt sich das Programm nach öffnen der Form weg, kein weiterer schritt mehr möglich.
Form kann nur noch geschlossen werden.
Hab dann mal den Tipp mit dem Button ausprobiert und Bingo.
Das mit der Fehlermeldung kann ich nicht mehr nachvollziehen, hab den Code wohl an einer falschen Stelle eingesetzt.
Auf alle fälle vielen Dank für eure Tipps.
Hallo!
Vor kurzem stand ich ebenfalls vor dem Problem, den dieser Thread zum Inhalt hat, und konnte es nur teilweise lösen.
In einem WebBrowser-Fenster sollen Word-Docs angezeigt werden. Das klappt teilweise. Ein kleines Dokument (< 3KB) wurde erfolgreich im Fenster angezeigt, weitere (9 und 60 KB) landeten in einem neuen Fenster. Habe ich noch weitergehenden Einfluss darauf, dass die Dokumente im WebBrowser-Fenster angezeigt werden? Muss ich irgendwas bei den Dokumenten beachten? Ist das vielleicht versionsabhängig?
Ein weiteres Problem ist die Aktualisierung. Ich habe Word-Docs in einer Datenbank und speichere sie lokal in einem Temp-Verzeichnis unter dem selben Namen, damit der Rechner nicht zugemüllt wird und weil stets nur ein Dokument angezeigt wird. Wenn ich den Browser frisch anzeige funktioniert das, wechsel ich aber das Dokument, ( dass ja unter dem gleichen Namen an der gleichen Stelle steht, ) dann bleibt das Browser-Fenster leer. Wie kann ich ihm sagen, dass er darauf reagieren soll?
Ich muss dazu sagen, dass ich die WebBrowser-Komponente stark in ihren Funktionalitäten eingeschränkt habe, da sie die Dokumente lediglich als Preview darstellen soll, ohne irgendwelche weiteren Fähigkeiten zu präsentieren ( und der Anwender nicht zuviel rumspielen kann). Liegt hierin vielleicht der Fehler (, was ich mir nur nicht so recht vorstellen kann)?
Ich bin für jede/-n Hilfe/Idee/Ansatz dankbar.
gegrüßt!
Wer beim Gewächshaus sitze, werfe nie den ersten Elefanten.
Kannst ja mal nach DSOFramer schauen: http://support.microsoft.com/kb/311765
Ist zwar nicht .NET, geht aber trotzdem prima.
Grüße Tobscher
Erstmal danke ich für den Tipp.
Ich hab da mal reingelesen und war etwas skeptisch, doch folgender Punkt:
Documents unintentionally opened outside the browser: Internet Explorer uses certain criteria (including a check of an end-user option) to determine whether it attempts to open a document inside or outside the browser. This can be problematic if a development project requires that its documents always open inside the designated frame, because Internet Explorer does not guarantee that any non-HTML file will be opened in-place. überzeugte mich darin, dass die Arbeit mit dem WebBrowser-Control zu unkontrolliert ablaufen könnte, wenn ich doch nur Word-Docs anzeigen lassen möchte.
Ich werd' das Control dann mal heute Abend testen. 👍
gegrüßt!
Wer beim Gewächshaus sitze, werfe nie den ersten Elefanten.
Habe das gleiche Problem wie Worf und der Thread hat mir echtr weitergeholfen. Meine Problem ist nur, dass das pdf nicht angeszeigt wird.
Habe eine Form mit einem button und auf das Click-Event ist der Ladevorgang gesetzt. Quellcode:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
axAcroPDF1.LoadFile("C:\\Users\\m_tscharnutter\\Documents\\Meine Scans\\SB22200001.pdf");
axAcroPDF1.Show();
}
}
}
Der Pfad und der Filename sind richtig.
Das Dokument lädt und der Click-Event funktioniert ohne Fehlermeldung, aber das axAcroPDF1 bleibt leer. Könnt ihr mir weiterhelfen. Ich bin recht neu in C#, deshalb vielleicht die blöde Frage.
Hallo mitsch,
vielleicht hilft Dir das hier wieter: Allgemeiner COM-Wrapper für mehr Komfort bei Später Bindung
Hallo mitsch,
weiß nicht, ob Du Dein Problem schon gelöst hast. Hatte das Gleiche. Mit der Methode Load wurde das Dokument nicht angezeigt.
Habe dann axAcroPDF1.src = "Dateiname" benutzt. Funktioniert bestens.
Grüße Karin