Controls how empty pages are treated during the conversion.
[SerializableAttribute()]
[DataContractAttribute()]
public enum DocumentConverterEmptyPageMode
0 |
None |
Empty page will be added to the document and no checking is performed.
|
1 |
Skip |
Skip empty pages. The page is considered not empty if the annotations container for page contains items.
|
2 |
SkipIgnoreAnnotations |
Skip empty pages. The page is considered empty even if the annotations container for page contains items.
|
Refer to EmptyPageMode for more information.
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:\LEADTOOLS22\Resources\Images\EmptyPageTestInput.tif";
var outputDocumentFile1 = @"C:\LEADTOOLS22\Resources\Images\NoSkipping.tif";
var outputDocumentFile2 = @"C:\LEADTOOLS22\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:\LEADTOOLS22\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);
}
}
}
}
}
}
}