Export PDF using ExportProvider
PdfDocumentSource allows you to enumerate the supported export formats for a document using the SupportedExportProviders property. The property returns a collection of ExportProvider classes that contain information about the supported formats, and can be used to create the corresponding export filter by using the NewExporter method of ExportProvider class.
Different document types support different sets of export formats, therefore enumerating and creating the export filters via SupportedExportProviders yields the correct results.
To export PDF using supported exporters
- Drag and drop Button and ComboBox controls from the Toolbox on the design view.
- Switch to code view and add the following namespaces in the code view.
Imports C1.WPF.Document
Imports C1.WPF.Document.Export
Imports Microsoft.Win32
Imports C1.WPF
using C1.WPF.Document;
using C1.WPF.Document.Export;
using Microsoft.Win32;
using C1.WPF;
- Add a PDF file to the project. In our case, we have used PDF file named DefaultDocument.pdf from the product sample.
- Initialize the instances of C1PDFDocumentSource and SaveFileDialog class using the following code:
Dim pds As New C1PdfDocumentSource()
Dim dialog As New SaveFileDialog()
C1PdfDocumentSource pds = new C1PdfDocumentSource();
SaveFileDialog dialog = new SaveFileDialog();
- Load the PDf file into the object of C1PdfDocumentSource using the LoadFromFile method.
pds.LoadFromFile("..\..\DefaultDocument.pdf")
pds.LoadFromFile(@"..\..\DefaultDocument.pdf");
- Add the following code below InitializeComponent() method to get the list of supported exporters using SupportedExportProviders property.
Dim supportedProviders = pds.SupportedExportProviders
For Each sep As var In supportedProviders
cbExporter.Items.Add(New C1ComboBoxItem() With { _
Key .Content = [String].Format("Export to {0}...", sep.FormatName), _
Key .Tag = sep _
})
Next
var supportedProviders = pds.SupportedExportProviders;
foreach (var sep in supportedProviders)
cbExporter.Items.Add(new C1ComboBoxItem()
{
Content = String.Format("Export to {0}...",
sep.FormatName), Tag = sep
});
- Add the following code to create a method, DoExport, for exporting the PDF to another format using Export method.
Private Sub DoExport(pds As C1PdfDocumentSource, ep As ExportProvider)
dialog.DefaultExt = "." + ep.DefaultExtension
dialog.FileName = System.IO.Path.GetFileName("Document")
dialog.Filter = [String].Format("{0} (*.{1})|*.{1}|All files (*.*)|*.*", _
ep.FormatName, ep.DefaultExtension)
Dim dr As System.Nullable(Of Boolean) = dialog.ShowDialog(Me)
If Not dr.HasValue OrElse Not dr.Value Then
Return
End If
Try
Dim exporter = ep.NewExporter()
exporter.ShowOptions = False
'Open document after export
exporter.Preview = True
'Set the output file name
exporter.FileName = dialog.FileName
'Export PDF
pds.Export(exporter)
MessageBox.Show(Me, "Document was successfully exported.", _
"Information", MessageBoxButton.OK, _
MessageBoxImage.Information)
Catch ex As Exception
MessageBox.Show(Me, ex.Message, "Error", MessageBoxButton.OK, _
MessageBoxImage.[Error])
End Try
End Sub
private void DoExport(C1PdfDocumentSource pds, ExportProvider ep)
{
dialog.DefaultExt = "." + ep.DefaultExtension;
dialog.FileName = System.IO.Path.GetFileName("Document");
dialog.Filter = String.Format("{0} (*.{1})|*.{1}|All files (*.*)|*.*",
ep.FormatName, ep.DefaultExtension);
bool? dr = dialog.ShowDialog(this);
if (!dr.HasValue || !dr.Value)
return;
try
{
var exporter = ep.NewExporter();
exporter.ShowOptions = false;
//Open document after export
exporter.Preview = true;
//Set the output file name
exporter.FileName = dialog.FileName;
//Export PDF
pds.Export(exporter);
MessageBox.Show(this, "Document was successfully exported.",
"Information", MessageBoxButton.OK,
MessageBoxImage.Information);
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message, "Error",
MessageBoxButton.OK, MessageBoxImage.Error);
}
}
- Add the following code to the button's click event to call the DoExport method that accepts the object of C1PdfDocumentSource and ExportProvider as parameters.
DoExport(pds, DirectCast(DirectCast(cbExporter.SelectedItem, C1ComboBoxItem).Tag, ExportProvider))
DoExport(pds, (ExportProvider)((C1ComboBoxItem)cbExporter.SelectedItem).Tag);