![]() |
WebBrowser 'Ziel freigeben'
Hallo,
ich nutze den WebBrowser um unter anderem um .pdf-Dateien anzuzeigen: WebBrowser.Navigate('x:\fifi.pdf'); geht soweit ganz gut. Mein Problem ist, daß dann 'x:\fifi.pdf' blockiert ist, d.h. kann weder verschoben noch umbenannt werden. Wie kann man das blockieren verhindern? Bin für jede Anregung dankbar! |
Re: WebBrowser 'Ziel freigeben'
Liegt am Acrobat(-Plugin).
|
Re: WebBrowser 'Ziel freigeben'
wenn man statt des WebBrowsers das Acrobat-Plugin verwendet, kann man
fifi.pdf problemlos umbenennen oder verschieben. Am plugin allein liegt's also nicht. Die Probleme mit dem Acrobat-Plugin liegen an vielen anderen Stellen: z.B. unterschiedliche Reader-Versionen, Resize nicht pdf-Dateien ,z.B, .xls .doc etc. |
Re: WebBrowser 'Ziel freigeben'
Hallo Bernhard,
solange der Acrobat Reader die Datei im Zugriff hat, kannst du sie nicht verschieben. Sobald du den WebBrowser an eine andere Stelle navigierst (about:blank genügt schon), wird das Dokument wieder freigegeben - wenn keine Komplikationen auftreten. Grüße vom marabu |
Re: WebBrowser 'Ziel freigeben'
Diese Aussage kann ich leider nicht bestätigen. Folgendes mache ich derzeit und ab dem 2. Aufruf erhalte ich immer eine Exception:
Im Projekt test.exe ist eine Exception der Klasse EFCreateError aufgetreten. Meldung: 'Datei C:\Programme\Borland\Delphi6\Projects\test\ablage\ tmp\temp.pdf kann nicht erstellt werden'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Code:
Also woran könnte es nun liegen!? Gibt der Webbrowser denn die pdf-Datei wirklich wieder frei? In meinem Taskmanager läuft jedenfalls noch eine Instanz des Readers, auch nach dem about:blank!
procedure TForm1.btn_pdf_previewClick(Sender: TObject);
var FileName:String; begin pdf.Navigate('about:blank'); //webbrowser auf leere seite führen FileName := tmp_path + 'temp.pdf'; //festlegen des dateinamens OverHandContent; //internes übergeben der inhalte an pdf-controls pg_main.ActivePageIndex := 2; //mogelpackung //erstellen der pdf-datei PReport1.FileName := FileName; PReport1.BeginDoc; PReport1.Print(pdf_doc); PReport1.EndDoc; //akualisieren einer internen liste list_pdf.Clear; GetFilesInDirectory(pdf_path,'*.pdf',list_pdf.Items,false,false); pdf.Navigate(FileName); //aufruf der pdf-datei im webbrowser pg_main.ActivePageIndex := 3; //wechsle auf die vorschauseite... end; Achso: Ich habe zum Testen die Version 7.0.9 benutzt...Vielleicht ist es doch sinnvoller direkt die PDF mit ShellExecude anzeigen zu lassen!? Dann kann das Programm wenigstens nach dem Schliessen des Readers die Datei wieder überschreiben... |
Re: WebBrowser 'Ziel freigeben'
Hallo Tom,
Zitat:
Freundliche Grüße |
Re: WebBrowser 'Ziel freigeben'
Sonst kopier doch die Datei in ein temporäres Verzeichnis und navigiere sie dann an. Dann kann die Originaldatei immer noch geändert werden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz