![]() |
Delphi-Version: 11 Alexandria
Canvas und seine Rätsel...
Liste der Anhänge anzeigen (Anzahl: 1)
Hi zusammen
Eigentlich sollte folgendes Codescnipsel ja kein Problem sein: Anhang 55727 Das sollte so, auch nach dem Embarcadero Wikki, in Ordnung sein. Deklariert ist es:
Delphi-Quellcode:
Trorzdem wird die öffnende Indexklammer angemeckert...
procedure TAlexPdfFormular.PdfViewCreate2;
var i, j, X,Y : Integer; Was mache ich falsch Gruss Delbor |
AW: Canvas und seine Rätsel...
Die Frage ist doch: Wie ist Bitmap deklariert?
|
AW: Canvas und seine Rätsel...
und woher soll PDFView wissen auf welche Seite gemalt werden soll?
|
AW: Canvas und seine Rätsel...
Hi zusammen
Vielleicht mal erst die Prozedur, mit der ich die benötigten FPDFView erstelle :
Delphi-Quellcode:
Hier folgen noch einige Zeilen, die aber nicht weiter wichtig sind.
procedure TAlexPdfFormular.PdfViewCreate2;
var i, j, X,Y, B : Integer; begin .... while i < j do begin FPDFView := TPDFView.Create(Self); // <== Seite erstellen FPdfView.Parent := ScrBViewPdf; FPdfView.Name := 'PdfView'+intToStr(i); FPdfView.Pdf := Pdf1; FPdfView.Active := true; FPdfView.PageNumber := i+1; if FPdfView.BitmapCount >0 then ShowMessage('BitmapCount := ' + IntToStr(FPdfView.BitmapCount)); ; // FPdfView.Bitmap. // if FPdfView.BitmapCount >0 then // begin // ShowMessage('BitmapCount := ' + IntToStr(FPdfView.BitmapCount)); // for B := 0 to FPdfView.BitmapCount-1 do // begin //// FPdfView.Bitmap.Canvas.Draw(X,Y,Bitmap); // FPdfView.AddPicture(Bitmap,[Bitmap.x,Bitmap.y]); //<=== ...ein weiterer, bislang erfolgloser versuch // end; end; FPdfView.BitmapCount gibt an, wieviele Bitmaps auf der Pdf-Seite enthalten sind - zumindest hab ich das bislang so begriffen. ![]() Eine Bitmap ist lokal deklariert. Die speichert aber die gerade aktuelle Seite und existiert auch nur, während die Prozedur aufgerufen wird:
Delphi-Quellcode:
TPicture gibts da nicht.
procedure TViewerFormMain.SpeedButtonSaveBitmapClick(Sender: TObject);
var Bitmap: TBitmap; begin if SavePictureDialog.Execute then begin Bitmap := PdfView.RenderPage(0, 0, PdfView.Width, PdfView.Height, ro0, PdfView.Options); try Bitmap.SaveToFile(SavePictureDialog.FileName); finally Bitmap.Free; end; end; end; Zitat:
Gruss Delbor |
AW: Canvas und seine Rätsel...
Hallo,
der ausgeklammerte Code hatte noch kein [B]. Warum benutzt Du die Schleifenvariable B überhaupt mit Bitmap. |
AW: Canvas und seine Rätsel...
Hallo,
der Stempel (Wasserzeichen?) wird kein Bitmap sein, sondern was anderes ... Welche Komponente ist das? |
AW: Canvas und seine Rätsel...
Aus deinem Code geht nicht hervor, welche Werte X und Y haben. Und zur Frage zur verwendeten Variable Bitmap hast du nur den Code gezeigt, mit dem du eine Seite als Bild speicherst. In der betreffenden Methode kommt diese hingegen in der Variablendeklaration nicht vor.
Draw erwartet jedenfalls eine einzelne Bitmap, die dann über das PDF gezeichnet wird. Ich verstehe dabei aber die Iteration über BitmapCount nicht, wenn du dann darin gar nicht auf
Delphi-Quellcode:
zugreifst. Und wenn du darauf zugreifen würdest (das also mit
FPdfView.Bitmap[B]
Delphi-Quellcode:
meintest), würdest du diese ja nicht auf das PDF zeichnen wollen, oder?
Bitmaps[B]
Zitat:
|
AW: Canvas und seine Rätsel...
Hi hoika
Zitat:
Es gibt aber auch eine Demo zur Erzeugung einer PDF - die setzt ein TImage zur Anzeige von Grafiken ein. Die Frage ist nur: wieso kann die Demo zur Anzeige eines PDFs einen Stempel, der diesem als Bitmap verpasst wurde, mit diesem ohne TBitmap oder TPicture-Objekt anzeigen, mein Programm aber nicht? Kann es sein, dass dieses Objekt aus der PDFium.DLL exportiert wird? Ein weiteres Problem: woher weiss ich, wo in der PDF ich eine 'Stempel-Bitmap'(..) ausgeben muss, damit sie immer an derselben Stelle angezeigt wird? Diese Info ist mit Sicherheit in der Pdf-Datei enthalten - zumindest würde es mich sehr erstaunen, wenn es anders wäre. Gerade sehe ich den Beitrag von jaenicke - den muss ich separat beantworten. Bis später also! Gruss Delbor |
AW: Canvas und seine Rätsel...
Kannst du vielleicht eine Beispiel-PDF und ein Beispiel-Projekt anhängen, damit wir das nachvollziehen können, was da passiert und was passieren soll? Die Trial sollte dafür ja reichen.
|
AW: Canvas und seine Rätsel...
Hi zusammen
[QUOTE=jaenicke;1517270]Aus deinem Code geht nicht hervor, welche Werte X und Y haben. Und zur Frage zur verwendeten Variable Bitmap hast du nur den Code gezeigt, mit dem du eine Seite als Bild speicherst. In der betreffenden Methode kommt diese hingegen in der Variablendeklaration nicht vor. [/DELPHI] Nein, das ist nicht der Code zum Speichern der PDF in eine Bitmap - der Rendert die komplette Seite in eine Bitmap und speichert diesen auf Platte ab. Das ist der Code zum anzeigen einer Pdf, wobei für jede im Dokument enthaltene Seite ein TPdfView-Objekt erzeugt wird. Dabei ist i der Zähler und j die Anzahl der Seiten. Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Das verät mir, dass überhaupt mindestens eine Bitmap da ist
// if FPdfView.BitmapCount >0 then
// begin // ShowMessage('BitmapCount := ' + IntToStr(FPdfView.BitmapCount));
Delphi-Quellcode:
In der ersten Zeile zwischen beginn/end hätte ich nach 'Bitmap' den Index B angeben müssen. Aber welche Werte sind für X und Y richtig? Wo der Stempel (und damit die Bitmap) gesetzt wurde, steht im Dokument. Aber wie ich da ran komme - ich weiss es nicht.
// for B := 0 to FPdfView.BitmapCount-1 do
// begin //// FPdfView.Bitmap.Canvas.Draw(X,Y,Bitmap); // FPdfView.AddPicture(Bitmap,[Bitmap.x,Bitmap.y]); //<=== ...ein weiterer, bislang erfolgloser versuch // end; Zweite Zeile: TPdfView kennt 2 Methoden AddPicture. Aber diese nützen mir nur etwas, wenn ich die Position(en) der Bitmap(s) kenne... Eine Test-Pdf habe ich inzwischen erstellt und ihr einen Stempel verpasst. Doch wie ist das mit einem Beispielprogramm? Ich fürchte, das würde genau wie mein derzeitiges Programm den Stempel nicht anzeigen. Zitat:
Gruss Delbor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 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