Laden...

online PDF in Form anzeigen

Erstellt von makuser vor 14 Jahren Letzter Beitrag vor 14 Jahren 7.193 Views
M
makuser Themenstarter:in
19 Beiträge seit 2009
vor 14 Jahren
online PDF in Form anzeigen

Hallo Gemeinde,
ich habe folgendes Problem. Ich habe eine kleine Tray App erstellt, die für jeden Tag eine andere (außer fr-so) pdf datei anzeigen soll.
Ich finde den Tag so raus:


        private string akt_tag;
        private string anz_tag;
        public string anz_url;


            #region Um aktuellen Tag + URL rauszufinden
            if (DateTime.Today.DayOfWeek == DayOfWeek.Monday)
            {
                akt_tag = "Montag";
                anz_tag = "dienstag";
            }
            if (DateTime.Today.DayOfWeek == DayOfWeek.Tuesday)
            {
                akt_tag = "Dienstag";
                anz_tag = "mittwoch";
            }
            if (DateTime.Today.DayOfWeek == DayOfWeek.Wednesday)
            {
                akt_tag = "Mittwoch";
                anz_tag = "donnerstag";
            }
            if (DateTime.Today.DayOfWeek == DayOfWeek.Thursday)
            {
                akt_tag = "Donnerstag";
                anz_tag = "freitag";
            }
            if (DateTime.Today.DayOfWeek == DayOfWeek.Friday)
            {
                akt_tag = "Freitag";
                anz_tag = "montag";
            }
            if (DateTime.Today.DayOfWeek == DayOfWeek.Saturday)
            {
                akt_tag = "Samstag";
                anz_tag = "montag";
            }
            if (DateTime.Today.DayOfWeek == DayOfWeek.Sunday)
            {
                akt_tag = "Sonntag";
                anz_tag = "montag";
            }
            anz_url = "http://abc.de/" + anz_tag + ".pdf";
            beschr = ("Heute ist: " + akt_tag + ". " + "Angezeigt wird für: " + anz_tag + ". " + "(unter folgender Adresse: " + anz_url + ")");
            #endregion

also kommt bei anz_url für Samstag folgendes raus: "http://abc.de/montag.pdf"
Wie kann ich das ganze in meiner Form anzeigen lassen.

Ich habe momentan folgendes:


            this.axAcroPDF1 = new AxAcroPDFLib.AxAcroPDF();
            ((System.ComponentModel.ISupportInitialize)(this.axAcroPDF1)).BeginInit();
            // 
            // axAcroPDF1
            // 
            this.axAcroPDF1.Enabled = true;
            this.axAcroPDF1.Location = new System.Drawing.Point(3, 16);
            this.axAcroPDF1.Name = "axAcroPDF1";
            this.axAcroPDF1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axAcroPDF1.OcxState")));
            this.axAcroPDF1.Size = new System.Drawing.Size(720, 494);
            this.axAcroPDF1.TabIndex = 0;
            this.axAcroPDF1.LoadFile(anz_url);
            ((System.ComponentModel.ISupportInitialize)(this.axAcroPDF1)).EndInit();

Im debuggermodus kommt jetzt folgender Fehler:

System.TypeInitializationException wurde nicht behandelt.
Message: Der Typeninitialisierer für "meinNamespace.NotifyApp" hat eine Ausnahme verursacht.

Schon mal Danke im Vorraus für Lösungsvorschläge.

MAK

5.742 Beiträge seit 2007
vor 14 Jahren

Hallo makuser,

Message: Der Typeninitialisierer für "meinNamespace.NotifyApp" hat eine Ausnahme verursacht.

Das heißt, das eine Exception im statischen Konstruktor (= Typinitialisierer) von NotifyApp aufgetreten ist.
Darauf hättest du im Übrigen auch selber kommen können: [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen).

Was machst du denn dort?
In den Typinitialisierer braucht man wirklich nur sehr selten etwas zu schreiben.
Längerer Code ist dort sowieso fehl am Platze.

M
makuser Themenstarter:in
19 Beiträge seit 2009
vor 14 Jahren

Wo soll ich denn dann:


this.axAcroPDF1.LoadFile(anz_url);

hinschreiben???

6.911 Beiträge seit 2009
vor 14 Jahren

Hallo,

ich bin mir nicht sicher ob der Adobe Reader eine Url so laden kann - das könnte ein Problem sein.

Daher würde ich das System.Windows.Forms.WebBrowser-Control verwenden und per Navigate(...) zur Url navigieren.

mfG Gü

PS: Anstatt deiner if-Abfragen könntest du auch ein switch verwenden.

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!"

Gelöschter Account
vor 14 Jahren

PS: Anstatt deiner if-Abfragen könntest du auch ein switch verwenden.

weder noch.

nimm lieber das da:

            string todaysDayOfWeek = string.Empty;
            string displayedDayOfWeek = string.Empty;
            DateTime today = DateTime.Today;
            todaysDayOfWeek = DateTime.Today.ToString("dddd", CultureInfo.CurrentCulture);
            displayedDayOfWeek = (int)today.DayOfWeek < 5
                                     ?
                                         today.AddDays(1).ToString("dddd", CultureInfo.CurrentCulture)
                                     :
                                         today.AddDays(7 - (int)today.DayOfWeek).ToString("dddd", CultureInfo.CurrentCulture);

5.742 Beiträge seit 2007
vor 14 Jahren

Wo soll ich denn dann [...] hinschreiben???

Im Typinitialisierer hast du normalerweise keinen Zugriff auf this.

Er sieht (von der Syntax her) wie folgt aus:


public class Foo
{
     //Typinitialisierer
     static Foo()
     {
     }
}

M
makuser Themenstarter:in
19 Beiträge seit 2009
vor 14 Jahren

@JAck30lena:

leider möchte ich aber von mo-do den nächsten tag anzeigen und von fr-so montag anzeigen. Zusätzlich möchte ich aber nicht z.B. "Mitwoch" ausgegeben haben, sondern "mitwoch" also alles klein.

Eigentlich möchte ich ja nur einen ganz bestimmten Text in der PDF anzeigen und es soll auch keine Nav-Bar und die Symbolleiste verfügbar sein.

MAK

Gelöschter Account
vor 14 Jahren

@JAck30lena:

leider möchte ich aber von mo-do den nächsten tag anzeigen und von fr-so montag anzeigen. und was macht denn deiner meinung nach der code?

Zusätzlich möchte ich aber nicht z.B. "Mitwoch" ausgegeben haben, sondern "mitwoch" also alles klein.

schon mal mit string.ToLower() bekanntschaft gemacht?

probier den code doch einfach mal aus.

M
makuser Themenstarter:in
19 Beiträge seit 2009
vor 14 Jahren

das geht aber nich


        private string akt_tag = string.Empty;
        private string anz_tag = string.Empty;


#region Um aktuellen Tag + URL rauszufinden
            DateTime today = DateTime.Today;
            akt_tag = DateTime.Today.ToString("dddd", CultureInfo.CurrentCulture);
            anz_tag = (int)today.DayOfWeek < 5
                                     ?
                                         today.AddDays(1).ToString("dddd", CultureInfo.CurrentCulture)
                                     :
                                         today.AddDays(7 - (int)today.DayOfWeek).ToString("dddd", CultureInfo.CurrentCulture);

            anz_url = "http://www.humboldt.we.th.schule.de.de/" + anz_tag.ToLower + ".pdf";
            beschr = ("Heute ist: " + akt_tag + ". " + "Angezeigt wird für: " + anz_tag + ". " + "(unter folgender Adresse: " + anz_url + ")");
            #endregion

Fehler 1 Der Operator "+" kann nicht auf Operanden vom Typ "string" und "Methodengruppe" angewendet werden. E:\Visual Studio 2008\Projects\Vertretungsplanprogramm\Vertretungsplanprogramm\Anzeige.cs 41 23 Vertretungsplanprogramm

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo makuser,

man sollte Code nicht blind kopieren. Außerdem ist der Fehler trivial. Siehe [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen). Der konkrete Fehler kommt meistens, wenn man die Klammern bei einem Methodenaufruf ohne Parameter vergessen hat. So auch hier. Es ist deine Aufgabe, sowas selbst zu beheben.

herbivore

M
makuser Themenstarter:in
19 Beiträge seit 2009
vor 14 Jahren

Ich habe nur das kopiert, um den akt. tag rauszufinden und den von morgen und so.
das auch nur durch ne aufforderung.

edit: aber ich habe ihn jetzt. is schon peinlich der fehler

M
makuser Themenstarter:in
19 Beiträge seit 2009
vor 14 Jahren

Jetzt habe ich immernoch das Problem, dass ich eine PDF anzeigen möchte, die online ist.
Mit dem browser plugin würde es funktionieren, aber ich kann die ganzen Leisten nich ausblenden.

M
makuser Themenstarter:in
19 Beiträge seit 2009
vor 14 Jahren

was kann ich machen???
gibt es eine Möglichkeit, dass in dem Moment, in dem die Form angezeigt wird, die Datei aus dem Inet geladen wird, und dann angezeigt wird??

L
770 Beiträge seit 2006
vor 14 Jahren

Welche Schaltflächen meinst du ?

Die von Adobe kannst du einfach ausblenden lassen (z.B. F8 für die obere Leiste).
Hier musst du aber aufpassen, ich vermute diese Einstellung gilt nicht nur für eine einzelne Datei.

Sicher kannst du die Datei auch runterladen, aber ich vermute, die Leisten wirst du weiterhin sehen, da dies, wie gesagt, eine Adobe Reader Einstellung ist.

Lion

lg Lion

5.742 Beiträge seit 2007
vor 14 Jahren

gibt es eine Möglichkeit, dass in dem Moment, in dem die Form angezeigt wird, die Datei aus dem Inet geladen wird, und dann angezeigt wird??

Wenn dir das Adobe Steuerelement nicht flexibel genug ist, gibt es auch einige Komponenten von Drittanbietern - die sind dann aber sicherlich nicht gerade billig.

M
makuser Themenstarter:in
19 Beiträge seit 2009
vor 14 Jahren

ok angenommen ich nehme das browserplugin, wie kann ich dann die navbar(linke leiste) ausblenden???
ich könnte ja den key "F8" senden, und damit die obere leiste ausblenden.

MAK

L
770 Beiträge seit 2006
vor 14 Jahren

Die Linke kannst du mit Rechte Maustaste ausblenden (einfach links auf die NavBar rechte Maustaste, dann gibt es den Menüpunkt ausblenden).

Aber wie gesagt, dass sind Programmweite Einstellungen bzw. sollte sich der Benützer selbst überlegen, ob er diese haben möchte oder nicht. Mir kommt z.B. kein Programm auf den Rechner, der mir Einstellungen verändert und ich diese manuell zurückstellen muss.

Einfach mal so was abstellen ohne eine Info oder ähnliches finde ich gar nicht gut.
Oder darf ich dir ein Programm senden, dass dir deine Word-, Outlook- und noch ander Einstellungen verändert? Einfach so? 😃

Lion

lg Lion

M
makuser Themenstarter:in
19 Beiträge seit 2009
vor 14 Jahren

nein.
so is es nich.
ICh habe eine Form.
Die zeigt mir für meine schule den Vertretungsplan für den nächsten tag an.
Ich will nur in der einen Form die leisten ausblenden.
Ich hab sowas schon mal geschrieben (für meine alte Schule), aber da war es mit nem SQL server gelöst. Hier geht das nich.
Es is definitif kein Hackerprog., welches irgendwelche Einstellungen im IE, FF oder so verändert!!!!
Also die Form soll erscheinen, wenn die navbar und so ausgeblendet is.

Danke

MAK

M
makuser Themenstarter:in
19 Beiträge seit 2009
vor 14 Jahren

also...
keiner eine Idee???
man könnte die datei ja temporär runterladen und anzeigen, dann warten bis die Form geschlossen wird, und dann wieder löschen.
Aber solche aktionen würde jedes ANTIVIREN Prog anzeigen, weil es kein richtiges Programm mit gültiger Signatur is.

MAK

L
770 Beiträge seit 2006
vor 14 Jahren

Welches Problem hast du den noch?

Es ist wohl egal, ob du die Datei direkt anzeigst oder runter lädst, das "Problem" mit den verschiedenen Leisten hast du dennoch, egal ob runter geladen oder nicht.

Lion

lg Lion

M
makuser Themenstarter:in
19 Beiträge seit 2009
vor 14 Jahren

doch wenn's lokal is dann kann ich ja

this.PDFVIEW1_oder_so.setNavbar = true

schreiben.

MAK

L
770 Beiträge seit 2006
vor 14 Jahren

Dann such dir ein Control, dass PDFs anzeigen kann und eben diese Eigenschaft unterstützt. 😃

lg Lion