Martin Lantzsch
Software Entwickler
10. Februar 2012

PDF Viewer mit C# entwickeln

10. Februar 2012 - Geschrieben von Martin - Ein Kommentar

Damit wir das Rad nicht neu erfinden müssen, stellt Adobe mit seinem Acrobat eine DLL bereit, über die man PDF Dokumente direkt in seiner C# Anwendung anzeigen lassen kann. Das ganze greift auf die selbe ActiveX Komponente zurück, wie zum Beispiel die Internet Explorer oder Firefox Erweiterung.

Diese „AcroPDF.dll“ wird folgendermaßen geladen. Im Projektmappen Explorer machen wir einen Recktsklick auf „Verweise“ und wählen „Verweis hinzufügen…“


Dort wählen wir dem „COM“ Tab um das COM Objekt hinzuzufügen

Anschließend klicken wir auf OK und der Verweis wird hinzugefügt (zu finden unter Verweise als „AcroPDFLib“).

Damit es in unserer WinForm eingebettet werden kann, muss es nun noch zur Toolbox hinzugefügt werden. Hierzu machen wir einen Rechtsklick in einem Reiter der Toolbox, in dem wir das Steuerelement haben wollen. Zum Beipsiel „Allgemein“ und wählen „Elemente auswählen…“

Nun wählen wir den Tab „COM-Steuerelemente“ und suchen dort den „Adobe PDF Reader“. Haken setzen und OK klicken.

Nun das neue Steuerelement von der Toolbox in die Form ziehen.

Zum Code fügen wir folgendes using hinzu, um die Acrobat Klasse zu laden:

using AxAcroPDFLib;

Der Einfachkeit halber laden wir beim starten des Programms (also im Konstruktur nach dem Initialisieren der Komponenten) einfach mal eine Beispiel PDF Datei:

public Form1()
{
    InitializeComponent();
    axAcroPDF1.LoadFile("Y:/Ablage/Test.pdf");
}

Damit der Reader auch wieder ordentlich geschlossen wird und nicht nach beenden des Programms noch ewig im Speicher rumdümpelt, erweitern wir den Destruktor:

~ Form1()
{
    axAcroPDF1.Dispose();
}

Das wären die Basics, alles weitere kann man entweder im Acrobat SDK nachschlagen oder IntelliSense bemühen.

13. Oktober 2011

Firefox PDF Upload falscher Mime Type

13. Oktober 2011 - Geschrieben von Martin - 3 Kommentare

Heute hatten wir das Problem, das beim Kunden keine PDFs auf den Server hochgeladen werden konnten. Es hat sich herausgestellt, das ein aktueller Firefox verwendet wurde, aber auf dem Windows PC kein Adobe Reader installiert war. Das hatte zu folge, das der Firefox nichts mit der .pdf Datei anzufangen wusste und sendete einfach mal den Mime Type

application/octet-stream

anstatt

application/pdf

Es ist zwar nachvollziehbar, das der Firefox sagt er kennt diese Datei nicht, aber in allen anderen Browsern hat es funktioniert – einschließlich dem Internet Explorer 6.

Der Upload hat dann übrigens nicht funktioniert, da mittels PHP der Mime Type der Datei erfragt wird und alles was nicht auf „application/pdf“ passt wird weggeworfen.

UPDATE!
Ich habe soeben festgestellt, das Firefox desweiteren folgende Mime Types sendet:

application/download

application/x-download

Kommt also immer auf die Client Konfiguration an…