![]() |
QuickPDF 7.19: RenderPageToStream und MehrseitenPDF -> RAM-Verbrauch
Hallo,
folgender Code (von der QPDF-Seite) zeigt eine Seite eines PDF's an.
Delphi-Quellcode:
Problem: die Stelle QPDF.RenderPageToStream verballert 300-400 MB Speicher !!!
procedure TForm.RenderPage;
var BM : TBitmap; MS : TMemoryStream; DPI : Integer; JpegStream : Tmemorystream; JPEG : TJpegImage; JpegImage : Timage; begin MyTrace('RenderPage: Start'); MyTrace('RenderPage: ScrollBar: Start'); BM := TBitmap.Create; try imgPreview.Picture.Assign(BM); PreviewScrollBox.HorzScrollBar.Position := 0; PreviewScrollBox.VertScrollBar.Position := 0; imgPreview.Left := 0; imgPreview.Top := 0; finally BM.Free; end; MyTrace('RenderPage: ScrollBar: End'); JPEG := TJpegImage.create; JpegStream := Tmemorystream.Create; JpegImage := Timage.Create(self); MS := TMemoryStream.Create; try DPI := ((cmbZoom.ItemIndex + 1) * 25 * 96) div 100; MyTrace('RenderPage: RenderPageToStream: DPI='+IntToStr(DPI)+' : Start'); MessageBox(0, 'RenderPage: Start', '', 0); // QPDF.RenderPageToStream(DPI, ViewPrintPageNum, 0{BMP}, MS); // MyTrace('RenderPage: RenderPageToStream: Stream-Size='+IntToStr(MS.Size)); JpegStream.Clear; QPDF.RenderPageToStream(DPI, ViewPrintPageNum, 1{JPG}, JpegStream); MyTrace('RenderPage: RenderPageToStream: Stream-Size='+IntToStr(JpegStream.Size)); MessageBox(0, 'RenderPage: End', '', 0); MyTrace('RenderPage: RenderPageToStream: End'); // MS.Seek(0, soFromBeginning); JpegStream.Seek(0, soFromBeginning); BM := TBitmap.Create; try MyTrace('RenderPage: LoadFromStream: Start'); JPEG.LoadFromStream(jpegstream); jpegimage.Picture.Assign(JPEG); // BM.LoadFromStream(MS); MyTrace('RenderPage: LoadFromStream: End'); imgPreview.AutoSize := True; MyTrace('RenderPage: Picture.Assign: Start'); // imgPreview.Picture.Assign(BM); imgPreview.Picture.Assign(jpegimage.Picture.Graphic); MyTrace('RenderPage: Picture.Assign: End'); finally BM.Free; end; finally MS.Free; JPEG.Free; JpegStream.Free; JpegImage.Free; end; MyTrace('RenderPage: End'); end { RenderPage } ; DPI ist 46, die PDF enthält nur Text (Stream-Size 30 kB). Das Speicherproblem tritt nur auf, wenn das PDF mehr als eine Seite hat. #Update#: Falsch, es tritt immer auf ! Wie man am Code sieht, hatte ich zuerst mit Bitmap, dann mit JPEG gespielt. Kennt jemand das Problem ? Danke Heiko |
AW: QuickPDF 7.19: RenderPageToStream und MehrseitenPDF -> RAM-Verbrauch
Hallo,
hab's grad mit der aktuellen 7.24 getestet: ich kann das nur nachstellen, wenn ich mit 1200 DPI render. Dann schnellt der Speicherverbrauch nach oben. Welche DPI-Werte verwendest Du denn? Grüße, Uli |
AW: QuickPDF 7.19: RenderPageToStream und MehrseitenPDF -> RAM-Verbrauch
Hallo,
48 (50%) bzw. 96 DPI (100%). Ich habe festgestellt, dass das "nur" unter XP passiert. Heiko |
AW: QuickPDF 7.19: RenderPageToStream und MehrseitenPDF -> RAM-Verbrauch
Darum, ich hab's hier unter Windows 7 getestet.
|
AW: QuickPDF 7.19: RenderPageToStream und MehrseitenPDF -> RAM-Verbrauch
Hallo,
hm, ein Fehler von mir hat bei jedem Fontwechsel einen neuen Font zum PDF addiert (AddTrueTypeFont), auch wenn der Font schon da war. Jetzt ist der RAM-Verbrauch von 500 MB auf 120 MB gesunken. Noch nicht das wahre, aber immerhin. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:01 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