public delegate bool SvgSortElementsCallback(SvgDocument document,SvgElementInfo info,object userData)
document
The source SvgDocument.
info
Element information.
userData
Optional user data. This is the same parameter passed to SortElements.
true to continue to the next element (if any), and false to stop enumerating.
using Leadtools;using Leadtools.Codecs;using Leadtools.Drawing;using Leadtools.Forms.DocumentWriters;using Leadtools.Svg;using Leadtools.Document.Writer;public void SortElementsExample(){// The source PDF filestring srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Leadtools.pdf");string dstFileName = Path.Combine(LEAD_VARS.ImagesDir, "Example.txt");// SVG sort callback handlerSvgSortElementsCallback sortCallback = (callabackDocument, info, userData) =>{StreamWriter writer = userData as StreamWriter;// Is it text?SvgTextData textData = info.TextData;if (textData != null){// Yes, print it to the consolewriter.Write(textData.Text + " ");// See if its end of linevar len = textData.Text.Length;if ((textData.CharacterFlags[len - 1] & SvgTextCharacterFlags.EndOfLine) == SvgTextCharacterFlags.EndOfLine)writer.WriteLine();}return true;};using (var codecs = new RasterCodecs()){// Set 300 as the default value for loading document filescodecs.Options.RasterizeDocument.Load.Resolution = 300;// get the number of pagesint pageCount = codecs.GetTotalPages(srcFileName);// Create a writer for the output text fileusing (StreamWriter writer = File.CreateText(dstFileName)){for (int pageNumber = 1; pageNumber <= pageCount; pageNumber++){// Load this page as SVG, we are interested in the text only so// we will ask LEADTOOLS to skip other elementsCodecsLoadSvgOptions loadSvgOptions = new CodecsLoadSvgOptions();loadSvgOptions.DropShapes = false;loadSvgOptions.DropImages = true;loadSvgOptions.DropShapes = true;using (SvgDocument svgDocument = codecs.LoadSvg(srcFileName, pageNumber, loadSvgOptions) as SvgDocument){// Sort requires a flat document, so check for thatif (!svgDocument.IsFlat)svgDocument.Flat(null);if (!svgDocument.Bounds.IsValid)svgDocument.CalculateBounds(false);SvgSortOptions sortOptions = new SvgSortOptions();sortOptions.ExtractText = SvgExtractText.Word;sortOptions.SortFlags = SvgSortFlags.Default;Console.WriteLine("Text for page {0}", pageNumber);svgDocument.SortElements(sortOptions, sortCallback, writer);}}// Show the text fileSystem.Diagnostics.Process.Start(dstFileName);}}}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}