Laden...

*.doc und *.pdf Dateien öffnen

Erstellt von Ghosti vor 16 Jahren Letzter Beitrag vor 14 Jahren 31.127 Views
G
Ghosti Themenstarter:in
150 Beiträge seit 2007
vor 16 Jahren
*.doc und *.pdf Dateien öffnen

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

3.728 Beiträge seit 2005
vor 16 Jahren
WebBrowser-Steuerelement

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.

R
206 Beiträge seit 2007
vor 16 Jahren

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

G
Ghosti Themenstarter:in
150 Beiträge seit 2007
vor 16 Jahren

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

M
28 Beiträge seit 2006
vor 16 Jahren
webbrowser mit Office 2007

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

T
24 Beiträge seit 2007
vor 16 Jahren

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.

M
28 Beiträge seit 2006
vor 16 Jahren

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

W
8 Beiträge seit 2008
vor 15 Jahren

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

M
28 Beiträge seit 2006
vor 15 Jahren

Hallo,

was meinst du mit geladen und angezeigt?

Anzeigen kannst du ein pdf-Dokument mit dem webBrowser Control im Visual Studio.

Markus

W
8 Beiträge seit 2008
vor 15 Jahren

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.

3.728 Beiträge seit 2005
vor 15 Jahren
Vollständiger Pfad

Hallo Worf,

versuch mal den vollständigen Pfad zur Datei anzugeben (z.B. "c:\test.pdf").

W
8 Beiträge seit 2008
vor 15 Jahren

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();  
    }  
}  

}

T
708 Beiträge seit 2008
vor 15 Jahren

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");
W
8 Beiträge seit 2008
vor 15 Jahren

Funktioniert leider beides nicht, Fenster bleibt leer.

L
770 Beiträge seit 2006
vor 15 Jahren

Bist du dir sicher, dass du im Event "OnError" das Dokument öffnen willst und nicht z.B.: OnLoad?

lg Lion

W
8 Beiträge seit 2008
vor 15 Jahren

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.

W
8 Beiträge seit 2008
vor 15 Jahren

sorry doppelter Post

L
770 Beiträge seit 2006
vor 15 Jahren

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

W
8 Beiträge seit 2008
vor 15 Jahren

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??

X
1.177 Beiträge seit 2006
vor 15 Jahren

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.

L
770 Beiträge seit 2006
vor 15 Jahren

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

W
8 Beiträge seit 2008
vor 15 Jahren

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.

B
39 Beiträge seit 2006
vor 15 Jahren
Erweiterung des Eingang-Problems

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.

U
105 Beiträge seit 2004
vor 15 Jahren

Kannst ja mal nach DSOFramer schauen: http://support.microsoft.com/kb/311765
Ist zwar nicht .NET, geht aber trotzdem prima.

Grüße Tobscher

B
39 Beiträge seit 2006
vor 15 Jahren

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.

M
1 Beiträge seit 2008
vor 14 Jahren

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.

3.728 Beiträge seit 2005
vor 14 Jahren
PDF anzeigen

Hallo mitsch,

vielleicht hilft Dir das hier wieter: Allgemeiner COM-Wrapper für mehr Komfort bei Später Bindung

S
3 Beiträge seit 2009
vor 14 Jahren

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