Bild wird in PdfPCell mit iTextSharp automatisch skaliert

8

Ich habe ein seltsames Problem mit Bildern in der iTextSharp-Bibliothek. Ich füge das Bild dem PdfPCell hinzu und aus irgendeinem Grund wird es vergrößert. Wie behalte ich es auf Originalgröße? Hier ist das Bild des PDFs zu 100% und das Bild in Originalgröße in paint.net geöffnet. alt text http://a.yfrog.com/img697/7102/3kn.png Ich habe zwar gedacht, dass die Bilder gleich aussehen würden, wenn sie gedruckt werden, aber der Unterschied auf dem Bild ist derselbe auf der gedruckten Version. Das Bild mit ScaleXXX manuell skalieren zu müssen, um es richtig darzustellen, erscheint etwas unlogisch und liefert kein gutes Ergebnis.

Also wie lege ich das Bild in seiner Originalgröße in ein PdfPCell einer Tabelle, ohne es skalieren zu müssen?

Hier ist mein Code:

%Vor%     
Mladen Prajdic 11.06.2010, 11:57
quelle

5 Antworten

13

Ich verwende iTextSharp v4.1.2 und erhalte das folgende Verhalten:

Mit diesem Code wird das Bild direkt über die AddCell-Methode zur Tabelle hinzugefügt und das Bild wird so skaliert, dass es in die Zelle passt:

%Vor%

Wenn Sie diesen Code verwenden und das Bild zu einer Zelle hinzufügen und dann die Zelle zur Tabelle hinzufügen, wird das Bild in seiner Originalgröße angezeigt:

%Vor%



Haben Sie das Bild direkt zum PDF-Dokument hinzugefügt (außerhalb der Tabelle), nur um die Bildgrößen zu vergleichen / zu überprüfen?

%Vor%


Ich nehme an, dass Sie das Bild in der Zelle zentriert mit etwas Raum um es herum haben möchten. Als letzten Ausweg können Sie Ihr Image ändern. Machen Sie es zu einem PNG mit transparentem Hintergrund, und stellen Sie sicher, dass es einen transparenten Rand um alle Kanten Ihres Bildes herum gibt.

BEARBEITEN

Ich habe gerade die v5.0.2 heruntergeladen und bekomme die gleichen Ergebnisse wie oben erwähnt. Ich habe es mit Bildern versucht, die kleiner und größer als die Größe der Zelle sind, und das Verhalten ist das gleiche; Die erste Methode skaliert das Bild, die zweite Methode nicht.

BEARBEITEN

Nun, anscheinend habe ich mich jahrelang mit der ganzen DPI-Sache geirrt, wenn es um Bilder geht. Ich kann nicht sehen, dass es überhaupt einen Unterschied macht, was die DPI des Bildes ist.
Ich habe ein Bild mit 600 x 400 Pixeln in drei verschiedenen Auflösungen erstellt: 72 dpi, 96 dpi und 110 dpi. Dann fügte ich jedem dieser Bilder ein neues Dokument hinzu, das genau 600x400 war.

%Vor%

Für jede der drei Bilddateien, wenn sie mit

zum Dokument hinzugefügt werden %Vor%

Sie passen das Dokument perfekt an, ohne Unterschiede für die verschiedenen DPI-Einstellungen.

    
Stewbob 12.06.2010, 02:02
quelle
9

@ Stewbobs Antwort funktioniert, aber es hängt nur beiläufig mit den Methoden der Tabelle zusammen.

Die Sache mit iTextSharp ist, dass es sich je nach verwendetem Konstruktor anders verhält. Dies wird (ärgerlicherweise) das Bild vergrößern, um die Zelle zu füllen:

%Vor%

Aber das wird das Bild in der Größe belassen, die Sie festgelegt haben (und Ausrichtung zulassen):

%Vor%

Ich weiß nicht genau, warum das so ist, es hat etwas damit zu tun, dass sich die Zelle im "Textmodus" befindet, wenn Sie das Bild im Konstruktor im Vergleich zum "zusammengesetzten Modus" hinzufügen, wenn Sie es später hinzufügen Objekt soll sich um seine eigene Ausrichtung kümmern).

Einige weitere Informationen (in Java, aber immer noch gültig) Ссылка

    
Mick Byrne 22.06.2011 23:39
quelle
2

Wenn Sie also die Größe des Bildes im PdfPCell beibehalten müssen, können Sie sich diesen Code ansehen:

%Vor%     
Alexei 18.03.2011 15:31
quelle
1

Die Funktion verfügt über eine Eigenschaft zum Anpassen des Bildes. Fügen Sie nur ein true

hinzu %Vor%     
Iván Ruisoto Alonso 27.09.2012 16:32
quelle
0

Für diejenigen, die nach der Überladung fragen:

%Vor%

anstelle von:

%Vor%     
Zak 28.03.2018 15:17
quelle

Tags und Links