Abgeteilt von Adobe Reader ActiveX ohne Interop-Verweis versionsunabhängig in Windows.Forms hosten
Hallo,
Ich stehe kurz vor der Verzweiflung...
Ich brauche die Funktionalität, in meinem Programm PDF's auf einer bestimmten Seite anzeigen zu können (mir wär's eigentlich auch schon egal, wenn dazu der Reader aufgehen würd, nur dem krieg ich irgendwie die Seitenzahl nicht übergeben 😦)
Zunächst habe ich die COM-Komponente vom AdobeReader verwendet... das hat auch soweit ganz gut funktioniert, allerdings nur an meinem Rechner. An den beiden anderen, an denen ich es probiert habe, waren leicht andere Unterversionen vom Adobe Reader (insgesamt Version 8) installiert, ich habe das Versagen also darauf zurückgeführt.
Deshalb fand ich, dass dieser Beitrag hier ziemlich gut klingt... es funktioniert aber wieder nur bei mir - da genauso wie die direkt verwendete COM-Komponente...
Auf einem der anderen Rechner wird der Adobe einfach überhaupt nicht geladen, die Stelle stürzt mehr oder weniger ab, es befindet sich dort in Zukunft das, was zuletzt dort war (schwer zu beschreiben)
Auf einem anderen bekomme ich die angehängte Fehlermeldung.
Hat irgendjemand eine Idee, was mein Problem ist?
Ich kompiliere schon als 32bit-Version... daran kann's also nimmer liegen...
Mit der COM-Komponente mussten die Adobe-dlls in meinem build-Ordner liegen, das müssen sie nun nicht mehr... also sucht er doch nach den installierten?
Hallo S_teffi,
Ich brauche die Funktionalität, in meinem Programm PDF's auf einer bestimmten Seite anzeigen zu können (mir wär's eigentlich auch schon egal, wenn dazu der Reader aufgehen würd, nur dem krieg ich irgendwie die Seitenzahl nicht übergeben 😦)
So kannst du ein Dokument im Acrobat-Viewer an einer bestimmten Seite öffnen:
acrord32 /A "page=5" "C:\Probe.pdf"
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
so weit war ich auch schon mal... Aber ich hab es nicht geschafft, einem Prozess die Seitenzahl zu übergeben...
Leider hab ich den Code wegen lang verworfen nicht mehr vorrätig...
edit:
System.Diagnostics.Process.Start(path, "/A \"page=" + seitenzahl + "\"");
So würde ich das mit diesem Link verstehen... Da krieg ich aber immer Seite 1 angezeigt. path und seitenzahl stimmen, da die Öffnung über Rainbirds Control richtig funktioniert (aber halt nur bei mir).
Hm... immer wenn ich die PDF-Suche ausführe, sind hinter im bin-Ordner die Adobe-dlls wieder drin. Kann das von Bedeutung sein?
System.Diagnostics.Process.Start(path, "/A \"page=" + seitenzahl + "\"");
So würde ich das mit diesem Link verstehen...
Genau falsch:
System.Diagnostics.Process.Start("acrord32", "/A \"page=" + seitenzahl + "\" \"" + path + "\"");
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
fein, das geht...
Wobei ich immer noch lieber eine Lösung hätte, mit der ich den Reader integrieren kann, weil ich die Seite zwischendurch wechseln möchte und auch nicht jedes Mal, wenn ein PDF geöffnet werden soll, einen neuen Reader möchte....
trotzdem danke ... bis zur echten Lösung funktioniert das erstmal.
Vielleicht kann man das über einen Umweg mit dem WebBrowser-Control machen.
hm... versteh ich das richtig, dass ich dann quasi "ein Internet Explorer Control" einfügen würde, und weil der ein Plugin für die Anzeige von PDFs hat, kann ich's dann auch darstellen?
Ich bin momentan unter Linux... aber ich werd's mir morgen mal anschaun...
hm... Die Sache ist wohl gelöst, zumindest mit dem LateBoundAdobeReader von Rainbird geht es überall.. das Problem lag nicht am Adobe Reader sondern an den Dateien, die ich versucht habe, zu öffnen... da waren nämlich die Pfade anders (Datei lag aufm USB-Stick, der hat überall nen anderen Laufwerksbuchstaben, der Pfadname kam aber aus einer Datenbank und war überall gleich....)