SvgSortOptions Class
Summary
Options to control how to sort the elements in this SVG document.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public class SvgSortOptions
@interface LTSvgSortOptions : NSObject
public class SvgSortOptions
public ref class SvgSortOptions
Example
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 file
string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Leadtools.pdf");
string dstFileName = Path.Combine(LEAD_VARS.ImagesDir, "Example.txt");
// SVG sort callback handler
SvgSortElementsCallback sortCallback = (callabackDocument, info, userData) =>
{
StreamWriter writer = userData as StreamWriter;
// Is it text?
SvgTextData textData = info.TextData;
if (textData != null)
{
// Yes, print it to the console
writer.Write(textData.Text + " ");
// See if its end of line
var 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 files
codecs.Options.RasterizeDocument.Load.Resolution = 300;
// get the number of pages
int pageCount = codecs.GetTotalPages(srcFileName);
// Create a writer for the output text file
using (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 elements
CodecsLoadSvgOptions 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 that
if (!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 file
System.Diagnostics.Process.Start(dstFileName);
}
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.PrintStream;
import java.nio.file.FileVisitOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
import org.junit.*;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import static org.junit.Assert.*;
import leadtools.*;
import leadtools.codecs.*;
import leadtools.document.writer.*;
import leadtools.svg.*;
public void svgDocumentSortElementsExample() {
String LEAD_VARS_ImagesDir = "C:\\LEADTOOLS23\\Resources\\Images";
// The source PDF file
String srcFilePath = combine(LEAD_VARS_ImagesDir, "Leadtools_pdf.svg");
String dstFilePath = combine(LEAD_VARS_ImagesDir, "Example.txt");
// SVG sort callback handler
SvgSortElementsCallback sortCallback = (callbackDocument, info, userData) -> {
try {
FileOutputStream writer = (FileOutputStream) userData;
PrintStream printWriter = new PrintStream(writer);
// Is it text?
SvgTextData textData = info.getTextData();
if (textData.getText() != null) {
// Yes, print it to the console
printWriter.print(textData.getText() + " ");
// See if its end of line
int length = textData.getText().length();
if ((textData.getCharacterFlags()[length - 1]
& SvgTextCharacterFlags.END_OF_LINE.getValue()) == SvgTextCharacterFlags.END_OF_LINE.getValue())
printWriter.println();
}
writer.flush();
} catch (Exception e) {
assertFalse(true);
e.printStackTrace();
}
return true;
};
RasterCodecs codecs = new RasterCodecs();
// Set 300 as the default value for loading document files
codecs.getOptions().getRasterizeDocument().getLoad().setResolution(300);
// get the number of pages
int pageCount = codecs.getTotalPages(srcFilePath);
// Create a stream for the output text file
try (FileOutputStream fos = new FileOutputStream(dstFilePath)) {
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 elements
CodecsLoadSvgOptions loadSvgOptions = new CodecsLoadSvgOptions();
loadSvgOptions.setDropImages(true);
loadSvgOptions.setDropShapes(true);
SvgDocument svgDocument = (SvgDocument) codecs.loadSvg(srcFilePath, pageNumber, loadSvgOptions);
// Sort requires a flat document, so check for that
if (!svgDocument.isFlat())
svgDocument.flat(null);
if (!svgDocument.getBounds().isValid())
svgDocument.calculateBounds(false);
SvgSortOptions sortOptions = new SvgSortOptions();
sortOptions.setExtractText(SvgExtractText.WORD.getValue());
sortOptions.setSortFlags(SvgSortFlags.DEFAULT.getValue());
System.out.println("Text for page " + pageNumber);
svgDocument.sortElements(sortOptions, sortCallback, fos);
}
} catch (Exception exception) {
assertFalse(true);
exception.printStackTrace();
}
System.out.println(sortCallback);
}