Gets a value that indicates whether this document supports getting a page in SVG format.
public virtual bool IsSvgSupported {get;}
true if this document supports getting a page as SVG; otherwise, false.
Use IsSvgSupported to determine whether an SVG (Scalable Vector Graphics) representation of a page can be obtained by calling GetSvg. If IsSvgSupported is true, then when GetSvg is called the method will return an SVG document ready to be used. If IsSvgSupported is false, the GetSvg will return null.
The GetText method uses IsSvgSupported to determine how this method works, as follows:
If IsSvgSupported is true, then DocumentPage.GetSvg is called internally and the text is parsed from the SVG document directly. OCR is not used.
If IsSvgSupported is false, then DocumentPage.GetImage is called instead and the text is parsed using the OCR engine instance set in DocumentPageText.OcrEngine. SVG is not used.
Override this behavior using the DocumentText.TextExtractionMode property.
The framework uses logic similar to RasterCodecs.CanLoadSvg in order to determine SVG support. Currently, SVG support is provided by the following types of documents:
All document formats supported by LEADTOOLS. This includes Microsoft Office formats (DOCX/DOC, XLSX/XLS, PPTX/PPT), HTML, Text, RTF, IOCA/MODCA, ePub, and many more. For any format that returns true for the value of CodecsImageInfo.Document.IsDocumentFile, the value of IsSvgViewingPreferred will be true as well.
Vector file formats such DXF, DWG, DWF. For any format that returns true for the value of IsVectorFile, the value of IsSvgSupported will be true as well.
SVG files (naturally). The value of IsSvgViewingPreferred will also be true.
For Acrobat PDF documents, both PDFDocument.GetContentType and IsSvgSupported are used to determine whether the document has any text data that can be parsed, as follows:
If the return value is PDFContentType.Text, then the PDF document is "searchable" and contains some type of data. IsSvgSupported will be true and the value of IsSvgViewingPreferred will be set to true as well.
If the return value is PDFContentType.ImageOverText, then the PDF document is searchable with an overlay image on top of each page. IsSvgSupported will be true, since the document has text than can be parsed. The value of IsSvgViewingPreferred will be set to false, however, since viewing a page from this document as SVG will not have any benefit because the SVG data is hidden behind an overlay image.
If the return value is PDFContentType.Image, then the PDF document is pure raster with no other content besides an image for each page (for example, a scanned document). IsSvgSupported will be false since the document does not have any text than can be parsed. The value of IsSvgViewingPreferred will be set to false as well.
Note that when the value of IsSvgSupported is false, then the value of IsSvgViewingPreferred will always be false, too.
Note that if this is a virtual document with children, then the value of this property will be true if any of the child documents reports true, and will be false if the document either has no children or if all the children report false.
Also, in a virtual document, it is best to use DocumentPage.IsSvgSupported instead of the global document version to determine if a certain page has support for SVG. The page simply calls IsSvgSupported and returns the value from its original document. The LEADTOOLS Document Viewer uses this value to determine if a page has support for SVG.
using Leadtools;
using Leadtools.Caching;
using Leadtools.Document;
public void DocumentExample()
{
var cache = GetCache();
var policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTime.Now + new TimeSpan(0, 0, 1);
policy.SlidingExpiration = new TimeSpan(0, 0, 1);
var options = new LoadDocumentOptions();
options.CachePolicy = policy;
options.Cache = cache;
if(options.Cache == null)
{
options.Cache = DocumentFactory.Cache;
}
string documentId = null;
using (var document = DocumentFactory.LoadFromFile(Path.Combine(LEAD_VARS.ImagesDir, "Leadtools.pdf"), options))
{
document.GetDocumentFileName();
document.IsReadOnly = false;
document.AutoDeleteFromCache = false;
// DocumentImages reference
document.Images.DefaultBitsPerPixel = 24;
Console.WriteLine(document.Images.IsResolutionsSupported);
Console.WriteLine(document.Images.IsSvgSupported);
// Check if the document has a stream in memory
if (document.HasStream)
{
// Get the document stream
document.GetDocumentStream();
}
// Indicate whether the document is using the cache or not
Console.WriteLine(document.HasCache);
//Indicate if the document was downloaded
Console.WriteLine(document.IsDownloaded);
// Gets a value that determines whether the document structure is supported
Console.WriteLine(document.IsStructureSupported);
// Output metadata values (DocumentMetadata reference)
Console.WriteLine(document.Metadata.Values.Count);
// Get the Mime type of the document
Console.WriteLine(document.MimeType);
// Parse document structure data (DocumentStructure reference)
foreach(DocumentBookmark bookmark in document.Structure.Bookmarks)
{
bookmark.Title = null;
bookmark.FontStyles = DocumentFontStyles.Normal;
document.Structure.Bookmarks.Add(bookmark);
Console.WriteLine(bookmark.Children);
Console.WriteLine(bookmark.Target);
Console.WriteLine(document.Structure.Bookmarks.Count);
Console.WriteLine(document.Structure.IsParsed);
Console.WriteLine(document.Structure.ParseBookmarks);
}
document.Structure.Parse();
// Get the document URI
Console.WriteLine(document.Uri);
// Get each DocumentPage object (DocumentPage & DocumentPages reference)
foreach (DocumentPage page in document.Pages)
{
// Get the page as a raster image at the specified resolution
page.GetImage(0);
// Get the page as an Svg with specified options
page.GetSvg(null);
// Flip this page horizontally
page.Reverse();
// Use this method to add an array of links for this page
page.SetLinks(null);
page.IsLinksModified = false;
page.Resolution = 0;
page.ViewPerspective = RasterViewPerspective.TopLeft;
page.SetLinks(page.GetLinks());
Console.WriteLine($"Page Number: {page.PageNumber}, Original PageNumber: {page.OriginalPageNumber}, Size of the page: {page.Size}");
}
PrintOutDocumentInfo(document);
documentId = document.DocumentId;
document.SaveToCache();
}
System.Threading.Thread.Sleep(2000);
var loadFromCacheOptions = new LoadFromCacheOptions();
loadFromCacheOptions.Cache = cache;
loadFromCacheOptions.DocumentId = documentId;
using (var document = DocumentFactory.LoadFromCache(loadFromCacheOptions))
{
if (null == document)
{
Console.WriteLine("Cached document was expired and deleted!");
}
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}