AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Frage zu "Foxit Quick PDF Library and Debenu Product Line End-of-Life announcement"
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu "Foxit Quick PDF Library and Debenu Product Line End-of-Life announcement"

Ein Thema von slemke76 · begonnen am 11. Dez 2021 · letzter Beitrag vom 5. Apr 2022
Antwort Antwort
Benutzerbild von gubbe
gubbe

Registriert seit: 8. Okt 2005
Ort: Schleswig-Holstein
172 Beiträge
 
Delphi 12 Athens
 
#1

AW: Frage zu "Foxit Quick PDF Library and Debenu Product Line End-of-Life announcemen

  Alt 14. Dez 2021, 10:56
Ich teste gerade mal, lädt PDF-Dateien sehr schnell. Was ich noch nicht ganz verstanden habe, wie ich pdf.RenderpageToImage anwende, wenn ich das Image nicht als datei auf die Festplatte speichern, sonder in den Imagebuffer (Memory) schreiben möchte.

Und wie lese ich den (mit GetImageBuffer) wieder aus?

Hast Du da evtl. ein Beispiel zur Hand?
Ich verwende die Funktion nicht, sondern zeichne mit einem Rasterizer in einen Device Context. Dazu gibt es bei DynaPDF auch Beispiele in Delphi.

Wenn Du mit RenderPageToImage arbeiten willst, müsstest Du den Rückgabewert von GetImageBuffer direkt als Bild im angegebenen Format weiterverarbeiten.
Ich habe das mal versucht und das Beispiel (render_page_to_image) so abgewandelt, dass das Bild im Speicher erzeugt wird:

Delphi-Quellcode:
procedure RenderPageToImage(Image: TImage);
var
  w: Integer;
  pdf: TPDF;
  BufSize: Cardinal;
  Buffer: PAnsiChar;
  Stream: TMyStream;
begin
  pdf := nil;
  try
    pdf := TPDF.Create;
    pdf.CreateNewPDF('');
    pdf.SetImportFlags(ifImportAll or ifImportAsPage);
    if pdf.OpenImportFile('test.pdf', ptOpen, '') < 0 then
    begin
      pdf.Free;
      Exit;
    end;
    pdf.Append;
    pdf.ImportPageEx(1, 1.0, 1.0);
    pdf.EndPage;
    w := 1024;
    if pdf.RenderPageToImage(1, '', 0, w, 0, rfDefault, pxfRGB, cfFlate,
      ifmPNG) then
    begin
      buffer := pdf.GetImageBuffer(BufSize);
      Stream := TMyStream.Create;
      try
        Stream.SetPointer(Buffer, BufSize);
        Image.Picture.LoadFromStream(Stream);
      finally
        pdf.FreeImageBuffer;
        Stream.Free;
      end;
    end;
  except
    on E: Exception do
    begin
      Showmessage(E.Message);
    end;
  end;
  if pdf <> nil then
    pdf.Free;
end;
MyStream ist einfach ein MemoryStream in der gleichen Unit, damit man die Protected-Funktion "setPointer" aufrufen kann:

Delphi-Quellcode:
type
  TMyStream = class(TMemoryStream)
  end;
Zum Testen braucht man nur ein TImage im Form und ruft bei ButtonClick die Funktion auf. Die DLL muss neben der Exe liegen und natürlich eine test.pdf.

Vielleicht hat auch jemand eine bessere Idee hat, wie man das Bild aus dem Buffer laden kann?
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.561 Beiträge
 
Delphi 12 Athens
 
#2

AW: Frage zu "Foxit Quick PDF Library and Debenu Product Line End-of-Life announcemen

  Alt 14. Dez 2021, 15:43
Wenn Du mit RenderPageToImage arbeiten willst, müsstest Du den Rückgabewert von GetImageBuffer direkt als Bild im angegebenen Format weiterverarbeiten.
Ich habe das mal versucht und das Beispiel (render_page_to_image) so abgewandelt, dass das Bild im Speicher erzeugt wird:
Herzlichen Dank!

Funktioniert prima.

Meine Tochter hat mir aus ihrer Studienzeit (Architektur) mal so ein paar Monster PDF-Dateien (zig tausende Elemente, Blattmaße 42x80 cm) zum Testen gegeben. Hier rendert Dynapdf die Seiten im Vergleich zu QPDF 2-3 mal so schnell, das ist doch ein deutlicher Unterschied (statt 6 nur 2 Sekunden warten).

Kleines Update: Dyna-PDF funktioniert auch unter Linux und macOS.

Geändert von Harry Stahl (14. Dez 2021 um 18:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bytecook
bytecook

Registriert seit: 6. Aug 2010
Ort: Dornbirn
151 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Frage zu "Foxit Quick PDF Library and Debenu Product Line End-of-Life announcemen

  Alt 5. Apr 2022, 09:05
Hallo Leute,

ich habe jetzt gerade wieder mal probiert, den Debenu Support zu erreichen. Ich habe eine aktive "Premium Upgrade Protection Subscription [Delphi Source Code License]", die noch bis 08/22 läuft.
Ich frage regelmäßig bei Foxit wegen des aktuellen Sourcecodes nach, jedoch erhalte ich seit Monaten keine Antwort auf meine Anfragen. Bevor ich jetzt meinen Anwalt einschalte wollte ich nochmal nachfragen, ob es ggf eine andere Adresse von Foxit als <<support@foxitsoftware.com>> gibt.

Lg,
Peter
Peter
Was mache ich, wenn ein Bär meine Frau angreift?
Nichts. Er hat sie angegriffen, soll er doch selber sehen, wie er sich verteidigt.
  Mit Zitat antworten Zitat
Benutzerbild von gubbe
gubbe

Registriert seit: 8. Okt 2005
Ort: Schleswig-Holstein
172 Beiträge
 
Delphi 12 Athens
 
#4

AW: Frage zu "Foxit Quick PDF Library and Debenu Product Line End-of-Life announcemen

  Alt 5. Apr 2022, 09:12
Hallo Peter,

schreib mal direkt an leonardo_martello (statt support). Zumindest habe ich von ihm zuletzt im Dezember den aktuellen Quelltext bekommen.
  Mit Zitat antworten Zitat
Benutzerbild von bytecook
bytecook

Registriert seit: 6. Aug 2010
Ort: Dornbirn
151 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Frage zu "Foxit Quick PDF Library and Debenu Product Line End-of-Life announcemen

  Alt 5. Apr 2022, 09:41
Hallo Peter,

schreib mal direkt an leonardo_martello (statt support). Zumindest habe ich von ihm zuletzt im Dezember den aktuellen Quelltext bekommen.
Danke, habe ich eben gemacht!

NACHTRAG: Hat endlich funktioniert, habe 18.22 erhalten (6.12.2021). Gehe davon aus, das dies der letzte war .
Peter
Was mache ich, wenn ein Bär meine Frau angreift?
Nichts. Er hat sie angegriffen, soll er doch selber sehen, wie er sich verteidigt.

Geändert von bytecook ( 5. Apr 2022 um 11:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Frage zu "Foxit Quick PDF Library and Debenu Product Line End-of-Life announcemen

  Alt 5. Apr 2022, 13:13
Danke für die Info, die letzte offizielle Version war meines Wissens 18.11 nämlich. Da scheinen sie also im Hintergrund doch noch was gemacht zu haben
  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 04:44 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