Sign in Join
Wiki copytemporary

fpCEF3/de

Deutsch · English

Beschreibung

Chromium ist ein Open-Source-Projekt (von Google), welches einen eigenen Browser für unterschiedliche Plattformen zu entwickeln als Ziel hat. Unter anderem basiert der Browser Chrome auf diesen Quelldaten.

Das Chromium Embedded Framework (CEF) ist ein Open-Source-Framework zum Einbetten eines Browser- Controls basierend auf Chromium. Es kann auf Linux, Mac OS X und Windows in 32 und 64 Bit-Versionen genutzt werden. CEF gibt es in den Versionen CEF1 und CEF3 wobei CEF1 nicht mehr weiterentwickelt wird.

Es gibt für Delphi ein Framework (Delphi Chromium Embedded Framework - DCEF3) und zwei Ableger, die auch für Lazarus/FreePascal genutzt werden können (fpCEF3 und WACEF).

Installation

Neben dem Lazarus Package muss auch das Framework selbst heruntergeladen und dem eigenen Projekt zur Verfügung gestellt werden. Wichtig dabei ist, dass das Framework zu dem Package passt. Welches das ist und weitere hilfreiche Installationshinweise sind auf Github zu finden: https://github.com/dliw/fpCEF3

Zum Zeitpunkt der Überarbeitung dieser Beschreibung (Mai 2016), ist CEF 3.2526.1373 das benötigte Framework.

Download Package

fpCEF3 kann per Git

text
git://github.com/dliw/fpCEF3.git

oder auch gezippt heruntergeladen (und in ein separates Verzeichnis entpackt) werden:

text
master.zip

Installation des Packages

Nach dem Herunterladen des Packages fpCEF3, kann dieses in Lazarus installiert werden:

Download Framework CEF3

Nun muss noch das Framework heruntergeladen und dessen Libraries für ein jeweiliges Projekt zur Verfügung gestellt werden. Dieses kann man von folgenden Seiten herunterladen:
https://cefbuilds.com
http://www.magpcss.net/cef_downloads (eine ältere Version von hier)

Note: Unbedingt beachten, welche Frameworkversion mit dem aktuellen fpCEF3 genutzt werden kann! Siehe Installation

Verwendung

Minimalbeispiel

Es wird ein Minimalbeispiel erstellt, dass die Verwendung als einfachen Browser zeigen soll.

Windows

Da für das Laden die CEF-Bibliotheken benötigt werden, ist es sinnvoll ein neuen Projektordner anzulegen, das Projekt und die Bibliotheken darin gemeinsam zu speichern.

Die Dateien, wie libcef.dll, natives_blob.bin, icudtl.dat befinden sich somit im gleichen Verzeichnis, wie das Projekt, das Verzeichnis locales unter C:\SimpleBrowser\locales.
Um Missverständnisse zu vermeiden ist hier nochmal die Dateistruktur für den Simplebrowser als Bild beigefügt:\

\

Erstellen Sie nun das Projekt mit Lazarus

pascal
procedure TForm1.edtURLClick(Sender: TObject);
begin
  Chromium.Load(UTF8Decode(edtURL.Text));
end;
pascal
procedure TForm1.FormCreate(Sender: TObject);
var
  PrjPath: ustring;
  Lang, FallbackLang: string;
begin
  PrjPath := UTF8Decode(GetCurrentDir + PathDelim);
  CefLocalesDirPath := PrjPath + 'locales';
  GetLanguageIDs(Lang, FallbackLang);
  CefLocale := UTF8Decode(FallbackLang);
  edtURL.Text:='http://www.lazarus-ide.org/';
end;
pascal
uses
  sysutils, Forms, EditBtn, cef3lcl, cef3intf, cef3types, cef3lib, gettext;

\

Zeige URL der geladenen Seite

Basierend auf dem Minimalbeispiel

pascal
procedure TForm1.ChromiumLoadEnd(Sender: TObject; const Browser: ICefBrowser;
  const Frame: ICefFrame; httpStatusCode: Integer);
begin
  edtURL.Text:=UTF8Encode(Browser.MainFrame.Url);
end;

Download von Dateien ermöglichen

pascal
procedure TForm1.ChromiumBeforeDownload(Sender: TObject;
  const Browser: ICefBrowser; const downloadItem: ICefDownloadItem;
  const suggestedName: ustring; const callback: ICefBeforeDownloadCallback);
begin
  callback.Cont(suggestedName, True);
end;

Drucken per Code

pascal
procedure TForm1.Button1Click(Sender: TObject);
begin
  Chromium.Browser.Host.Print;
end;

Erstellen eines PDFs

pascal
procedure TForm1.Button1Click(Sender: TObject);
var
  CefPdfPrintSettings: TCefPdfPrintSettings;
  EmptyCefStringUtf16: TCefStringUtf16;
begin
  SaveDialog1.DefaultExt := 'pdf';
  SaveDialog1.Filter     := 'Portable Document Format (pdf)|*.pdf';
  if SaveDialog1.Execute then
  begin
    FillByte(EmptyCefStringUtf16, SizeOf(EmptyCefStringUtf16), 0);

    CefPdfPrintSettings.backgrounds_enabled := 1;
    CefPdfPrintSettings.header_footer_enabled := 0;
    CefPdfPrintSettings.header_footer_title := EmptyCefStringUtf16;
    CefPdfPrintSettings.header_footer_url := EmptyCefStringUtf16;
    CefPdfPrintSettings.landscape := 0;
    CefPdfPrintSettings.margin_bottom := 0;
    CefPdfPrintSettings.margin_left := 0;
    CefPdfPrintSettings.margin_right := 0;
    CefPdfPrintSettings.margin_top := 0;
    CefPdfPrintSettings.margin_type := PDF_PRINT_MARGIN_DEFAULT;
    CefPdfPrintSettings.page_height := 0;
    CefPdfPrintSettings.page_width := 0;
    CefPdfPrintSettings.selection_only := 0;

    Chromium.Browser.Host.PrintToPdf(UTF8Decode(SaveDialog1.FileName), CefPdfPrintSettings, Nil);
  end;
end;

Die Beschreibung der einzelnen Settings finden Sie in der Deklaration von TCefPdfPrintSettings.

Bekannte Probleme

Weitere Informationen

--Michl 22:58, 1 June 2015 (CEST)


From the Free Pascal wiki, page "fpCEF3/de", as it stood on 2020-02-16 after a change by GAN, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 4, last changed by WikiArchive .

Edited on wiki.freepascal.org by 2 people, 2015–2020

From the official wiki's backup of 26 May 2024: who edited this page there, and when. Edits made there after that date were not recorded, and the earlier versions are not shown here; the main page says why.

WhenWhoWhat changed
MichlCreated page
MichlBeschreibung
MichlBeschreibung
MichlBeschreibung (minor)
MichlDownload Lazarus Package: Installation des Packages
MichlDownload Lazarus Package (minor)
MichlInstallation des Packages (minor)
MichlInstallation des Packages: Download Framework CEF3
MichlInstallation des Packages (minor)
MichlDownload Framework CEF3 (minor)
MichlBeschreibung (minor)
MichlInstallation: Verwendung
MichlVerwendung: Weiter
MichlVerwendung
MichlWeitere Informationen (minor)
MichlInstallation des Packages (minor)
MichlWeitere Informationen (minor)
MichlDownload Framework CEF3 (minor)
MichlVerwendung (minor)
MichlAnzeigen der geladenen Seite (minor)
MichlInstallation (minor)
MichlAnzeigen der geladenen Seite (minor)
MichlWindows (minor)
MichlInsert Download von Dateien ermöglichen
MichlBekannte Probleme zugefügt (minor)
MichlAdded Printing
MichlWindows: Bild für Dateistruktur eingefügt
MichlBekannte Probleme: Red Border Problem zugefügt
MichlBekannte Probleme (minor)
Michl (minor)
GANFixed syntax highlighting (minor)

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.