2016-07-07 18 views
1

Ich habe ein seltsames Problem mit iText & PdfTemplate.iText PdfTemplate Schriftgröße Problem

Ich benutze PdfTemplate & Image, um die Gesamtzahl der Seiten auf den Seitenfuß zu drucken. Ich erstelle eine PdfTemplate, erstelle ein Bild aus der Vorlage und lege das Bild in einen Chunk, der Chunk wird dann zur Tabelle/Phrase/Absatz hinzugefügt, egal welche Komponente die Elter ist.

Dieser Chunk zurückgegeben wird dann auf der Seite hinzugefügt (in eine Phrase zum Beispiel). Das erstellte PdfTemplate wird in einer Liste gespeichert, um es später zu erhalten.

Dann in der pageEventHelper (OnCloseDocument), fülle ich die Vorlage mit der Gesamtseitenzahl mit Hilfe der ColumnText, wie folgt aus:

PdfTemplateRecord rec = pagenums.get(i); 
PdfTemplate tmp = rec.getTemplate(); 
Font font = CreatorHelper.getCurrentFont(rec.getFontContext()); 
if (font == null) 
{ 
    font = new Font(defaultFont, 8f); 
} 

ColumnText columnText = new ColumnText(tmp); 
columnText.setSimpleColumn(new Phrase(Integer.toString(pagenum), font), 0, -tmp.getHeight(), tmp.getWidth(), 0, 0, Element.ALIGN_LEFT); 
columnText.setUseAscender(false); 
try 
{ 
    columnText.go(); 
} 
catch (DocumentException e) 
{ 
    log.error("Failed to render total page number", e); 
} 

Alles funktioniert ganz gut, bis auf zwei Dinge:

1.) Wenn Sie die setSimpleColumn sorgfältig überprüfen, musste ich die Y-Position auf -tmp.getHeight() setzen (zB -10) statt 0. Wenn ich das Y auf 0 setze, wird der Text direkt über dem gezeichnet Linie ... Wahrscheinlich habe ich etwas mit der Bildhinzufügung vermasselt, oder so, aber weiß nicht

2.) Ich habe Probleme mit der Schriftgröße. Seltsam, aber wenn die Schriftgröße größer als 10f ist, sind der normale Text und der Text in der Vorlage identisch. Wenn die Schriftgröße jedoch kleiner als 10f ist, wird der Text in der Vorlage kleiner. Hier einige Bild

when font size is 6f

when font size is 8f

when font size is 9f

when font size if 10f

when font size if 14f

(Bilder in dieser Reihenfolge, Schriftgröße: 6f, 8f, 9f, 10f, 14f, die "Seite 1 von" ist die Nr rmal Text, und die Zahl nach dem "of" kommt mit der Vorlage)

Wie Sie mit 9f Schriftgröße sehen können, ist der Vorlagentext etwas kleiner als der normale Text, aber nach 10f sind die beiden Texte identisch.

Ich suchte, ob es eine Regel zwischen dem PdfTemplate und den Elementen bezüglich Schriftgröße gibt, aber nichts gefunden hat.

Jede Hilfe ist appretiated!

Danke!

+0

Leider lässt Ihr Code das Problem nicht einfach reproduzieren, da es viele unbekannte Methoden gibt, die Sie verwenden, und es ist auch nicht ersichtlich, wie Sie Ihren Inhalt der Seite hinzufügen. Und ich würde annehmen, dass die Ursache für Ihr Problem auf einige Eigenheiten dieser unbekannten Codeelemente zurückzuführen ist. – mkl

+0

Obwohl eine große Veränderung, konnten Sie nicht einfach zu zwei Durchgängen auf Ihrem PDF wechseln? Erster Durchlauf macht das PDF, zweiter setzt die Seitenzahlen? Es vereinfacht die Dinge wirklich. Siehe [dritter Codeblock hier] (http://stackoverflow.com/a/9845722/231316) –

+0

Hi! Ich kann es nicht in zwei Durchgängen tun, da ich nicht weiß, wo genau die ganzen Seiten herkommen. Das PDF wird aus einer Vorlage (XML) generiert, und die totalPages können überall sein (sogar im Dokumentkörper). @mkl: Nun, ich kann nicht den ganzen Generator-Code einfügen, da es ungefähr 2000 Zeilen ist, aber es gibt nichts besonderes an diesen "unbekannten" Methoden, vielleicht hast du etwas dagegen? CreatorHelper.getCurrentFont (rec.getFontContext()); – user1536873

Antwort

0

Leider eine alte Post wieder zu beleben: Dies in Bezug auf inkonsistent Schriftgröße ist die Seitennummer [Seite 1 von 1]

OP Kommentar des Absatzes Entfernen eine gleiche Schriftgröße zu bekommen nicht für mich arbeiten (auf einem ähnlichen Bildskalierungsproblem).

Bezug nehmend auf this post here zeigt, was schief gehen könnte.

ABER: die erste PDF (ohne Vorlage) enthält eine "eingebettete Untergruppe" von der font "Georgia" (Ansi-Codierung). Das ist die richtige Art, eine Schriftart zu verwenden. jedoch Die zweite PDF enthält: - eine eingebettete Untergruppe von Georgia (Ansi) - eine eingebettete Untergruppe von Georgia (CID/Identitäts H) - Georgien nicht eingebettet (Ansi) - Georgia-Bold nicht eingebettet (Ansi)

die beiden ersten Schriften sind in Ordnung, aber wie die beiden folgenden Schriftarten sind nicht eingebettet, mein Adobe Reader hatte für die Schriftart Georgia on my Betriebssystem zu suchen.

Hoffe das hilft :)

P.S. Beim Hinzufügen von Inhalt zur Vorlage kann die Schriftart festgelegt werden, während die Phrase hinzugefügt wird, die dem Inhalt der Vorlage eine unabhängige Schriftart zuweist.