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
(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!
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
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) –
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