Example
This example creates a test document of four pages with the second page empty (all white). It will then use the document converter to generate an
output document with and without skipping empty pages.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Document.Writer;
using Leadtools.Svg;
using LeadtoolsExamples.Common;
using Leadtools.Document;
using Leadtools.Caching;
using Leadtools.Annotations.Engine;
using Leadtools.Ocr;
using Leadtools.Document.Converter;
using Leadtools.Annotations.Rendering;
public static void Run()
{
var inputDocumentFile = @"C:\LEADTOOLS21\Resources\Images\EmptyPageTestInput.tif";
var outputDocumentFile1 = @"C:\LEADTOOLS21\Resources\Images\NoSkipping.tif";
var outputDocumentFile2 = @"C:\LEADTOOLS21\Resources\Images\SkippingEmptyPages.tif";
// Create a multi-page TIF file that is 4 pages with the second page empty
CreateTestDocumentFile(inputDocumentFile);
using (DocumentConverter documentConverter = new DocumentConverter())
{
documentConverter.Diagnostics.EnableTrace = true;
// Make sure the options are set to not skip empty pages
documentConverter.Options.EmptyPageMode = DocumentConverterEmptyPageMode.None;
// Create a job to convert the input document to the first output file and run it
var jobData = DocumentConverterJobs.CreateJobData(inputDocumentFile, outputDocumentFile1, RasterImageFormat.CcittGroup4);
jobData.JobName = "No skipping empty pages";
var job = documentConverter.Jobs.CreateJob(jobData);
documentConverter.Jobs.RunJob(job);
// Now, tell the document converter to skip empty pagess
documentConverter.Options.EmptyPageMode = DocumentConverterEmptyPageMode.SkipIgnoreAnnotations;
// And create a job to convert the input document to the second output file and run it
jobData = DocumentConverterJobs.CreateJobData(inputDocumentFile, outputDocumentFile2, RasterImageFormat.CcittGroup4);
jobData.JobName = "Skipping empty pages";
job = documentConverter.Jobs.CreateJob(jobData);
documentConverter.Jobs.RunJob(job);
Console.WriteLine("Finished, checking the number of pages");
// Show the number of pages in the first and second document, should report 4 and 3
using (var rasterCodecs = new RasterCodecs())
{
var pageCount = rasterCodecs.GetTotalPages(outputDocumentFile1);
Console.WriteLine("First job did not skip any pages and produced {0} pages, should be 4", pageCount);
pageCount = rasterCodecs.GetTotalPages(outputDocumentFile2);
Console.WriteLine("Second job skipped the empty pages and produced {0} pages, should be 3", pageCount);
}
}
}
private static void CreateTestDocumentFile(string fileName)
{
var pageTemplateFile = @"C:\LEADTOOLS21\Resources\Images\Ocr{0}.tif";
using (var rasterCodecs = new RasterCodecs())
{
rasterCodecs.Options.RasterizeDocument.Load.Resolution = 300;
CodecsSavePageMode savePageMode = CodecsSavePageMode.Overwrite;
for (var pageNumber = 1; pageNumber <= 4; pageNumber++)
{
if (pageNumber != 2)
{
using (var rasterImage = rasterCodecs.Load(string.Format(pageTemplateFile, pageNumber), 1))
{
// Add it to the output document
rasterCodecs.Save(rasterImage, fileName, RasterImageFormat.CcittGroup4, 1, 1, 1, -1, savePageMode);
savePageMode = CodecsSavePageMode.Append;
if (pageNumber == 1)
{
// Save an empty page (all white) the same size as the previous page
using (var emptyPage = RasterImage.Create(
rasterImage.Width,
rasterImage.Height,
rasterImage.BitsPerPixel,
rasterImage.XResolution,
RasterColor.FromKnownColor(RasterKnownColor.White)))
{
rasterCodecs.Save(emptyPage, fileName, RasterImageFormat.CcittGroup4, 1, 1, 1, -1, savePageMode);
}
}
}
}
}
}
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Document.Writer
Imports Leadtools.Svg
Imports Leadtools.Document
Imports Leadtools.Caching
Imports Leadtools.Annotations.Engine
Imports Leadtools.Ocr
Imports Leadtools.Document.Converter
Imports LeadtoolsDocumentConverterExamples.LeadtoolsExamples.Common
Public Shared Sub Run()
Dim inputDocumentFile As String = "C:\LEADTOOLS21\Resources\Images\EmptyPageTestInput.tif"
Dim outputDocumentFile1 As String = "C:\LEADTOOLS21\Resources\Images\NoSkipping.tif"
Dim outputDocumentFile2 As String = "C:\LEADTOOLS21\Resources\Images\SkippingEmptyPages.tif"
' Create a multi-page TIF file that is 4 pages with the second page empty
CreateTestDocumentFile(inputDocumentFile)
Using documentConverter As New DocumentConverter()
documentConverter.Diagnostics.EnableTrace = True
' Make sure the options are set to not skip empty pages
documentConverter.Options.EmptyPageMode = DocumentConverterEmptyPageMode.None
' Create a job to convert the input document to the first output file and run it
Dim jobData As DocumentConverterJobData = DocumentConverterJobs.CreateJobData(inputDocumentFile, outputDocumentFile1, RasterImageFormat.CcittGroup4)
jobData.JobName = "No skipping empty pages"
Dim job As DocumentConverterJob = documentConverter.Jobs.CreateJob(jobData)
documentConverter.Jobs.RunJob(job)
' Now, tell the document converter to skip empty pagess
documentConverter.Options.EmptyPageMode = DocumentConverterEmptyPageMode.SkipIgnoreAnnotations
' And create a job to convert the input document to the second output file and run it
jobData = DocumentConverterJobs.CreateJobData(inputDocumentFile, outputDocumentFile2, RasterImageFormat.CcittGroup4)
jobData.JobName = "Skipping empty pages"
job = documentConverter.Jobs.CreateJob(jobData)
documentConverter.Jobs.RunJob(job)
Console.WriteLine("Finished, checking the number of pages")
' Show the number of pages in the first and second document, should report 4 and 3
Using rasterCodecs As New RasterCodecs()
rasterCodecs.Options.RasterizeDocument.Load.Resolution = 300
Dim pageCount As Integer = rasterCodecs.GetTotalPages(outputDocumentFile1)
Console.WriteLine("First job did not skip any pages and produced {0} pages, should be 4", pageCount)
pageCount = rasterCodecs.GetTotalPages(outputDocumentFile2)
Console.WriteLine("Second job skipped the empty pages and produced {0} pages, should be 3", pageCount)
End Using
End Using
End Sub
Private Shared Sub CreateTestDocumentFile(fileName As String)
Dim pageTemplateFile As String = "C:\LEADTOOLS21\Resources\Images\Ocr{0}.tif"
Using rasterCodecs As New RasterCodecs()
rasterCodecs.Options.RasterizeDocument.Load.Resolution = 300
Dim savePageMode As CodecsSavePageMode = CodecsSavePageMode.Overwrite
For pageNumber As Integer = 1 To 4
If pageNumber <> 2 Then
Using rasterImage As RasterImage = rasterCodecs.Load(String.Format(pageTemplateFile, pageNumber), 1)
' Add it to the output document
rasterCodecs.Save(rasterImage, fileName, RasterImageFormat.CcittGroup4, 1, 1, 1, -1, savePageMode)
savePageMode = CodecsSavePageMode.Append
If pageNumber = 1 Then
' Save an empty page (all white) the same size as the previous page
Using emptyPage As RasterImage = RasterImage.Create(
rasterImage.Width,
rasterImage.Height,
rasterImage.BitsPerPixel,
rasterImage.XResolution,
RasterColor.FromKnownColor(RasterKnownColor.White))
rasterCodecs.Save(emptyPage, fileName, RasterImageFormat.CcittGroup4, 1, 1, 1, -1, savePageMode)
End Using
End If
End Using
End If
Next
End Using
End Sub