Add Custom Images To PDF Document - C#
BarCode SDK sample in C# demonstrating ‘Add Custom Images To PDF Document’
Program.cs
using System.Diagnostics;
using System.Drawing;
using Bytescout.BarCode;
// This example demostrates adding of barcode together with some custom images (e.g. target marks) to PDF document.
// Also shows the manual calculation of barcode size from inches to pixels and document units (points).
// Task: place Code39 barcode of 2" x 3/8" size at 2" from top-right corner and two target marks at 1" from top-right and bottom-left corners.
namespace AddBarcodeToPdfDocument
{
class Program
{
static void Main(string[] args)
{
// Create Barcode instance and set it up
Barcode barcode = new Barcode("demo", "demo");
barcode.Symbology = SymbologyType.Code39;
barcode.Value = "00090112";
barcode.DrawCaption = true;
barcode.CaptionFont = new Font("Courier", 12f, FontStyle.Bold, GraphicsUnit.Point);
barcode.DrawQuietZones = false;
barcode.ResolutionX = barcode.ResolutionY = 300; // High resolution for better quality on document scaling and printing.
// Compute barcode image dimension from inches to pixels at 300 DPI:
int barHeight = (int) (3f/8*300); // = 3/8" * 300 DPI = height of bars
int captionHeight = (int) barcode.CaptionFont.GetHeight(barcode.ResolutionY);
int captionGap = (int) (1f/8*300); // = 1/8" gap
int barcodeImageWidth = 2*300; // = 2" * 300 DPI = width of barcode
int barcodeImageHeight = barHeight + captionGap + captionHeight + 28; // 28 = height of watermark text (painted in Trial version only)
// Get final barcode image:
barcode.BarHeight = barHeight;
barcode.FitInto(barcodeImageWidth, barcodeImageHeight, UnitOfMeasure.Pixel);
Image barcodeImage = barcode.GetImage();
// Arrays of images and points to apply to PDF document
Image[] images = new Image[3];
Point[] points = new Point[3];
// Compute coordinates of barcode image and target marks ar 72 DPI
// (page size is 8.5" x 11", PDF document resolution is always 72 DPI):
int x = (int) (8.5f*72 - 2*72 - barcodeImageWidth/300f*72); // = page width - 2" - barcodeImageWidth at 72 DPI = X coordinate to put the barcode image
int y = 2*72; // = 2" - Y coordinate to put the barcode image
// Put barcode image into array
images[0] = barcodeImage;
points[0] = new Point(x, y);
// Load target mark image.
// TargetMark.png is 1/8" 300 DPI image (38x38 pixels)
Image targetMarkImage = Image.FromFile("TargetMark.png");
// Coordinates of top-right target mark
x = (int)(8.5f*72 - 1*72 - 1f/8*72); // = pageWidth - 1" - target mark width (1/8") at 72DPI = X coordinate to put the barcode image
y = 1*72; // = 1" - Y coordinate to put the barcode image
// Put first target mark image into array
images[1] = targetMarkImage;
points[1] = new Point(x, y);
// Coordinates of bottom-left target mark
x = 1*72; // = 1"
y = (int)(11f*72 - 1*72 - 1f/8*72); // = page height - 1" - target mark height (1/8") at 72DPI
// Put second target mark image into array
images[2] = targetMarkImage;
points[2] = new Point(x, y);
// Draw images on all PDF document pages.
barcode.DrawImagesToPDF("wikipedia.pdf", -1 /*all pages*/, images, points, "result.pdf");
// Cleanup
barcodeImage.Dispose();
targetMarkImage.Dispose();
barcode.Dispose();
// Open the result document in default associated application
Process.Start("result.pdf");
}
}
}