using it.stefanochizzolini.clown.documents;
using it.stefanochizzolini.clown.documents.contents.colorSpaces;
using it.stefanochizzolini.clown.documents.contents.composition;
using it.stefanochizzolini.clown.documents.contents.fonts;
using it.stefanochizzolini.clown.files;
using it.stefanochizzolini.clown.tools;
using System;
using System.Drawing;
namespace it.stefanochizzolini.clown.samples{
/**
<summary>This sample demonstrates how to simply insert (stamp) new contents on a page
of an existing document.</summary>
<remarks>Stamping is just one of the several ways PDF contents can be manipulated using
PDF Clown: contents can be inserted as (raw) data chunks, mid-level content objects,
external forms, etc.</remarks>
*/
public class PageStampingSample
: ISample
{
#region dynamic
#region interface
#region public
#region ISample
public void Run(
SampleLoader loader
)
{
// (boilerplate user choice -- ignore it)
string filePath = loader.GetPdfFileChoice("Please select a PDF file");
// 1. Open the PDF file!
File file = new File(filePath);
// Get the PDF document!
Document document = file.Document;
// 2. Stamp the document!
Stamp(document);
// (boilerplate metadata insertion -- ignore it)
loader.BuildAccessories(document,this.GetType(),"Stamping","content stamping inside an existing page");
// 3. Serialize the PDF file (again, boilerplate code -- see the SampleLoader class source code)!
loader.Serialize(file,this.GetType().Name);
}
#endregion
#endregion
#region private
private void Stamp(
Document document
)
{
// Get the first page within the document!
Page page = document.Pages[0];
// Instantiate a stamper associating it to the page!
/* NOTE: The PageStamper is optimized for dealing with pages. */
PageStamper stamper = new PageStamper(page);
StandardType1Font font = new StandardType1Font(
document,
StandardType1Font.FamilyNameEnum.Courier,
true,
false
);
SizeF pageSize = page.Size.Value;
// Stamping...
// ...foreground.
{
PrimitiveFilter foreground = stamper.Foreground;
foreground.SetFont(font,16);
foreground.SetFillColor(new DeviceRGBColor(1, 0, 0));
DateTime now = DateTime.Now;
foreground.ShowText(
now.ToString(),
new PointF(32,32)
);
foreground.ShowText(
now.ToString(),
new PointF(
pageSize.Width - 32,
pageSize.Height - 32
),
AlignmentXEnum.Right,
AlignmentYEnum.Bottom,
0
);
}
// ...background.
{
PrimitiveFilter background = stamper.Background;
background.SetFont(font,64);
background.SetFillColor(new DeviceRGBColor(.5, .5, .8));
background.ShowText(
"PDFClown",
new PointF(
pageSize.Width/2,
pageSize.Height/2
),
AlignmentXEnum.Center,
AlignmentYEnum.Middle,
45
);
}
// End the stamping!
stamper.Flush();
}
#endregion
#endregion
#endregion
}
}
|