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