|
Partner
|
|
|
Adobe Reader versionsunabhängig und ohne COM-Verweis hosten
Autor:
Rainbird
|
Sprache:
C#
|
Bewertung:
9.44 (2 votes)
|
Anzahl der Aufrufe:
7424
|
Beschreibung:
Dieses kleine Beispielprojekt zeigt, wie man - mit wenigen Zeilen Code - das ActiveX-Steuerelement des Adobe Readers (früher Acrobat Reader) verwenden kann, ohne einen COM-Verweis ins eigene Projekt einzufügen.
Außerdem funktioniert das mit Verschiedenen Versionen des Adobe Readers! Es spielt keine Rolle, ob man Version 7,8 oder 9 installiert hat.
Wer hat sich noch nicht darüber geärgert, dass jeder Kunde eine andere Reader-Version installiert hat?
Dies ist möglich, da die CLSID der verschiedenen Versionen des ActiveX-Steuerelements trotzdem immer die Selbe ist. Mit der abstrakten Basisklasse System.Windows.Forms.AxHost kann man sehr leicht Wrapper für ActiveX-Steuerelemente schreiben. Man muss nur die CLSID kennen (Wenn man nur die ProgId weiss, kann man in der Registry unter HKEY_CLASSES_ROOT danach suchen und kommt so auch an die CLSID).
Das Beispiel umfasst ein C#-Projekt mit einem Windows.Forms-Formular und einem einfachen Adobe Reader-Wrapper, der Anzeigen, Laden und Drucken kann.
Ein vollständiges Beispiel Projekt gibt´s unter http://www.mycsharp.de/wbb2/thread.php?postid=3568114#post3568114
Abgelegt unter: Acrobat, PDF, Adobe Reader, ActiveX, AcroPDF, Drucken.
|
| C# |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Reflection;
/// <summary>
/// .NET Wrapper für Adobe Reader ActiveX-Steuerelement
/// </summary>
public class AdobeReaderControl : AxHost
{
/// <summary>
/// Hostet das Adobe Reader ActiveX-Steuerelement in Windows.Forms.
/// </summary>
public AdobeReaderControl()
: base("{CA8A9780-280D-11CF-A24D-444553540000}") // CLSID des Adobe Readers (ist bei allen 32-Bit Versionen gleich)
{ }
/// <summary>
/// Lädt eine PDF-Datei.
/// </summary>
/// <param name="path">Pfad</param>
public void LoadFile(string path)
{
// LoadFile-Methode auf dem Adobe Reader aufrufen
this.GetOcx().GetType().InvokeMember("LoadFile", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, this.GetOcx(), new object[1] { path });
}
/// <summary>
/// Druckt die geladene PDF-Datei.
/// </summary>
public void Print()
{
// Print-Methode auf dem Adobe Reader aufrufen
this.GetOcx().GetType().InvokeMember("Print", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, this.GetOcx(), new object[0]);
}
}
|
|
Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)
|
Günther Foidl schrieb am:
04.09.2009 10:51:49
|
|
Diese Snippets könnten für Sie interessant sein:
|
|
|
|
|
|
|
|
|