Q: I'm trying to combine pdf file. The original pdf file doesn't have
page number on the each sheet. When I combine those pdf files and I
want to put page number on each sheet physically.
Is there any way to do it?
-----
A: To add a page number you would need to add a new text element to
required pages. For a quick intro on the topic of 'stamping' PDF pages
you may want to take a look at the following FAQ: http://www.pdftron.com/net/faq.html#how_watermark
Also the following PDFNet SDK Knowledge Base articles are relevant:
Q: I'm trying to use function below. Using this one, I can get the
"page number" located in center on the page. Do you know how I can
change the location of the text on the page? (I try to locate "page
number" upper left corner for this.)
PageIterator itr = pdfdoc.PageBegin();
PageIterator end = pdfdoc.PageEnd();
int PageCount = 0;
for (; itr != end; itr.Next()) {
PageCount = PageCount + 1;
Page page = itr.Current();
writer.Begin(page, false);
Element element = eb.CreateTextBegin(myFont, font_sz);
writer.WriteElement(element);
element = eb.CreateTextRun(text + Convert.ToString
(PageCount));
GState gs = element.GetGState();
gs.SetFillColorSpace(fill_cs);
gs.SetFillColor(fill_color);
// Position the text run
Matrix2D mtx = new Matrix2D(rot_mtx);
// scale the stamp relative to standard 'letter'
page.
double scale_factor = page.GetPageWidth() / 612.0;
mtx.Scale(scale_factor, scale_factor);
mtx.Translate((page.GetPageWidth() -
element.GetTextLength() * Math.Cos(rot_angle *deg2rad)) / 2,
(page.GetPageHeight() + element.GetTextLength() * Math.Sin(rot_angle
*deg2rad)) / 2);
element.SetTextMatrix(mtx);
writer.WriteElement(element);
writer.WriteElement(eb.CreateTextEnd());
writer.End();
}
}
}
-----
A: I can update the line with mtx.Translate(). Something along the
following lines:
try
{
using (PDFDoc doc = new PDFDoc(input_path + input_filename))
using (Stamper s = new Stamper(Stamper.SizeType.e_font_size, 24, 0))
{
doc.InitSecurityHandler();
s.SetAlignment(Stamper.HorizontalAlignment.e_horizontal_right, Stamper.VerticalAlignment.e_vertical_bottom);
s.SetPosition(18, 18, false); // position quarter inch from bottom right corner
s.SetFontColor(new ColorPt(1, 0, 0));
PageIterator itr = doc.GetPageIterator();
for (; itr.HasNext(); itr.Next())
{
int pg_num = itr.GetPageNumber();
s.StampText(doc, String.Format("{0}", pg_num), new PageSet(pg_num));
}