iTextSharp la Création d'un Pied de Page # de #

Je suis en train de créer un pied de page sur chacune des pages dans un document PDF à l'aide de iTextSharp dans le format de la Page # de # suivant le tutoriel sur le iText pages et le livre. Si je reçois une exception sur la cb.SetFontAndSize(helv, 12); - la référence d'objet n'est pas définie à un objet. Quelqu'un peut-il voir le problème? Le Code est ci-dessous.

Grâce,
Rob

public class MyPdfPageEventHelpPageNo : iTextSharp.text.pdf.PdfPageEventHelper
{
protected PdfTemplate total;
protected BaseFont helv;
private bool settingFont = false;
public override void OnOpenDocument(PdfWriter writer, Document document)
{
total = writer.DirectContent.CreateTemplate(100, 100);
total.BoundingBox = new Rectangle(-20, -20, 100, 100);
helv = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
}
public override void OnEndPage(PdfWriter writer, Document document)
{
PdfContentByte cb = writer.DirectContent;
cb.SaveState();
string text = "Page " + writer.PageNumber + " of ";
float textBase = document.Bottom - 20;
float textSize = 12; //helv.GetWidthPoint(text, 12);
cb.BeginText();
cb.SetFontAndSize(helv, 12);
if ((writer.PageNumber % 2) == 1)
{
cb.SetTextMatrix(document.Left, textBase);
cb.ShowText(text);
cb.EndText();
cb.AddTemplate(total, document.Left + textSize, textBase);
}
else
{
float adjust = helv.GetWidthPoint("0", 12);
cb.SetTextMatrix(document.Right - textSize - adjust, textBase);
cb.ShowText(text);
cb.EndText();
cb.AddTemplate(total, document.Right - adjust, textBase);
}
cb.RestoreState();
}
public override void OnCloseDocument(PdfWriter writer, Document document)
{
total.BeginText();
total.SetFontAndSize(helv, 12);
total.SetTextMatrix(0, 0);
int pageNumber = writer.PageNumber - 1;
total.ShowText(Convert.ToString(pageNumber));
total.EndText();
}
}
  • Est OnDocumentLoad réellement appelé avant OnPageEnd?
  • lorsque vous avancez dans le code, est helv défini correctement?
  • Je cherchais trop profondément en elle et manqué à l'évidence, vous êtes tous les deux à droite, OnOpenDocument n'est pas appelé ainsi en OnEndPage helv n'est rien. J'ai tracé à dos une stupide erreur que j'ai été la construction de la page de l'événement trop tard dans mon processus principal. Merci pour votre aide les gars.
InformationsquelleAutor | 2009-06-23