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.
Vous devez vous connecter pour publier un commentaire.
Voici un bon exemple pour l'ajout de total le numéro de page pour chaque page.
MODIFIER: Voici le code à partir de ce site dans le cas où il ne va jamais loin:
Et le code applicable à joindre:
Le code ci-dessus est correcte, le seul problème est, il n'est pas en cours d'exécution. Pour que u faut créer une instance à l'endroit où vous avez écrit un code pour le Téléchargement de PDf.
Exemple:
écrivain signifie PDF writer(un exemple).
Dans chaque méthode vous remplacer, vous pouvez ajouter un appel à sa méthode de base: