AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Aufrufen des Default-PDF-Viewer unter Linux
Thema durchsuchen
Ansicht
Themen-Optionen

Aufrufen des Default-PDF-Viewer unter Linux

Ein Thema von philipp.hofmann · begonnen am 10. Dez 2018 · letzter Beitrag vom 12. Dez 2018
Antwort Antwort
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
898 Beiträge
 
Delphi 10.4 Sydney
 
#1

Aufrufen des Default-PDF-Viewer unter Linux

  Alt 10. Dez 2018, 16:16
Hallo allerseits,

hat jemand eine Idee, wie man unter Linux eine Datei (z.B. PDF) mit dem jeweiligen Default-Viewer aufrufen kann?
Bisher funktioniert dies bei mir schon mal unter Windows, Android (hier beschränkt in untenstehendem Code auf PDF) und MacOS:

Delphi-Quellcode:
procedure TicTrainerF.displayPDFFileInDefaultViewer(filename:String);
 {$IF DEFINED(ANDROID)}
 var fileuri: JParcelable;
 Intent: JIntent;
 {$ENDIF}
 {$IFDEF MACOS}
 var Workspace: NSWorkspace;
 {$ENDIF}
begin
  {$IFDEF MSWINDOWS}
    ShellExecute(0,'open',pchar(filename),nil,nil,SW_shownormal);
  {$ENDIF}
  {$IFDEF ANDROID}
    fileuri := JParcelable(TJNet_Uri.JavaClass.fromFile(TJFile.JavaClass.init(StringToJString(filename))));
    Intent := TJIntent.Create;
    Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
    intent.setType(StringToJString('application/pdf'));
    Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, fileuri);
    TAndroidHelper.Activity.StartActivity(Intent);
  {$ENDIF}
  {$IFDEF MACOS}
    Workspace := TNSWorkspace.Create;
    Workspace.openFile(NSSTR(filename));
  {$ENDIF}
  {$IFDEF LINUX}
    //todo
  {$ENDIF}
end;
Grüße, Philipp
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Aufrufen des Default-PDF-Viewer unter Linux

  Alt 10. Dez 2018, 17:28
Hallo,
installier Dir Lazarus und schau nach, wie die das machen.

https://freepascalanswers.wordpress....en-a-document/
Heiko
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
898 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Aufrufen des Default-PDF-Viewer unter Linux

  Alt 11. Dez 2018, 09:56
Die Funktion von Lazarus ist an der Stelle super schön einfach. Aber wenn ich mir Lazarus installiere, komme ich nicht in den Linux-Quellcode der Funktion "openDocument", kann es mir daher leider auch nicht anschauen.

Kann man diese Lazarus-Lib lclintf irgendwie einfach in Delphi einbinden oder wie komme ich alternativ an den dort verwendeten Linux-Code?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Aufrufen des Default-PDF-Viewer unter Linux

  Alt 11. Dez 2018, 10:02
Hallo,
laut diesem hier ist das doch Plattform-übergreifend.

http://wiki.freepascal.org/Executing...f_Alternatives
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Aufrufen des Default-PDF-Viewer unter Linux

  Alt 11. Dez 2018, 19:03
Den Aufruf kannst Du zusammen mit FMXLinux (https://www.fmxlinux.com) per

FmuxOpenFile (PChar (Progname / Documentname)); erreichen.

Die Unit FMUX.api (eine FMXLinux-Unit) muss dazu eingebunden werden.

Bei Bedarf, ein Tipp: In meinem aktuellen FireMonkey Buch gibt es im Kapitel 3 (Tipps und Tricks für Cross Platform Entwicklung) im Abschnitt 1 (Starten von anderen Anwendungen) zusätzliche Beispiele für andere (Desktop-) Plattformen.

Die Arbeit mit FMXLinux macht richtig Spaß, man kann damit vollständige Desktop-Programme entwickeln. Auch unter dem aktuellen Delphi 10.3 funktioniert alles perfekt.

Geändert von Harry Stahl (11. Dez 2018 um 19:05 Uhr)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Aufrufen des Default-PDF-Viewer unter Linux

  Alt 12. Dez 2018, 05:30
Es gibt dafür unter Linux nicht wirklich einen einheitlichen Standard. Am besten ist man meistens damit bedient, "xdg-open" aufzurufen. Allerdings muss dieses Skript nicht zwangsläufig überall installiert sein.

Lazarus scheint auch xdg-open zu verwenden, mit einem zusätzlichen Fallback für KDE und Gnome, falls xdg-open nicht vorhanden ist:

Delphi-Quellcode:
// Open a document with the default application associated with it in the system
function OpenDocument(APath: String): Boolean;
var
  lApp: string;
begin
  // Android uses this
  if Assigned(OpenDocumentWidgetsetImplementation) then
  begin
    Result := OpenDocumentWidgetsetImplementation(APath);
    Exit;
  end;

  Result := True;
  if not FileExistsUTF8(APath) then exit(false);

  lApp:=FindFilenameOfCmd('xdg-open'); // Portland OSDL/FreeDesktop standard on Linux
  if lApp='then
    lApp:=FindFilenameOfCmd('kfmclient'); // KDE command
  if lApp='then
    lApp:=FindFilenameOfCmd('gnome-open'); // GNOME command
  if lApp='then
    Exit(False);

  if (APath<>'') and (APath[1]<>'"') then
    APath:=QuotedStr(APath);
  RunCmdFromPath(lApp,APath);
end;
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
898 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Aufrufen des Default-PDF-Viewer unter Linux

  Alt 12. Dez 2018, 08:29
@Harry: Das Buch hatte ich mir just gestern schon bestellt. Ich finde auch, dass FMXLinux erstaunlich gut aussieht, habe bisher nur einen Fehler in TMediaPlayer mit der Lautstärkenregelung gefunden. Mir fehlt eigentlich nur die BluetoothLE-Implementierung unter Linux, damit es für mich auch kommerziell nutzbar wird, aber sehe es auch bisher mehr als Spielerei.

Und danke für beide Tipps, funktioniert.

Geändert von philipp.hofmann (12. Dez 2018 um 08:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Aufrufen des Default-PDF-Viewer unter Linux

  Alt 12. Dez 2018, 19:46
OK, prima, freut mich, dass es funktioniert.

Falls noch nicht geschehen: Bei Problemen mit den FMXLinux-Framework das einfach auf der Bugtracker-Seite melden, i.d.R. reagiert Eugen relativ schnell mit entsprechenden Fixes:

https://bitbucket.org/crossvcl/fmxlinux/issues
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz