www.mikrocontroller.net

Forum: PC-Programmierung Adobe Acrobat: wie öffnet man ein nicht lokales pdf-Dokument


Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus allerseits

Seit mehreren Tagen wühle ich mich durch Guides und Webseiten: habe zwar 
dabei vieles dazugelernt, aber nicht das, was ich wollte.

In einer VisualFoxPro Form will ich mit Hilfe einer OCX eine PDF-Datei, 
die im WEB abgelegt ist, laden und sie dann lokal unter einem anderen 
Namen abspeichern. Und zwar ohne dass ein Dialog-Fenster erscheint.

Lange Zeit versuchte ich das mit der "acroPDF.PDF.1" Klasse, die ja mit 
dem Acrobat Reader geliefert wird, zu lösen. Aber damit geht es nicht. 
Ich kann damit zwar das Remote-Dokument im IE oder in einer beliebigen 
Form anzeigen, aber ohne Dialog gelang es mir nicht, es lokal 
abzuspeichern.

Also habe ich die Trial-Version von "Adobe Acrobat 9 Standard" 
installiert und mich mit der "AcroExch.App" Klasse herumgeplagt. Geht 
auch nur lokal.

Die Idee, die Datei zuerst mit einer Download-Funktion runterzuladen 
greift hier nicht, da die Remote-Site einen download nicht erlaubt.
Keine Ahnung wieso.
cUrl_x = "E:\Data\Vfp\BKS\x.pdf"
cUrl_y = "E:\Data\Vfp\BKS\y.pdf"
cUrl_remote = "http://www.adobe.com/devnet/reader/articles/reader_compatibility/readercomp_pdfrendering.pdf"

FUNCTION Beispiel_0()
  oAdobe = CREATEOBJECT("AcroExch.App")
  oPDDoc = CREATEOBJECT("AcroExch.PDDoc")
*  oAdobe.SHOW()

  oPDDoc.OPEN(cURL_x)       && funktioniert
  oPDDoc.OPEN(cURL_remote)  && funktioniert nicht

  oPDDoc.SAVE(0x01, cURL_y)
  oPDDoc.CLOSE()
  oAdobe.EXIT()
  RELEASE oPDDoc
  RELEASE oAdobe
ENDFUNC


Die AxAcroPDFLib.AxAcroPDF Klasse verfügt zwar über eine Methode 
LoadFile, aber darauf zuzugreifen ist mir nicht gelungen.

Einige Stunden habe ich mich auch mit QuickPdf herumgeschlagen, aber 
auch dort kann man nur lokale Dokumente laden.

Wie würdet Ihr dieses Problem angehen? Dank im voraus.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die beiden Varianten, die funktionieren, greifen auf Dateien zu.
Die dritte aber verwendet eine URL, das ist etwas ganz anderes. Dahinter 
steckt kein Dateisystem (jedenfalls kein sichtbares, auch wenn es auf 
den ersten Blick auf Dateien abbildbar zu sein scheint).
Nahezu alle Programme, die Dateien öffnen können, wissen nichts mit URLs 
anzufangen.

Hier ist ein zweistufiger Lösungsansatz möglich:

Im ersten Schritt musst Du die Datei auf Deinen Rechner übertragen, das 
geht z.b. mit wget oder curl oder sonst einem http-Downloader.

Und dann im zweiten Schritt kannst Du Dein Acrobat-Control diese Datei 
laden lassen.

Autor: Axel Gartner (axelg) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
KDE bzw. Qt haben netzwerktransparente Dateidialoge (egal ob ssh, ftp, 
html oder was auch immer). Qt gibt es auch für Windows, vielleicht 
kannst du dir da etwas rausholen?

Gruß
Axel

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
KDE hat die, das sind diese kio_-Plugins, die andauernd abschmieren :-}

Ich würd auch zu CURL tendieren.

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus t. Firefly schrieb:
> Nahezu alle Programme, die Dateien öffnen können, wissen nichts mit URLs
> anzufangen.
Wenn ich im Acrobat Reader File -> Open eine URL eingebe, so hat das 
Program keine Probleme damit. Ich gehe also davon aus, dass der Acrobat 
zwischen lokaten und remoten Dateien unterscheiden kann.

> Hier ist ein zweistufiger Lösungsansatz möglich:
>
> Im ersten Schritt musst Du die Datei auf Deinen Rechner übertragen, das
> geht z.b. mit wget oder curl oder sonst einem http-Downloader.
>
> Und dann im zweiten Schritt kannst Du Dein Acrobat-Control diese Datei
> laden lassen.

Wie bereits erwaehnt: die Remote-Seite verweigert mir einen direkten 
Download.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mehmet Kendi schrieb:
> Wie bereits erwaehnt: die Remote-Seite verweigert mir einen direkten
> Download.

Dann finde raus, woran der Remote Server das festmacht.
Evtl musst du einen passenden Referer-Header mitsenden oder den 
User-Agent auf "Adobe Acrobat" o.ä. stellen, Sitzungs-Cookie akzeptieren 
und zurücksenden...

Einfach mal mit Wireshark den Adobe Reader beim Download belauschen, und 
das dann genauso machen.

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Εrnst B✶ schrieb:
> Mehmet Kendi schrieb:
>> Wie bereits erwaehnt: die Remote-Seite verweigert mir einen direkten
>> Download.
>
> Dann finde raus, woran der Remote Server das festmacht.

Auf der Remote-Seite laeuft ein Ajax Program und die Verbindung basiert 
auf einem SSL Kanal. Nach Studium der *.js Dateien ist es mir zwar 
gelungen, diese für mich relevante Funktion von meiner Seite her zu 
triggern, aber ich bin nicht so der Hecht im Teich, wenn es um 
web-basierte Applikationen geht.

Das mit Wireshark ist schon eine Ueberlegung wert. Aber ehrlich gesagt 
nur als letzte Notlösung, da ich eh schon seit Tagen mit dem 
Blindenstock herumstochere.

Autor: Gustav (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mehmet Kendi schrieb:
> Auf der Remote-Seite laeuft ein Ajax Program und die Verbindung basiert
> auf einem SSL Kanal. Nach Studium der *.js Dateien ist es mir zwar
> gelungen, diese für mich relevante Funktion von meiner Seite her zu
> triggern, aber ich bin nicht so der Hecht im Teich, wenn es um
> web-basierte Applikationen geht.
>
> Das mit Wireshark ist schon eine Ueberlegung wert. Aber ehrlich gesagt
> nur als letzte Notlösung, da ich eh schon seit Tagen mit dem
> Blindenstock herumstochere.

Wenns HTTPS ist probier mal:

- https://addons.mozilla.org/de/firefox/addon/49856

- https://addons.mozilla.org/de/firefox/addon/1843

- http://www.owasp.org/index.php/Category:OWASP_WebS...

- http://www.owasp.org/index.php/OWASP_WebScarab_NG_Project

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ist https.
Aber ich glaube nicht, dass mein Problem hier liegt.
Ich beherrsche das System soweit, dass ich mich remote einloggen kann, 
alle Queries remote steuern kann etc.

Es ist nur so, dass dieses Remote-System mir die Resultate als pdf 
sendet.
Ich kann diese Pdf's auch empfangen und wo auch immer ich will anzeigen.
Mein Problem ist nur: ich kann es nicht abspeichern.

Und sobald ich auf diese Datei, die ich mit einem Query erstellt habe, 
mit einem Download zugreife, steht in der  heruntergeladenen Datei: "Für 
diesen Zugriff müssen Sie im System sich angemeldet haben".

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Tip von Sven mit cURL hat mir die Augen geöffnet. Als ich die 
Funktionen von cCurl durchging, stutzte ich bei der Erklaerung zu 
HttpDownloadFile: "Downloads a remote file to a local file using the 
HTTP/HTTPS protocol."

Als ich dann meine Download-Funktion kontrollierte, bemerkte ich, dass 
meine selbstgestrickte Funktion ( via wininet.dll ) https nicht 
unterstützte.
Jetzt klappt der Download.

Nochmals danke!

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benutz doch einfach CURL, das gibt es schon ne Weile und die Entwickler 
machen zumindest den Anschein, etwas davon zu verstehen :->

Autor: Mehmet Kendi (mkmk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven P. schrieb:
> ... und die Entwickler
> machen zumindest den Anschein, etwas davon zu verstehen :->

Zumindest mehr als ich, das ist schon mal sicher. Habe auch gleich damit 
begonnen, diese Library in mein Program einzubinden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.