[Erledigt] mupdf oder ähnliches für Vorschaubilder

Rund um die LCL und andere Komponenten
Antworten
MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

[Erledigt] mupdf oder ähnliches für Vorschaubilder

Beitrag von MacWomble »

Gibt es eine Möglichkeit - ohne externe Programme - die erste Seite einer gespeicherten pdf-Datei verkleinert (als Vorschau)
als Bilddatei(jpg,png) zu speichern oder diese direkt in einem TImage anzuzeigen?
Ich habe zwar die mupdf gefunden, aber keine Anleitung dafür. :(

PS: Lösung sollte Linux und Windows unterstützen.
PPS: Unter Linux funktioniert es bei mir bisher mit dem externen mupdf, wo ich die Datei umwandle, speichere und dann in das TImage lade.

Zusammengefasst: Ich hätte gerne in meiner Anwendung eine Vorschau gespeicherter Dokumente (nicht nur PDF).
Es muss nicht mupdf sein!
Es sollte möglichst schnell sein.
Zuletzt geändert von MacWomble am Fr 6. Mär 2020, 15:38, insgesamt 1-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: mupdf oder ähnliches für Vorschaubilder

Beitrag von Winni »

Hallo!

Die Lösung heisst ImageMagick. Für das gibt es ein Interface namens PascalMagick.

Das kann PDFs lesen sowie diverse Bildmanipulationen wie auch verkleinern.

Webseite (plattdeutsch aka english) ist hier: https://wiki.lazarus.freepascal.org/PascalMagick

Liegt den fpc sources seit einiger Zeit automatisch anbei unter fpcsrc/3.04/packages/imagemagick


Winni

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: mupdf oder ähnliches für Vorschaubilder

Beitrag von MacWomble »

Danke ! :)

Ich habe aber bisher nichts gefunden, um mit ImageMagick nur die erste Seite einer PDF zu konvertieren. Aber ich schau mir das ganze nochmal genauer an.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: mupdf oder ähnliches für Vorschaubilder

Beitrag von MacWomble »

In der Dokumentation von ImageMagick steht:

Code: Alles auswählen

Das Lesen dieser Formate ist jedoch sehr kompliziert, da es sich um vollständige Computersprachen handelt, die speziell für die Erstellung einer gedruckten Seite auf hochwertigen Laserdruckern entwickelt wurden. Dies geht weit über den Rahmen von ImageMagick hinaus und erfordert daher ein spezielles Delegatenprogramm namens "Ghostscript", um Postscript- und PDF-Seiten zu lesen und in ein Rasterbild zu konvertieren.


Deswegen habe ich das nun mit ghostscript (extern) gelöst. Unter Linux ist das OK, es wird nur die erste Seite konvertiert.
Unter Windows erscheint aber immer kurz eine Konsole.

Kann man dieses Verhalten irgendwie unterbinden?
Gibt es Ghostscript auch als Package/Plugin?

Code: Alles auswählen

RunAndWait(ghostscript +' -sDEVICE=png16m -r30x30 -dNOPAUSE -dBATCH -sOutputFile='+ThumbFile+' ' + QuellDatei)
 


Code: Alles auswählen

procedure RunAndWait(Befehl: string);
var
  AProcess: TProcess;
begin
  debugln('RunAndWait              ' + Befehl);
  AProcess := TProcess.Create(nil);
  AProcess.CommandLine :=Befehl;
  AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
  AProcess.Execute;
  AProcess.Free;
end;   
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: mupdf oder ähnliches für Vorschaubilder

Beitrag von Winni »

Hi!

Wusste ich nicht, dass ImageMagic GhostScript benutzt.

Deine Frage: Ich weiss, dass man das Aufflackern der Windows Konsole ausschalten kann, ich weiß aber nicht wie.
Aber andere schaffen das auch, wie z.B. der Windows PDFcreator, der auch GhostScript benutzt.

Wenn Du sowieso mit GS arbeitest, dann brauchst Du ImageMagick nicht. Ich hab vor langer,langer Zeit mal viel mit GS rumprogramiert,
um aus PostScript PDFs zu machen. Du musst Dir halt n gemütlichen Abend machen und zumindest die man page von GS durchlesen. Die ist endlos,
weil GS so mächtig ist. Kannst auch den PDF range angeben, die Seite verkleinern und als png speichern . Und danach ist es ja trivial.

Und wenn Du dann GS kennst, kannst Du Dich ja auf einen Job als Druckertreiber bewerben .......

Winni

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: mupdf oder ähnliches für Vorschaubilder

Beitrag von Winni »

Hi!

Hab noch mal überlegt:

Bei den TProcess.Options gibt es doch auch poNoConsole (oder so ähnlich).
Das muss wohl aktiviert werden.

Und außerdem flackert die Konsole immer auf, wenn heaptrc in den Project Compiler Optionen aktiviert ist.
Aus machen bis zum nächsten unauffindbaren Fehler.

Winni

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: mupdf oder ähnliches für Vorschaubilder

Beitrag von MacWomble »

Winni hat geschrieben:Bei den TProcess.Options gibt es doch auch poNoConsole (oder so ähnlich).
Das muss wohl aktiviert werden.


Danke, das funktioniert !
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Antworten