This tutorial shows how to combine multiple PDF files into a single PDF document in a WinForms C# application using the LEADTOOLS SDK.
Overview | |
---|---|
Summary | This tutorial shows how to merge PDF files in a WinForms C# application. |
Completion Time | 30 minutes |
Visual Studio Project | Download tutorial project (9 KB) |
Platform | Windows WinForms C# Application |
IDE | Visual Studio 2022 |
Development License | Download LEADTOOLS |
Get familiar with the basic steps of creating a project by reviewing the Add References and Set a License tutorial, before working on the Merge PDF Files to Single PDF File - WinForms C# tutorial.
Start with a copy of the project created in the Add References and Set a License tutorial. If you do not have that project, follow the steps in that tutorial to create it.
The references needed depend upon the purpose of the project. References can be added by one or the other of the following two methods (but not both).
If using NuGet references, this tutorial requires the following NuGet package:
Leadtools.Pdf
If using local DLL references, the following DLLs are needed.
The DLLs are located at <INSTALL_DIR>\LEADTOOLS23\Bin\net
:
Leadtools.dll
Leadtools.Codecs.dll
Leadtools.Core.dll
Leadtools.Pdf.dll
For a complete list of which DLL files are required for your application, refer to Files to be Included With Your Application.
The License unlocks the features needed for the project. It must be set before any toolkit function is called. For details, including tutorials for different platforms, refer to Setting a Runtime License.
There are two types of runtime licenses:
Note: Adding LEADTOOLS NuGet and local references and setting a license are covered in more detail in the Add References and Set a License tutorial.
With the project created, the references added, and the license set, coding can begin.
In the Solution Explorer, double-click Form1.cs
to display the Designer. Open the Toolbox and double-click MenuStrip to add a menu to the form. Add a &File dropdown menu item to the new MenuStrip. Add three menu items to the dropdown, &Add, &Merge, and &Clear. Adding & will underline the first letter of the menu item. Respectively, leave the new items' names as addToolStripMenuItem
, mergeToolStripMenuItem
, and clearToolStripMenuItem
.
Add a ListBox control by double-clicking on the ListBox tool in the Toolbox. Set the name of the ListBox to sourceFilesListBox
and set its Dock property to Fill.
Double-click the Add..
menu item to create its event handler, this will also bring up the code behind Form1
. Add the using
statements below to the top.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Pdf;
Add the following code in the addToolStripMenuItem_Click
event handler that will allow the application to add a PDF file to the list of files to be merged:
private void addToolStripMenuItem_Click(object sender, System.EventArgs e)
{
try
{
using (OpenFileDialog dlg = new())
{
dlg.Filter = "PDF Documents|*.pdf|All Files|*.*";
dlg.InitialDirectory = @"C:\LEADTOOLS23\Resources\Images";
if (dlg.ShowDialog(this) == DialogResult.OK)
{
sourceFilesListBox.Items.Add(dlg.FileName);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
In the Solution Explorer, double-click Form1.cs
to go back to the Designer. Double-click the Merge menu item to create its event handler, this will also bring up the code behind Form1
. Add the following code in the mergeToolStripMenuItem_Click
event handler to merge all the listed PDF files into a single PDF that is then saved to the file path you indicate to the SaveFileDialog
.
private void mergeToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
if (sourceFilesListBox.Items.Count < 2)
{
MessageBox.Show("Please have at least 2 or more PDF files in order to merge them");
return;
}
else
{
// Save output location
SaveFileDialog saveDlg = new();
saveDlg.Filter = "PDF Document|*.pdf";
if (saveDlg.ShowDialog(this) != DialogResult.OK)
return;
// Create PDFFile object using first item
PDFFile pdfFile = new(sourceFilesListBox.Items[0].ToString());
// Output remainder ListBox to string array
string[] sourceFiles = new string[sourceFilesListBox.Items.Count-1];
for (int i = 1; i < sourceFilesListBox.Items.Count; i++)
{
sourceFiles[i-1] = sourceFilesListBox.Items[i].ToString();
}
// Merge PDF files
using (RasterCodecs codecs = new())
{
// Specify location of PDF Runtime Files
codecs.Options.Pdf.InitialPath = @"C:\LEADTOOLS23\Bin\Dotnet4\x64";
// Merge
pdfFile.MergeWith(sourceFiles, saveDlg.FileName);
MessageBox.Show("Merged Output PDF saved to " + saveDlg.FileName);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
Note: Alternatively, you can copy the
Leadtools.Pdf.Utilities.dll
component to the application build output instead of setting the path to the runtime file in theInitialPath
property.
Go back to the form's Designer and double-click the Clear menu item to create its event handler. Add the following code in it to clear the list of loaded files:
private void clearToolStripMenuItem_Click(object sender, EventArgs e)
{
sourceFilesListBox.Items.Clear();
}
Run the project by pressing F5, or by selecting Debug -> Start Debugging.
If the steps were followed correctly, the application runs and the form should appear. To test, follow the steps below:
Click on File -> Add... to bring up the OpenFileDialog.
Select a PDF file to be loaded.
Repeat steps 1 and 2 till all the PDF files to merge are loaded.
Click on File -> Merge to bring up the SaveFileDialog.
Select the output file path and click Save to merge all the PDFs to a single PDF file.
This tutorial showed how to merge PDF files using the PDFFile
class.