Einzelnen Beitrag anzeigen

Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Canvas und seine Rätsel...

  Alt 10. Jan 2023, 09:20
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.

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 FPdfView.Bitmap[B] zugreifst. Und wenn du darauf zugreifen würdest (das also mit Bitmaps[B] meintest), würdest du diese ja nicht auf das PDF zeichnen wollen, oder?
TPdf (für das Komplette PDF-Dokument) und TPdfView haben ein Property BitmabCount. Darüber lässt sich (offenbar) feststellen, ob und wieviele Bitmaps im Dokument enthalten sind. Durch die Iteration kann (sollte) ich auf die einzelnen Bitmaps zugreifen - und wenn da nur eine ist, ist die Iteration entsprechend schnell beendet.


Welche Komponente ist das?
PDFium ist die DLL von Google, das Pdf-Dokument, bzw. die einzelnen Seiten, werden von TPdf und TPdfView gekapselt.


Delphi-Quellcode:
// if FPdfView.BitmapCount >0 then
// begin
// ShowMessage('BitmapCount := ' + IntToStr(FPdfView.BitmapCount));
Das verät mir, dass überhaupt mindestens eine Bitmap da ist

Delphi-Quellcode:
// 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;
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.
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:
Die Trial sollte dafür ja reichen.
Die besteht gerade mal aus der DLL und der exe. Code ist da nicht dabei. Aber mal sehen - ich habe meinen Code aus einem Frame in ein Formular überführt. Dieses kann ich ja hier mal posten.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat