Hi I'm trying to apply headers and footers to documents, they're almost perfect, but they're clipping a little bit along the bottom for some reason, I've included my code and the document. I've tried modifying the media box, adjusting the draw image of the form, changing the rect for the headergraphics onto the form, I'm not sure what else to try, they're both the same file going in, but when I use XPdfForm to add to the form it removes all the whitespace, which I was going for, but crops a little to closely
Code:
public PDFConcatenate(PackageToJoin pdfPackage)
{
MemoryStream outStream = new MemoryStream();
CreateBaseDocument(pdfPackage).Save(outStream, false);
ReturnFile = outStream.ToArray();
DocName = pdfPackage.Name + ".pdf";
}
private PdfDocument CreateBaseDocument(PackageToJoin package)
{
OutputDocument = new PdfDocument();
CreateHeaderAndFooter(package);
foreach (var chunk in package.Chunks)
{
InputDocument = PdfReader.Open(new MemoryStream(chunk.Data), PdfDocumentOpenMode.Import);
int count = InputDocument.PageCount;
for (int idx = 0; idx < count; idx++)
{
PdfPage page = InputDocument.Pages[idx];
OutputDocument.AddPage(page);
AddHeaderFooter(OutputDocument.Pages[OutputDocument.PageCount-1], chunk.UseHeaderFooter);
}
}
return OutputDocument;
}
private void AddHeaderFooter(PdfPage page, HeaderAndFooter headersAndFooters)
{
XGraphics gfx = XGraphics.FromPdfPage(page);
if (headersAndFooters.ApplyHeader)
{
XRect adjustedHeaderRect = new XRect(5, 5, HeaderRect.Width,
HeaderRect.Height);
gfx.DrawImage(Header, adjustedHeaderRect);
}
if (headersAndFooters.ApplyFooter)
{
XRect adjustedFooterRect = new XRect(5, page.Height - FooterRect.Height - 5, FooterRect.Width,
FooterRect.Height);
gfx.DrawImage(Footer, adjustedFooterRect);
}
gfx.Dispose();
}
private void CreateHeaderAndFooter(PackageToJoin package)
{
//assign header form
var rawHeader = PdfReader.Open(new MemoryStream(package.HeaderData), PdfDocumentOpenMode.Import);
PdfPage page = rawHeader.Pages[0];
HeaderRect = new XRect(0,0, page.Width, page.Height);
Header = new XForm(OutputDocument, page.Width, page.Height);
XGraphics headGraphics = XGraphics.FromForm(Header);
headGraphics.DrawImage(XPdfForm.FromStream(new MemoryStream(package.HeaderData)), HeaderRect);
headGraphics.Dispose();
//assign footer form
var rawFooter = PdfReader.Open(new MemoryStream(package.FooterData), PdfDocumentOpenMode.Import);
page = rawFooter.Pages[0];
FooterRect = new XRect(0,0, page.Width, page.Height);
Footer = new XForm(OutputDocument, page.Width, page.Height);
XGraphics footGraphics = XGraphics.FromForm(Footer);
footGraphics.DrawImage(XPdfForm.FromStream(new MemoryStream(package.FooterData)), FooterRect);
footGraphics.Dispose();
}