|
C# Image to PDF Library
How to convert multiple images (jpg, png, gif, bmp) to PDF using c# in asp.net, winforms
C# Create PDF from Raster Images, .NET Graphics and REImage File with XDoc.PDF Library for C#.NET Class
In this tutorial, you learn how to convert image files to PDF document programmatically using C#
- Create PDF file from jpg, bitmap (bmp), png, gif raster image files
- Convert image to editable PDF document with OCR support
- Adjust image position on PDF page and zooms
- Print multiple images in one PDF page or multiple pages
- Easy to enable image to PDF conversion functions in ASP.NET web app, and Windows application using C# .NET Core or framework
How to convert JPG, PNG, BMP images to PDF programmatically using C#
- Best and professional C# image to PDF converter SDK for Visual Studio .NET
- Batch convert PDF documents from multiple image formats, including Jpg, Png, Bmp, Gif, Tiff, Bitmap, .NET Graphics, and REImage
- Support .NET WinForms, ASP.NET MVC in IIS, ASP.NET Ajax, Azure cloud service, DNN (DotNetNuke), SharePoint
- Create PDF from images in both .NET WinForms and ASP.NET application
- .NET converter control for exporting high quality PDF from images in C#.NET
- Component for combining multiple image formats into one or multiple PDF file in C#.NET
-
More PDF conversion:
convert pdf to word using c#,
convert pdf to html c# online,
c# convert word to pdf free,
pdf to image c# example,
c# convert pdf to svg,
convert pdf to tiff c#.
- Any piece of area is able to be cropped and pasted to PDF page
- Source codes are available to use in C#.NET class
- Free library is access to downloading and using in .NET framework
If you want to turn PDF file into image file format in C# application, then RasterEdge XDoc.PDF for .NET can also help with this. It enables you to build a PDF file with
one or more images. Various image forms are supported which include Png, Jpeg, Bmp, and Gif raster images, .NET Graphics, as well as REImage (an intermediate class).
Some C# programming demos are illustrated below.
C# convert single Raster Image file to PDF
#region convert single Raster Image file to PDF(file to file)
internal static void image2Pdf()
{
String inputFilePath = @"C:\demo.jpg";
String outputFilePath = @"C:\output.pdf";
Bitmap bmp = new Bitmap(inputFilePath);
List<Bitmap> images = new List<Bitmap>();
images.Add(bmp);
PDFDocument doc = new PDFDocument(images.ToArray());
doc.Save(outputFilePath);
}
#endregion
#region convert single Raster Image file to PDF(Stream to Stream)
internal static void imageStream2PdfStream()
{
String inputFilePath = @"C:\demo.jpg";
byte[] arr = File.ReadAllBytes(inputFilePath);
MemoryStream inputStream = new MemoryStream(arr);
Bitmap bmp = new Bitmap(inputStream);
List<Bitmap> images = new List<Bitmap>();
images.Add(bmp);
PDFDocument doc = new PDFDocument(images.ToArray());
MemoryStream outputStream = new MemoryStream();
doc.SaveToStream(outputStream);
}
#endregion
Convert image file to editable PDF document using C#
If you need get editable PDF document from an image file, you need OCR SDK to extract text from image files.
using RasterEdge.XDoc.Converter;
String inputFilePath = @"C:\1.png";
String outputFilePath = @"C:\output.pdf";
DocumentSaveOption ops = new DocumentSaveOption(FileType.DOC_PDF);
// The folder that contains '.traineddata' files.
ops.OcrSourcePath = @"C:\Source";
// Convert to editable PDF file.
ops.IsSearchable = true;
ImageConverter.ToDocument(inputFilePath, outputFilePath, ops);
Image position and placement on the PDF page
Using XDoc.PDF C# library, you can easily print the image to any position on the PDF page or crop the page to fit the image width and height.
You can also adjust the image zoom on the page with or without original aspect ratio.
The following text and C# example source code explains how to convert JPG, PNG, bitmap image on specified PDF page with adjusted image options.
- The image is added at the top left corner of the PDF page.
- The image is added at the top right corner of the page
- The image is converted and printed at the top center of the page
- The image is placed at the center of the PDF page
- The image is added at the bottom left corner of the PDF page.
- The image is added at the bottom right corner of the page
- The image is converted and printed at the bottom center of the page
- The image is covered the whole page
- The image is covered the page with its original aspect ratio kept
- The PDF page width and height are cropped to fit the image
Top left corner of page
|
Top center of page
|
Top right corner of page
|
|
Center of page
|
|
Bottom left corner of page
|
Bottom center of page
|
Bottom right corner of page
|
Fit to page
|
Fit to page with aspect ratio kept
|
Crop page
|
Top left corner of the page
- Load the image file to be converted
- Create a new PDFDocument object with 1 new page
- Create a PDFItemOptions object to specify the image covered area on the PDF page
- Property Position to set the image corved area top left point. The top left corner of the page position value is new PointF(0, 0)
- Property Width to set the image corvered area width in pixel
- Property Height to set the image corvered area height in pixel
- Utilize the PDFImageHandler.AddImage() function the add the image to the specified area on the pdf page.
- Save the PDF file with image inserted
string inputFilePath = @"W:\\Projects\\Test-Input\\RasterEdge.com\\NetCoreSDK-PDF\\sample-image.JPG";
string outputFilePath = @"W:\\Projects\\Test-Output\\RasterEdge.com\\NetCoreSDK-PDF\\convert-image-to-pdf-top-left-corner.pdf";
// Step 1: Load image.
Bitmap img = new Bitmap(inputFilePath);
// Step 2: Create an empty PDF file with single page by the specified page size (in inch).
PDFDocument doc = PDFDocument.Create(1, 8.5F, 11.0F);
// Step 3: set the boundary of the image in the page.
// Unit: in pixel (96 dpi)
PDFItemOptions imageItemOps = new PDFItemOptions();
// set the image top left corder position on the PDF page
imageItemOps.Position = new PointF(0, 0);
// Calculate the image size in inch.
float imageWidthInInch = img.Width / img.HorizontalResolution;
float imageHeightInInch = img.Height / img.VerticalResolution;
// Set image size in the page (in pixels).
// The library will automatically convert image width and height in pixel into inch using 96 dpi.
imageItemOps.Width = imageWidthInInch * 96F;
imageItemOps.Height = imageHeightInInch * 96F;
// Step 4: add image to the target page
PDFImageHandler.AddImage(doc, 0, img, imageItemOps);
// Step 5: output the new document
doc.Save(outputFilePath);
Top center of the page
string inputFilePath = @"W:\\Projects\\Test-Input\\RasterEdge.com\\NetCoreSDK-PDF\\sample-image.png";
string outputFilePath = @"W:\\Projects\\Test-Output\\RasterEdge.com\\NetCoreSDK-PDF\\convert-image-to-pdf-top-center-corner.pdf";
// Step 1: Load image.
Bitmap img = new Bitmap(inputFilePath);
// Step 2: Create an empty PDF file with single page by the specified page size (in inch).
PDFDocument doc = PDFDocument.Create(1, 8.5F, 11.0F);
// Step 3: set the boundary of the image in the page.
// Unit: in pixel (96 dpi)
PDFItemOptions imageItemOps = new PDFItemOptions();
// Calculate the image size in inch.
float imageWidthInInch = img.Width / img.HorizontalResolution;
float imageHeightInInch = img.Height / img.VerticalResolution;
// Set image size in the page (in pixels).
// The library will automatically convert image width and height in pixel into inch using 96 dpi.
imageItemOps.Width = imageWidthInInch * 96F;
imageItemOps.Height = imageHeightInInch * 96F;
// set the image top left corder position on the PDF page
float pageWidth = 8.5F * 96;
float imagePosiLeft = pageWidth / 2 - imageItemOps.Width / 2;
float imagePosiTop = 0;
imageItemOps.Position = new PointF(imagePosiLeft, imagePosiTop);
// Step 4: add image to the target page
PDFImageHandler.AddImage(doc, 0, img, imageItemOps);
// Step 5: output the new document
doc.Save(outputFilePath);
Top right corner of the page
string inputFilePath = @"W:\\Projects\\Test-Input\\RasterEdge.com\\NetCoreSDK-PDF\\sample-image.png";
string outputFilePath = @"W:\\Projects\\Test-Output\\RasterEdge.com\\NetCoreSDK-PDF\\convert-image-to-pdf-top-right-corner.pdf";
// Step 1: Load image.
Bitmap img = new Bitmap(inputFilePath);
// Step 2: Create an empty PDF file with single page by the specified page size (in inch).
PDFDocument doc = PDFDocument.Create(1, 8.5F, 11.0F);
// Step 3: set the boundary of the image in the page.
// Unit: in pixel (96 dpi)
PDFItemOptions imageItemOps = new PDFItemOptions();
// Calculate the image size in inch.
float imageWidthInInch = img.Width / img.HorizontalResolution;
float imageHeightInInch = img.Height / img.VerticalResolution;
// Set image size in the page (in pixels).
// The library will automatically convert image width and height in pixel into inch using 96 dpi.
imageItemOps.Width = imageWidthInInch * 96F;
imageItemOps.Height = imageHeightInInch * 96F;
// set the image top left corder position on the PDF page
float pageWidth = 8.5F * 96;
float imagePosiLeft = pageWidth - imageItemOps.Width;
float imagePosiTop = 0;
imageItemOps.Position = new PointF(imagePosiLeft, imagePosiTop);
// Step 4: add image to the target page
PDFImageHandler.AddImage(doc, 0, img, imageItemOps);
// Step 5: output the new document
doc.Save(outputFilePath);
Center of the page
string inputFilePath = @"W:\\Projects\\Test-Input\\RasterEdge.com\\NetCoreSDK-PDF\\sample-image.png";
string outputFilePath = @"W:\\Projects\\Test-Output\\RasterEdge.com\\NetCoreSDK-PDF\\convert-image-to-pdf-center.pdf";
// Step 1: Load image.
Bitmap img = new Bitmap(inputFilePath);
// Step 2: Create an empty PDF file with single page by the specified page size (in inch).
PDFDocument doc = PDFDocument.Create(1, 8.5F, 11.0F);
// Step 3: set the boundary of the image in the page.
// Unit: in pixel (96 dpi)
PDFItemOptions imageItemOps = new PDFItemOptions();
// Calculate the image size in inch.
float imageWidthInInch = img.Width / img.HorizontalResolution;
float imageHeightInInch = img.Height / img.VerticalResolution;
// Set image size in the page (in pixels).
// The library will automatically convert image width and height in pixel into inch using 96 dpi.
imageItemOps.Width = imageWidthInInch * 96F;
imageItemOps.Height = imageHeightInInch * 96F;
// set the image top left corder position on the PDF page
float pageWidth = 8.5F * 96;
float pageHeight = 11.0F * 96;
float imagePosiLeft = pageWidth / 2 - imageItemOps.Width / 2;
float imagePosiTop = pageHeight / 2 - imageItemOps.Height / 2;
imageItemOps.Position = new PointF(imagePosiLeft, imagePosiTop);
// Step 4: add image to the target page
PDFImageHandler.AddImage(doc, 0, img, imageItemOps);
// Step 5: output the new document
doc.Save(outputFilePath);
Bottom left corner of the page
string inputFilePath = @"W:\\Projects\\Test-Input\\RasterEdge.com\\NetCoreSDK-PDF\\sample-image.png";
string outputFilePath = @"W:\\Projects\\Test-Output\\RasterEdge.com\\NetCoreSDK-PDF\\convert-image-to-pdf-bottom-left-corner.pdf";
// Step 1: Load image.
Bitmap img = new Bitmap(inputFilePath);
// Step 2: Create an empty PDF file with single page by the specified page size (in inch).
PDFDocument doc = PDFDocument.Create(1, 8.5F, 11.0F);
// Step 3: set the boundary of the image in the page.
// Unit: in pixel (96 dpi)
PDFItemOptions imageItemOps = new PDFItemOptions();
// Calculate the image size in inch.
float imageWidthInInch = img.Width / img.HorizontalResolution;
float imageHeightInInch = img.Height / img.VerticalResolution;
// Set image size in the page (in pixels).
// The library will automatically convert image width and height in pixel into inch using 96 dpi.
imageItemOps.Width = imageWidthInInch * 96F;
imageItemOps.Height = imageHeightInInch * 96F;
// set the image top left corder position on the PDF page
float pageWidth = 8.5F * 96;
float pageHeight = 11.0F * 96;
float imagePosiLeft = 0;
float imagePosiTop = pageHeight - imageItemOps.Height;
imageItemOps.Position = new PointF(imagePosiLeft, imagePosiTop);
// Step 4: add image to the target page
PDFImageHandler.AddImage(doc, 0, img, imageItemOps);
// Step 5: output the new document
doc.Save(outputFilePath);
Bottom center of the page
string inputFilePath = @"W:\\Projects\\Test-Input\\RasterEdge.com\\NetCoreSDK-PDF\\sample-image.png";
string outputFilePath = @"W:\\Projects\\Test-Output\\RasterEdge.com\\NetCoreSDK-PDF\\convert-image-to-pdf-bottom-center-corner.pdf";
// Step 1: Load image.
Bitmap img = new Bitmap(inputFilePath);
// Step 2: Create an empty PDF file with single page by the specified page size (in inch).
PDFDocument doc = PDFDocument.Create(1, 8.5F, 11.0F);
// Step 3: set the boundary of the image in the page.
// Unit: in pixel (96 dpi)
PDFItemOptions imageItemOps = new PDFItemOptions();
// Calculate the image size in inch.
float imageWidthInInch = img.Width / img.HorizontalResolution;
float imageHeightInInch = img.Height / img.VerticalResolution;
// Set image size in the page (in pixels).
// The library will automatically convert image width and height in pixel into inch using 96 dpi.
imageItemOps.Width = imageWidthInInch * 96F;
imageItemOps.Height = imageHeightInInch * 96F;
// set the image top left corder position on the PDF page
float pageWidth = 8.5F * 96;
float pageHeight = 11.0F * 96;
float imagePosiLeft = pageWidth / 2 - imageItemOps.Width / 2;
float imagePosiTop = pageHeight - imageItemOps.Height;
imageItemOps.Position = new PointF(imagePosiLeft, imagePosiTop);
// Step 4: add image to the target page
PDFImageHandler.AddImage(doc, 0, img, imageItemOps);
// Step 5: output the new document
doc.Save(outputFilePath);
Bottom right corner of the page
string inputFilePath = @"W:\\Projects\\Test-Input\\RasterEdge.com\\NetCoreSDK-PDF\\sample-image.png";
string outputFilePath = @"W:\\Projects\\Test-Output\\RasterEdge.com\\NetCoreSDK-PDF\\convert-image-to-pdf-bottom-right-corner.pdf";
// Step 1: Load image.
Bitmap img = new Bitmap(inputFilePath);
// Step 2: Create an empty PDF file with single page by the specified page size (in inch).
PDFDocument doc = PDFDocument.Create(1, 8.5F, 11.0F);
// Step 3: set the boundary of the image in the page.
// Unit: in pixel (96 dpi)
PDFItemOptions imageItemOps = new PDFItemOptions();
// Calculate the image size in inch.
float imageWidthInInch = img.Width / img.HorizontalResolution;
float imageHeightInInch = img.Height / img.VerticalResolution;
// Set image size in the page (in pixels).
// The library will automatically convert image width and height in pixel into inch using 96 dpi.
imageItemOps.Width = imageWidthInInch * 96F;
imageItemOps.Height = imageHeightInInch * 96F;
// set the image top left corder position on the PDF page
float pageWidth = 8.5F * 96;
float pageHeight = 11.0F * 96;
float imagePosiLeft = pageWidth - imageItemOps.Width;
float imagePosiTop = pageHeight - imageItemOps.Height;
imageItemOps.Position = new PointF(imagePosiLeft, imagePosiTop);
// Step 4: add image to the target page
PDFImageHandler.AddImage(doc, 0, img, imageItemOps);
// Step 5: output the new document
doc.Save(outputFilePath);
Fit to the page
string inputFilePath = @"W:\\Projects\\Test-Input\\RasterEdge.com\\NetCoreSDK-PDF\\sample-image.png";
string outputFilePath = @"W:\\Projects\\Test-Output\\RasterEdge.com\\NetCoreSDK-PDF\\convert-image-to-pdf-fit-to-page.pdf";
// Step 1: Load image.
Bitmap img = new Bitmap(inputFilePath);
// Step 2: Create an empty PDF file with single page by the specified page size (in inch).
PDFDocument doc = PDFDocument.Create(1, 8.5F, 11.0F);
// Step 3: set the boundary of the image in the page.
// Unit: in pixel (96 dpi)
PDFItemOptions imageItemOps = new PDFItemOptions();
// set the image top left corder position on the PDF page
float pageWidth = 8.5F * 96;
float pageHeight = 11.0F * 96;
imageItemOps.Position = new PointF(0, 0);
imageItemOps.Width = pageWidth;
imageItemOps.Height = pageHeight;
// Step 4: add image to the target page
PDFImageHandler.AddImage(doc, 0, img, imageItemOps);
// Step 5: output the new document
doc.Save(outputFilePath);
Fit to the page with aspect ratio kept
string inputFilePath = @"W:\\Projects\\Test-Input\\RasterEdge.com\\NetCoreSDK-PDF\\sample-image.png";
string outputFilePath = @"W:\\Projects\\Test-Output\\RasterEdge.com\\NetCoreSDK-PDF\\convert-image-to-pdf-fit-to-page-with-aspect-ratio.pdf";
// Step 1: Load image.
Bitmap img = new Bitmap(inputFilePath);
// Step 2: Create an empty PDF file with single page by the specified page size (in inch).
PDFDocument doc = PDFDocument.Create(1, 8.5F, 11.0F);
// Step 3: set the boundary of the image in the page.
// Unit: in pixel (96 dpi)
PDFItemOptions imageItemOps = new PDFItemOptions();
// set the image top left corder position on the PDF page
float pageWidth = 8.5F * 96;
float pageHeight = 11.0F * 96;
float imageWidth = img.Width;
float imageHeight = img.Height;
float zoomWidth = pageWidth / imageWidth;
float zoomHeight = pageHeight / imageHeight;
float imagePosiTop = 0;
float imagePosiLeft = 0;
float zoomImage = zoomWidth;
if (zoomWidth > zoomHeight)
{
zoomImage = zoomHeight;
imagePosiLeft = pageWidth / 2 - imageWidth * zoomImage / 2;
}
else
{
imagePosiTop = pageHeight / 2 - imageHeight * zoomImage / 2;
}
// set target page region to add the image.
imageItemOps.Position = new PointF(imagePosiLeft, imagePosiTop);
imageItemOps.Width = imageWidth * zoomImage;
imageItemOps.Height = imageHeight * zoomImage;
// Step 4: add image to the target page
PDFImageHandler.AddImage(doc, 0, img, imageItemOps);
// Step 5: output the new document
doc.Save(outputFilePath);
Crop page
string inputFilePath = @"W:\\Projects\\Test-Input\\RasterEdge.com\\NetCoreSDK-PDF\\sample-image.png";
string outputFilePath = @"W:\\Projects\\Test-Output\\RasterEdge.com\\NetCoreSDK-PDF\\convert-image-to-pdf-crop-page.pdf";
// Step 1: Load image.
Bitmap img = new Bitmap(inputFilePath);
// Calculate the image size in inch.
float imageWidthInInch = img.Width / img.HorizontalResolution;
float imageHeightInInch = img.Height / img.VerticalResolution;
// Step 2: Create an empty PDF file with single page by the specified page size (in inch).
PDFDocument doc = PDFDocument.Create(1, imageWidthInInch, imageHeightInInch);
// Step 3: set the boundary of the image in the page.
// Unit: in pixel (96 dpi)
PDFItemOptions imageItemOps = new PDFItemOptions();
float imageWidth = imageWidthInInch * 96.0f;
float imageHeight = imageHeightInInch * 96.0f;
imageItemOps.Position = new PointF(0, 0);
imageItemOps.Width = imageWidth;
imageItemOps.Height = imageHeight;
// Step 4: add image to the target page
PDFImageHandler.AddImage(doc, 0, img, imageItemOps);
// Step 5: output the new document
doc.Save(outputFilePath);
How to convert two or multiple images to PDF using C#?
The following C# code shows how to convert list of images into a PDF file. One image will be displayed in one PDF page.
You could also convert multiple images in a pdf page. View full C# source code at
How to convert multiple JPG, bmp images in single PDF page using C#
#region convert two or multiple Raster Image files to PDF (batch convert and sinle thread)
internal static void imageFilesToPdfFiles()
{
String inputDirectory = @"C:\input\";
String outputDirectory = @"C:\output\";
String[] files = Directory.GetFiles(inputDirectory, "*.*");
foreach (String filePath in files)
{
int startIdx = filePath.LastIndexOf("\\");
int endIdx = filePath.LastIndexOf(".");
String docName = filePath.Substring(startIdx + 1, endIdx - startIdx - 1);
Bitmap bmp = new Bitmap(filePath);
List<Bitmap> images = new List<Bitmap>();
images.Add(bmp);
PDFDocument doc = new PDFDocument(images.ToArray());
doc.Save(outputDirectory + docName);
}
}
#endregion
C# combine multiple Raster Image files into PDF
#region combine multiple Raster Image files into PDF
internal static void combineMultipleImagesIntoPdf()
{
String filePath1 = @"C:\demo1.jpg";
String filePath2 = @"C:\demo1.bmp";
String filePath3 = @"C:\demo1.png";
Bitmap image1 = new Bitmap(filePath1);
Bitmap image2 = new Bitmap(filePath2);
Bitmap image3 = new Bitmap(filePath3);
List<Bitmap> images = new List<Bitmap>();
images.Add(image1);
images.Add(image2);
images.Add(image3);
PDFDocument doc = new PDFDocument(images.ToArray());
doc.Save(@"C:\output.pdf");
}
#endregion
C# insert Raster Image file into pdf document, and create a new PDF file
#region insert Raster Image file into pdf document, and create a new PDF file
internal static void insertImageToPdf()
{
String filePath = @"C:\demo.png";
Bitmap bmp = new Bitmap(filePath);
List<Bitmap> images = new List<Bitmap>();
images.Add(bmp);
PDFDocument pdf = new PDFDocument(images.ToArray());
int pageCount = pdf.GetPageCount();
List<BasePage> pages = new List<BasePage>();
for (int i = 0; i < pageCount; i++)
{
pages.Add(pdf.GetPage(i));
}
String outputPdf = @"C:\output.pdf";
PDFDocument desDoc = new PDFDocument(outputPdf);
int insertLocation = 2;
desDoc.InsertPages(pages.ToArray(), insertLocation);
desDoc.Save(@"C:\desDocumcnet.pdf");
}
#endregion
|