CINXE.COM
FAQ – Solid Framework SDK
<!DOCTYPE html> <html lang="en-NZ" class="html_boxed responsive av-preloader-disabled av-default-lightbox html_header_top html_logo_left html_main_nav_header html_menu_right html_slim html_header_sticky html_header_shrinking html_mobile_menu_phone html_header_searchicon html_content_align_center html_header_unstick_top_disabled html_header_stretch html_av-overlay-side html_av-overlay-side-classic html_av-submenu-noclone html_entry_id_73 av-no-preview html_text_menu_active "> <head> <meta charset="UTF-8" /> <meta name="robots" content="index, follow" /> <!-- mobile setting --> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <!-- Scripts/CSS and wp_head hook --> <title>FAQ – Solid Framework SDK</title> <link rel='dns-prefetch' href='//s.w.org' /> <link rel="alternate" type="application/rss+xml" title="Solid Framework SDK » Feed" href="https://solidframework.net/feed/" /> <link rel="alternate" type="application/rss+xml" title="Solid Framework SDK » Comments Feed" href="https://solidframework.net/comments/feed/" /> <!-- google webfont font replacement --> <link rel='stylesheet' id='avia-google-webfont' href='//fonts.googleapis.com/css?family=Open+Sans:400,600' type='text/css' media='all'/> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.0.1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.0.1\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/solidframework.net\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.6.14"}}; !function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])?!1:!s([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([55357,56424,8205,55356,57212],[55357,56424,8203,55356,57212])}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(n=t.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='solidframework_samples-css' href='https://solidframework.net/wp-content/plugins/Samples/samples.css?ver=5.6.14' type='text/css' media='all' /> <link rel='stylesheet' id='wp-block-library-css' href='https://solidframework.net/wp-includes/css/dist/block-library/style.min.css?ver=5.6.14' type='text/css' media='all' /> <link rel='stylesheet' id='sm-style-css' href='https://solidframework.net/wp-content/plugins/wp-show-more/wpsm-style.css?ver=5.6.14' type='text/css' media='all' /> <link rel='stylesheet' id='avia-grid-css' href='https://solidframework.net/wp-content/themes/enfold/css/grid.css?ver=4.2' type='text/css' media='all' /> <link rel='stylesheet' id='avia-base-css' href='https://solidframework.net/wp-content/themes/enfold/css/base.css?ver=4.2' type='text/css' media='all' /> <link rel='stylesheet' id='avia-layout-css' href='https://solidframework.net/wp-content/themes/enfold/css/layout.css?ver=4.2' type='text/css' media='all' /> <link rel='stylesheet' id='avia-scs-css' href='https://solidframework.net/wp-content/themes/enfold/css/shortcodes.css?ver=4.2' type='text/css' media='all' /> <link rel='stylesheet' id='avia-popup-css-css' href='https://solidframework.net/wp-content/themes/enfold/js/aviapopup/magnific-popup.css?ver=4.2' type='text/css' media='screen' /> <link rel='stylesheet' id='avia-print-css' href='https://solidframework.net/wp-content/themes/enfold/css/print.css?ver=4.2' type='text/css' media='print' /> <link rel='stylesheet' id='avia-dynamic-css' href='https://solidframework.net/wp-content/uploads/dynamic_avia/enfold_child.css?ver=64c3446c93d4d' type='text/css' media='all' /> <link rel='stylesheet' id='avia-custom-css' href='https://solidframework.net/wp-content/themes/enfold/css/custom.css?ver=4.2' type='text/css' media='all' /> <link rel='stylesheet' id='avia-style-css' href='https://solidframework.net/wp-content/themes/enfold-child/style.css?ver=4.2' type='text/css' media='all' /> <link rel='stylesheet' id='cookie-notice-front-css' href='https://solidframework.net/wp-content/plugins/cookie-notice/includes/../css/front.min.css?ver=5.6.14' type='text/css' media='all' /> <script type='text/javascript' src='https://solidframework.net/wp-includes/js/jquery/jquery.min.js?ver=3.5.1' id='jquery-core-js'></script> <script type='text/javascript' src='https://solidframework.net/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.3.2' id='jquery-migrate-js'></script> <script type='text/javascript' src='https://solidframework.net/wp-content/plugins/Samples/samples.js?ver=5.6.14' id='solidframework_samples-js'></script> <script type='text/javascript' src='https://solidframework.net/wp-content/themes/enfold/js/avia-compat.js?ver=4.2' id='avia-compat-js'></script> <script type='text/javascript' id='cookie-notice-front-js-extra'> /* <![CDATA[ */ var cnArgs = {"ajaxUrl":"https:\/\/solidframework.net\/wp-admin\/admin-ajax.php","nonce":"e1be99358d","hideEffect":"fade","position":"bottom","onScroll":"0","onScrollOffset":"100","onClick":"0","cookieName":"cookie_notice_accepted","cookieTime":"2592000","cookieTimeRejected":"2592000","cookiePath":"\/","cookieDomain":"","redirection":"0","cache":"0","refuse":"0","revokeCookies":"0","revokeCookiesOpt":"automatic","secure":"1"}; /* ]]> */ </script> <script async type='text/javascript' src='https://solidframework.net/wp-content/plugins/cookie-notice/includes/../js/front.min.js?ver=2.1.3' id='cookie-notice-front-js'></script> <link rel="https://api.w.org/" href="https://solidframework.net/wp-json/" /><link rel="alternate" type="application/json" href="https://solidframework.net/wp-json/wp/v2/pages/73" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://solidframework.net/xmlrpc.php?rsd" /> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://solidframework.net/wp-includes/wlwmanifest.xml" /> <meta name="generator" content="WordPress 5.6.14" /> <link rel="canonical" href="https://solidframework.net/faq/" /> <link rel='shortlink' href='https://solidframework.net/?p=73' /> <link rel="alternate" type="application/json+oembed" href="https://solidframework.net/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fsolidframework.net%2Ffaq%2F" /> <link rel="alternate" type="text/xml+oembed" href="https://solidframework.net/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fsolidframework.net%2Ffaq%2F&format=xml" /> <script type="text/javascript">var _sf_startpt=(new Date()).getTime()</script> <link rel="profile" href="http://gmpg.org/xfn/11" /> <link rel="alternate" type="application/rss+xml" title="Solid Framework SDK RSS2 Feed" href="https://solidframework.net/feed/" /> <link rel="pingback" href="https://solidframework.net/xmlrpc.php" /> <!--[if lt IE 9]><script src="https://solidframework.net/wp-content/themes/enfold/js/html5shiv.js"></script><![endif]--> <link rel="icon" href="https://solidframework.net/wp-content/uploads/2017/11/sd-logo.png" type="image/png"> <link rel="icon" href="https://solidframework.net/wp-content/uploads/2020/09/soliddocuments-favicon-32x32-1.png" sizes="32x32" /> <link rel="icon" href="https://solidframework.net/wp-content/uploads/2020/09/soliddocuments-favicon-32x32-1.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://solidframework.net/wp-content/uploads/2020/09/soliddocuments-favicon-32x32-1.png" /> <meta name="msapplication-TileImage" content="https://solidframework.net/wp-content/uploads/2020/09/soliddocuments-favicon-32x32-1.png" /> <!-- Debugging Info for Theme support: Theme: Enfold Version: 4.2 Installed: enfold AviaFramework Version: 4.6 AviaBuilder Version: 0.9.5 - - - - - - - - - - - ChildTheme: Enfold Child ChildTheme Version: 1.0 ChildTheme Installed: enfold ML:256-PU:13-PLA:12 WP:5.6.14 Updates: enabled --> <style type='text/css'> @font-face {font-family: 'entypo-fontello'; font-weight: normal; font-style: normal; src: url('https://solidframework.net/wp-content/themes/enfold/config-templatebuilder/avia-template-builder/assets/fonts/entypo-fontello.eot?v=3'); src: url('https://solidframework.net/wp-content/themes/enfold/config-templatebuilder/avia-template-builder/assets/fonts/entypo-fontello.eot?v=3#iefix') format('embedded-opentype'), url('https://solidframework.net/wp-content/themes/enfold/config-templatebuilder/avia-template-builder/assets/fonts/entypo-fontello.woff?v=3') format('woff'), url('https://solidframework.net/wp-content/themes/enfold/config-templatebuilder/avia-template-builder/assets/fonts/entypo-fontello.ttf?v=3') format('truetype'), url('https://solidframework.net/wp-content/themes/enfold/config-templatebuilder/avia-template-builder/assets/fonts/entypo-fontello.svg?v=3#entypo-fontello') format('svg'); } #top .avia-font-entypo-fontello, body .avia-font-entypo-fontello, html body [data-av_iconfont='entypo-fontello']:before{ font-family: 'entypo-fontello'; } </style> </head> <body id="top" class="page-template-default page page-id-73 boxed open_sans cookies-not-set" itemscope="itemscope" itemtype="https://schema.org/WebPage" > <div id='wrap_all'> <header id='header' class='all_colors header_color light_bg_color av_header_top av_logo_left av_main_nav_header av_menu_right av_slim av_header_sticky av_header_shrinking av_header_stretch av_mobile_menu_phone av_header_searchicon av_header_unstick_top_disabled av_bottom_nav_disabled av_header_border_disabled' role="banner" itemscope="itemscope" itemtype="https://schema.org/WPHeader" > <div id='header_main' class='container_wrap container_wrap_logo'> <div class='container av-logo-container'><div class='inner-container'><span class='logo'><a href='https://solidframework.net/'><img height='100' width='300' src='https://solidframework.net/wp-content/uploads/2023/02/Solid-Framework-X-Apryse-logo-300x101.png' alt='Solid Framework SDK' /></a></span><nav class='main_menu' data-selectname='Select a page' role="navigation" itemscope="itemscope" itemtype="https://schema.org/SiteNavigationElement" ><div class="avia-menu av-main-nav-wrap"><ul id="avia-menu" class="menu av-main-nav"><li id="menu-item-888" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-top-level menu-item-top-level-1"><a href="https://solidframework.net/what-solidframework-does/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Why Solid Framework?</span><span class="avia-menu-fx"><span class="avia-arrow-wrap"><span class="avia-arrow"></span></span></span></a> <ul class="sub-menu"> <li id="menu-item-372" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/what-solidframework-does/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">What Solid Framework Does</span></a></li> <li id="menu-item-2524" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/what-is-so-special-about-solid-framework/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Features</span></a></li> <li id="menu-item-2721" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/solid-ocr-an-overview-what-we-focus-on-and-why-we-are-great/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Solid OCR – An overview</span></a></li> <li id="menu-item-463" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/versions/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">SDK Versions</span></a></li> <li id="menu-item-258" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/customers/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">What Our Customers Say</span></a></li> <li id="menu-item-1180" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/case-study-workshare/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Case Study – Workshare</span></a></li> <li id="menu-item-257" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/company/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Solid Documents</span></a></li> </ul> </li> <li id="menu-item-1412" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children menu-item-top-level menu-item-top-level-2"><a href="https://solidframework.net/documentation-2/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Documentation</span><span class="avia-menu-fx"><span class="avia-arrow-wrap"><span class="avia-arrow"></span></span></span></a> <ul class="sub-menu"> <li id="menu-item-264" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/release-notes/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Release Notes</span></a></li> <li id="menu-item-1980" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/complete-projects/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Sample Projects</span></a></li> <li id="menu-item-2168" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/samples/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Samples</span></a></li> <li id="menu-item-267" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/tutorials/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Tutorials and Videos</span></a></li> <li id="menu-item-2458" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/technical-notes/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Technical Notes</span></a></li> <li id="menu-item-261" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-73 current_page_item"><a href="https://solidframework.net/faq/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">FAQ</span></a></li> <li id="menu-item-2841" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/sample-files/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Sample Files</span></a></li> <li id="menu-item-260" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/export-compliance/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Export Compliance</span></a></li> <li id="menu-item-2376" class="menu-item menu-item-type-custom menu-item-object-custom"><a href="https://solidframework.net/wp-content/uploads/2021/07/Solid-Documents-Third-Party-Software-Notices-2021.pdf" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Third Party Software Notices</span></a></li> </ul> </li> <li id="menu-item-1419" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-top-level menu-item-top-level-3"><a href="https://solidframework.net/technical-support/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Support</span><span class="avia-menu-fx"><span class="avia-arrow-wrap"><span class="avia-arrow"></span></span></span></a> <ul class="sub-menu"> <li id="menu-item-356" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/technical-support/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Technical Support</span></a></li> <li id="menu-item-1188" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/support-turn-around/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Support Turn-around</span></a></li> <li id="menu-item-1916" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/contact-us/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Contact Us</span></a></li> </ul> </li> <li id="menu-item-1054" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-top-level menu-item-top-level-4"><a href="https://solidframework.net/purchase/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Purchase</span><span class="avia-menu-fx"><span class="avia-arrow-wrap"><span class="avia-arrow"></span></span></span></a> <ul class="sub-menu"> <li id="menu-item-1053" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/pricing-and-licensing/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Pricing and Licensing</span></a></li> <li id="menu-item-2375" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/no-refund-policy/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">‘No Refund’ Policy</span></a></li> </ul> </li> <li id="menu-item-1138" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-top-level menu-item-top-level-5"><a href="https://solidframework.net/developer-portal-licenses/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">My Account</span><span class="avia-menu-fx"><span class="avia-arrow-wrap"><span class="avia-arrow"></span></span></span></a> <ul class="sub-menu"> <li id="menu-item-1118" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/developer-portal-licenses/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Licenses and Unlock Codes</span></a></li> <li id="menu-item-1763" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://solidframework.net/downloads/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Downloads</span></a></li> <li id="menu-item-1726" class="menu-item menu-item-type-custom menu-item-object-custom"><a href="https://www.soliddocuments.com/privacy.htm" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Privacy Policy</span></a></li> </ul> </li> <li id="menu-item-search" class="noMobile menu-item menu-item-search-dropdown menu-item-avia-special"> <a href="?s=" data-avia-search-tooltip=" <form action="https://solidframework.net/" id="searchform" method="get" class=""> <div> <input type="submit" value="" id="searchsubmit" class="button avia-font-entypo-fontello" /> <input type="text" id="s" name="s" value="" placeholder='Search' /> </div> </form>" aria-hidden='true' data-av_icon='' data-av_iconfont='entypo-fontello'><span class="avia_hidden_link_text">Search</span></a> </li><li class="av-burger-menu-main menu-item-avia-special "> <a href="#"> <span class="av-hamburger av-hamburger--spin av-js-hamburger"> <span class="av-hamburger-box"> <span class="av-hamburger-inner"></span> <strong>Menu</strong> </span> </span> </a> </li></ul></div></nav></div> </div> <!-- end container_wrap--> </div> <div class='header_bg'></div> <!-- end header --> </header> <div id='main' class='all_colors' data-scroll-offset='88'> <div class='main_color container_wrap_first container_wrap fullsize' ><div class='container' ><main role="main" itemprop="mainContentOfPage" class='template-page content av-content-full alpha units'><div class='post-entry post-entry-type-page post-entry-73'><div class='entry-content-wrapper clearfix'><section class="av_textblock_section " itemscope="itemscope" itemtype="https://schema.org/CreativeWork" ><div class='avia_textblock ' itemprop="text" ><h2>Developing software using Solid Framework</h2> </div></section> <div class="togglecontainer toggle_close_all avia-builder-el-1 el_after_av_textblock el_before_av_hr " > <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-1" class="toggler " itemprop="headline" >What operating systems does Solid Framework support?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-1-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Solid Framework comes in two flavors.</p> <h3>Native Solid Framework</h3> <p>The native version is pure C++, and runs on Windows, macOS and Linux (Ubuntu 18.04 and up CentOS 8 and up).</p> <h3>Solid Framework for .NET</h3> <p>The .NET wrapped version is a breeze to work with. It requires the .NET Framework 4.0 or later. It is not supported on Windows 9x.</p> <p>The framework has been tested on:</p> <ul> <li>Windows 10</li> <li>Windows 8</li> <li>Windows 7</li> <li>Windows Server 2016</li> <li>Windows Server 2012 R2 x64</li> <li>Windows Server 2008 R2 x64</li> </ul> <p>The Solid Framework .dll is built as an “AnyCPU” framework and automatically runs x86 or x64 native, depending on the process that loads it.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-2" class="toggler " itemprop="headline" >Is SolidFramework just for .NET?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-2-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>We offer two versions of the library – one as a .NET library, but we also supply a Native C++ DLL which can be used without .NET</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-3" class="toggler " itemprop="headline" >What version of the .NET Framework is required when developing using the .NET version of Solid Framework?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-3-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>The minimum version of .NET Framework required is 4.0.</p> <p>Later versions of .Net Framework can also be used.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-4" class="toggler " itemprop="headline" >What .NET programming languages can be used when writing software that works with Solid Framework?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-4-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Solid Framework is a CLS Compliant class library. This means that the class library only exposes features that are common across all .NET languages. For example, unsigned types and overloaded methods are not used since these features are not available in all supported languages.</p> <p>For simplicity, all the samples and documentation are in C#. The other commonly used CLS Compliant languages are:</p> <ul> <li>C#</li> <li>Visual Basic .NET</li> <li>J#</li> </ul> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-5" class="toggler " itemprop="headline" >Is it possible to use C++ to write software that includes Solid Framework?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-5-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Absolutely! Several of our customers use C++ for the web based or app based products.</p> <p>If C++ is used then .NET does not need to be available on the machine.</p> <p>There are several samples to demonstrate the use of C++ available in the Downloads part of the Solid Framework portal.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-6" class="toggler " itemprop="headline" >What are the differences between the .NET and the native C++ versions of Solid Framework <button type="button" disabled class="btn-new">NEW</button><span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-6-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Solid Framework is available in two distinct versions – a .Net version and a C++ version.</p> <p><a href="https://solidframework.net/wp-content/uploads/general/differences_between_dotnet_and_native_sdk.pdf">This document</a> describes the main differences between these versions.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-7" class="toggler " itemprop="headline" >Which versions of Visual Studio can Solid Framework be used with?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-7-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>The Solid Documents team develop using VS 2019 and we currently target the “v14” MSVC runtime (the version that shipped with VS 2015).</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-8" class="toggler " itemprop="headline" >Is it possible to use Visual C++ 6.0?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-8-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>The quick answer is that we have never tried so we don’t know.</p> <p>The longer answer is that Solid Framework makes use of some language features, for example “Shared_Ptr” and “wstring” which were added to C++ in 2011. As such we think that there may be problems using Solid Framework with VC++6.</p> <p>Having said, we deliberately do not use static linking to customer apps which makes us depend less on specific 3rd party library versions (such as the version of the MSVC runtime for example). If the customer can actually <em>compile </em>against our SolidFramework.h and SolidFramework.cpp API interface include files, then our library will work (these interface files then do version agnostic dynamic loading of the rest of our system).</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-9" class="toggler " itemprop="headline" >How do I download the Solid Framework SDK?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-9-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>The Solid Framework SDK can be downloaded using the self-service <a href="http://www.soliddocuments.com/download.htm?product=SolidFramework">Solid Framework Developer Portal</a>.</p> <p>You will need to create an account in order to access the portal.</p> <p><a title="Using the Solid Framework Developers Portal" href="http://www.soliddocuments.com/frameworksample.htm?subject=DownloadSDKfromWeb">Click here to see video tutorial on how to download the SDK</a></p> <p class="body">After completing your download place SolidFramework.dll in the source folder of your project.</p> <p class="body">Add a reference to this assembly from your project, <a title="Adding the Solid Framework SDK Reference into your Project" href="http://www.soliddocuments.com/frameworksample.htm?subject=AddingSFtoReferencesinVS">Click here to see video tutorial</a>.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-10" class="toggler " itemprop="headline" >Does Solid Framework work on Macs powered by Apple Silicon processors?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-10-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Solid Documents Ltd is a member of the Apple Developer program and we have a long history of developing for the Mac platform.</p> <p>Solid Framework works on the ARM based Apple M1 chip. Rosetta is not required.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-11" class="toggler " itemprop="headline" >What hardware factors are related to SDK processing performance and concurrency?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-11-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>The two biggest factors are number of cores and amount of memory available. Assuming a 64-bit executable, the real scale comes when converting large scanned documents: the conversion process dynamically scales both the number of threads and the number of pages being concurrently processed to maximize use of the available resources.</p> </div> </div> </div></section> </div> <div class='hr hr-default avia-builder-el-2 el_after_av_toggle_container el_before_av_textblock '><span class='hr-inner ' ><span class='hr-inner-style'></span></span></div> <section class="av_textblock_section " itemscope="itemscope" itemtype="https://schema.org/CreativeWork" ><div class='avia_textblock ' itemprop="text" ><h2></h2> <h2>Parallel Processing in Solid Framework</h2> </div></section> <div class="togglecontainer toggle_close_all avia-builder-el-4 el_after_av_textblock el_before_av_hr " > <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-12" class="toggler " itemprop="headline" >Does SDK support multi-thread calling?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-12-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>No. While Solid Framework does take advantage of multi-threaded execution for increased conversion performance, it only supports one concurrent conversion per process. The primary reasons for this architectural choice are stability and job isolation.</p> <p>A JobProcessor can be used to allow concurrent conversions on the same machine, but within different processes.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-13" class="toggler " itemprop="headline" >What is a Job Processor?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-13-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>In a service environment where the number of concurrent connections could be very large it makes sense to manage and limit the number of concurrent conversions taking place and use a queuing system to manage requests. This is what our JobProcessor architecture does on Windows (C# implementation). This architecture is strongly modelled on the original Apache web server MPM architecture for:<br /> – scaling to take advantage of available resources (adjustable but constrained number of worker processes)<br /> – managing a queue of requests (to never allow periods of high traffic to bring the service down, only the average time per conversion increases)<br /> – manage worker process health independent of main process (crashes or hangs/timeouts in worker processes only affect a single job – the one that caused the crash or hang, workers are “health recycled” – by default this happens every 100 jobs so no long-term resource leakage issues)</p> <p>This architecture is stable and well tested. It is what is behind our <a href="http://www.simplypdf.com/" target="_blank" rel="noopener" data-saferedirecturl="https://www.google.com/url?q=http://www.simplypdf.com&source=gmail&ust=1622005421835000&usg=AFQjCNE95R-hAZCc_XWcyJx9MZzBWqG5DQ">www.simplypdf.com</a> conversion service. It runs for months at a time doing 10,000s of conversions with no crashes, leakage or restarts.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-14" class="toggler " itemprop="headline" >Is it possible to limit the number of JobHandlers?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-14-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p><span style="color: #ff0000;">Solid Framework is <em>not</em> intrinsically thread safe.</span></p> <p>If parallel processing is required then we recommend using the “JobProcessor” class. This class will spin up a number of independent JobHandler processes, with each process performing a single conversion.</p> <p>The JobProcessor will queue conversion requests and allocate them to a JobHandler process when one becomes idle.</p> <p><span style="font-weight: 400;">By default, the JobProcessor will launch as many concurrent JobHandler processes as you have cores on your machine. You can restrict the number of parallel JobHandlers by setting <span style="color: #0000ff;">JobProcessor::WorkerCount. </span></span></p> <p>Typically you will wish to set the number of workers to less than the number of cores on the machine, since this will allow other tasks to continue while Solid Framework is converting files.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-15" class="toggler " itemprop="headline" >Is the JobProcessor available in the C++ version of the Framework?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-15-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>The JobProcessor class is available only within the .Net version of SolidFramework.</p> <p>However, we do have a Python based implementation that will work with the C++ version of SolidFramework, which can be used on both Windows and Linux machines.</p> </div> </div> </div></section> </div> <div class='hr hr-default avia-builder-el-5 el_after_av_toggle_container el_before_av_textblock '><span class='hr-inner ' ><span class='hr-inner-style'></span></span></div> <section class="av_textblock_section " itemscope="itemscope" itemtype="https://schema.org/CreativeWork" ><div class='avia_textblock ' itemprop="text" ><h2>Licensing</h2> </div></section> <div class="togglecontainer toggle_close_all avia-builder-el-7 el_after_av_textblock el_before_av_hr " > <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-16" class="toggler " itemprop="headline" >How do I get a Machine ID?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-16-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>The license for Solid Framework is linked to the ID of Machine on which Solid Framework is installed.</p> <p>To get the Machine ID, download the tool from the “My Account” page on solidframework.net.</p> <p>Click on “How do I get a Machine ID?” to see the download options.</p> <p><img loading="lazy" class="alignnone size-full wp-image-1889" src="https://solidframework.net/wp-content/uploads/2017/11/GettingMachineId.png" alt="" width="1272" height="708" srcset="https://solidframework.net/wp-content/uploads/2017/11/GettingMachineId.png 1272w, https://solidframework.net/wp-content/uploads/2017/11/GettingMachineId-300x167.png 300w, https://solidframework.net/wp-content/uploads/2017/11/GettingMachineId-768x427.png 768w, https://solidframework.net/wp-content/uploads/2017/11/GettingMachineId-1030x573.png 1030w, https://solidframework.net/wp-content/uploads/2017/11/GettingMachineId-705x392.png 705w, https://solidframework.net/wp-content/uploads/2017/11/GettingMachineId-450x250.png 450w" sizes="(max-width: 1272px) 100vw, 1272px" /></p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-17" class="toggler " itemprop="headline" >How do I get and use a license for Solid Framework?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-17-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p class="body">To use the features of Solid Framework, you need a license from Solid Documents. Licenses, including trial licenses, can be created using the self-service <a href="http://www.soliddocuments.com/download.htm?product=SolidFramework">Solid Framework Developer Portal</a>. These licenses depend on a machine-specific ID and there is a utility available at the Developer Portal to generate these ids.</p> <p class="body">To use the Solid Framework features you must embed the location of your license in your code <a title="Importing the Solid Framework License into Your Project" href="http://www.soliddocuments.com/frameworksample.htm?subject=EmbeddingLicense">Click here to see the video tutorial</a>.</p> <div> <pre><pre class="brush: csharp; title: ; notranslate" title=""> // Solid Framework (Professional) license License.Import(new StreamReader(@"C:\Users\Joe\Documents\Visual Studio 2010\Projects\FrameworkProject\license.xml")); </pre> </div> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-18" class="toggler " itemprop="headline" >How do I use a license for Solid Framework if the Machine ID is volatile, such as on the Cloud?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-18-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Licenses are generally associated with the ID of the machine on which Solid Framework is being used. This can cause problems if Solid Framework is deployed on the cloud, since the machine ID may change from time to time.</p> <p>Solid Framework has a mechanism for dealing with this issue, so please email us for details.</p> <p>Note that deployment to the cloud is only available for hybrid or public licences.</p> </div> </div> </div></section> </div> <div class='hr hr-default avia-builder-el-8 el_after_av_toggle_container el_before_av_textblock '><span class='hr-inner ' ><span class='hr-inner-style'></span></span></div> <section class="av_textblock_section " itemscope="itemscope" itemtype="https://schema.org/CreativeWork" ><div class='avia_textblock ' itemprop="text" ><h2>Image Processing and OCR</h2> </div></section> <div class="togglecontainer toggle_close_all avia-builder-el-10 el_after_av_textblock el_before_av_hr " > <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-19" class="toggler " itemprop="headline" >What languages does Solid OCR support?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-19-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Solid OCR directly supports 17 languages</p> <ol> <li>English</li> <li>Catalan</li> <li>Danish</li> <li>Dutch</li> <li>Finnish</li> <li>French</li> <li>German</li> <li>Italian</li> <li>Norwegian</li> <li>Polish</li> <li>Portuguese</li> <li>Romanian</li> <li>Russian</li> <li>Spanish</li> <li>Swedish</li> <li>Slovenian</li> <li>Turkish</li> </ol> <p>It uses Tesseract to provide support for a further 6 languages</p> <ol> <li>Chinese (traditional)</li> <li>Chinese (simplified)</li> <li>Japanese</li> <li>Korean</li> <li>Greek</li> <li>Hebrew</li> </ol> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-20" class="toggler " itemprop="headline" >What needs to be done to perform OCR on CJK, Greek or Hebrew Text?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-20-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>SolidFramework uses Tesseract to preform OCR on Chinese, Japanese, Korean, Greek and Hebrew language documents.</p> <p>Information about how to do this can be found in the document <a href="https://solidframework.net/wp-content/uploads/2017/11/Performing-OCR-using-Tesseract.pdf">Performing OCR using Tesseract</a>.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-21" class="toggler " itemprop="headline" >What is the focus for OCR accuracy?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-21-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>SolidFramework is primarily aimed at the reconstruction of business documents.</p> <p>As such OCR is unashamedly biased towards accurately recognising the content of such documents.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-22" class="toggler " itemprop="headline" >What is CGM?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-22-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>CGM is an abbreviation for Color Gray Mono. Originally our image processing was targeted at archiving functionality: creating small scanned pages for PDF/A archive files while preserving the page image quality as much as possible. To this end, we recognize zones of the page image based on their nature and break the page up into appropriate components. For example:</p> <ul> <li>a color photograph is extracted from the rest of the page, downsampled (typically to 150dpi) and compressed as JPEG</li> <li>for a color graphic or text heading (palette image) we resample the colors to a smaller palette (like 16 or 256 colors) and use lossless compression (think of it as a GIF or PNG)</li> <li>for monochrome text we extract as either 1 or 2 bits per pixel (anti-aliased text) and store losslessly using CCITT FAX compression</li> </ul> <p>This segmentation, selective use of lossy or lossless compression and selective downsampling allows us to build a composite image page in PDF which is far smaller than a single scanned image page would be.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-23" class="toggler " itemprop="headline" >What pre-processing does SolidOCR support?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-23-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Solid CGM also includes all the obvious pre-processing functionality required to process scanned page images.</p> <ul> <li>deskew</li> <li>auto rotate (determining dominant page text orientation)</li> <li>despeckle (“salt” and “pepper” noise removal)</li> <li>dynamic thresholding (OCR is typically a monochrome process but for that to work, we need to establish “paper” and “ink” shades and limits)</li> <li>scanner noise removal (typically black bars at the edges of pages)</li> <li>staple, punch hole and folded corner noise removal</li> <li>90 and 270 degree text component detection (minor text components not in the same orientation as the rest of the page)</li> <li>vector table detection</li> <li>vector underline removal and repair (fixing the text character descenders that the underline may have “sliced”)</li> <li>inverse text component detection (either for the whole page or for smaller text components: typically white on black text but can be any colors)</li> </ul> </div> </div> </div></section> </div> <div class='hr hr-default avia-builder-el-11 el_after_av_toggle_container el_before_av_textblock '><span class='hr-inner ' ><span class='hr-inner-style'></span></span></div> <section class="av_textblock_section " itemscope="itemscope" itemtype="https://schema.org/CreativeWork" ><div class='avia_textblock ' itemprop="text" ><h2>Miscellaneous</h2> </div></section> <div class="togglecontainer toggle_close_all avia-builder-el-13 el_after_av_textblock el_before_av_hr " > <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-24" class="toggler " itemprop="headline" >How do I get hold of columns within a document?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-24-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Columns are a property of the “Section” object.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-25" class="toggler " itemprop="headline" >How can I find the location of a piece of text on a page?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-25-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Provided that the CoreModel has been created with the <em>PdfOptions.ExposeTargetDocumentPagination</em> set to true, then it is possible to get the LayoutDocument from the CoreModel once it has been created.</p> <p>Each object within the CoreModel.Topic (except runs) has an associated Layout object. This layout object contains information about the location of the object within the document.</p> <p>To get the layout object search the LayoutDocument.FindLayoutObject (ID), where ID is the identifier of the SolidObject which can be found using SolidObject.GetID().</p> <p>For each paragraph in the CoreModel.Topic there will be a matching LayoutParagraph which provides access to the location.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-26" class="toggler " itemprop="headline" >When I try to convert a PDF to PDF/A, I get a conversion status of PdfAError, and yet conversion appears to have happened. What does this mean?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-26-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>ConversionStatus.PdfAError means “There was a problem in the source document that meant that it was not PDF/A compliant”.</p> <p>However, SolidFramework may have been able to resolve these problems to create a compliant document, in which case an output file would have been generated.</p> <p>It is thereforenecessary to check whether the ConversionResults contains a path to a file, which would indicate that conversion was able to occur.</p> <p>Typical code is as follows:</p> <pre><span style="color: #0000ff;">if</span> (res == <span style="color: #3366ff;">ConversionStatus</span>.Success || res == <span style="color: #3366ff;">ConversionStatus</span>.PdfAError) { <span style="color: #008000;">// Get the location of the generated file</span> <span style="color: #0000ff;">if</span> (conv.Results[0] != <span style="color: #0000ff;">null</span>) { <span style="color: #0000ff;">if</span> (conv.Results[0].Paths.Count == 1) { <span style="color: #0000ff;">string</span> path = conv.Results[0].Paths[0]; <span style="color: #008000;"> //Do something with the file</span> } } }</pre> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-27" class="toggler " itemprop="headline" >How do I remove tagging from a PDF file?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-27-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Tagging uses a set of standard structure types to allow page content (text, graphics and images) to be extracted and reused for other purposes.</p> <p>For example, Solid Framework uses tags, if present, to identify tables within a PDF. This can allow more accurate extraction of table data from a PDF. The problem with this is that tags are optional.</p> <p>The same textual data may be identified as a table if tags are present, but identified as ordinary text if they are absent. This causes problems if you are trying to compare apparently similar files where one is tagged and the other is not.</p> <p>Solid Framework allows tags to be removed from a PDF using the following code:</p> <pre><pre class="brush: csharp; title: ; notranslate" title=""> string taggedFile; //Path to PDF that contains tags string untaggedFile; //Path to PDF that has had tags removed. PdfDocument doc = new PdfDocument(taggedFile); doc.Open(); doc.RemoveStructTreeRoot(); doc.SaveAs(untaggedFile, SolidFramework.Plumbing.OverwriteMode.ForceOverwrite, true); </pre> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-28" class="toggler " itemprop="headline" >Why do I have more pages in my reconstructed Word document than were in the PDF?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-28-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Solid Framework is very good at reconstructing Word documents from PDF. In most situations the reconstructed document will have the same number of pages as the PDF, but there are two main situations where this is not the case because of limitations within Word.</p> <h3>Page jumps due to consecutive Odd (or Even) Page Footers.</h3> <p>Word supports headers and footers being different on odd and even pages. However, Word does <em>not</em> support an odd footer on one page being followed by a different odd footer on the following page (or indeed two consecutive even-page footers). Attempting to do so will result in Word quietly inserting an additional page, which may not be visible within Word, but will result in an increased page count, and cause the page numbers to jump as you move from one page to the next.</p> <h3>Tables as the very last item in the Document</h3> <p>Word does not allow a table to be the last item on a page. It must be followed by a new line.</p> <p>If the table ends at the very bottom of the page then the new line may result in an extra page being created.</p> <p>This problem can be resolved by editing the document and setting a very small font size for the newline character. While we could have automatically done that when Solid Framework reconstructed the document, we chose not too, since we realised that doing so would make editing the Word document difficult.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-29" class="toggler " itemprop="headline" >What does PdfDocument.SaveOptimizedAs() do?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-29-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>The PDF file structure includes a cross-reference (or XRef) table which contains links to all of the objects or elements in a file and helps in navigating the file.</p> <p>The image below shows the start of the XRef table for the PDF file that contains the documentation for PDF version 1.7.</p> <p><img loading="lazy" class="alignnone size-full wp-image-1857" src="https://solidframework.net/wp-content/uploads/2017/11/XRefTable.png" alt="" width="253" height="274" /></p> <p>If the user removes all references to an item, for example a font, an image or a page, from the PDF, then potentially the XRef table continues to hold references to, and the file continues to contain, that item even though it is no longer used. This results in a PDF file that is larger than it needs to be .</p> <p><strong>PdfDocument.SaveOptimizedAs()</strong> removes the links to, and the content of, these obsolete objects. This potentially allows the size of the file to be reduced.</p> <p>If obsolete objects are present within the file, then significant reductions in file size can be achieved. If there are no obsolete objects present, then this method will have a minor effect on file size and could even cause a small increase in file size.</p> </div> </div> </div></section> </div> <div class='hr hr-default avia-builder-el-14 el_after_av_toggle_container el_before_av_textblock '><span class='hr-inner ' ><span class='hr-inner-style'></span></span></div> <section class="av_textblock_section " itemscope="itemscope" itemtype="https://schema.org/CreativeWork" ><div class='avia_textblock ' itemprop="text" ><h2>Problem solving</h2> </div></section> <div class="togglecontainer toggle_close_all avia-builder-el-16 el_after_av_textblock avia-builder-el-last " > <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-30" class="toggler " itemprop="headline" >How do I get debugging information from Solid Framework?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-30-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Solid Framework can emit a detailed text file log during processing. This can be very useful in allowing Solid Documents to identify where a problem is occurring.</p> <p>By default no log file is created. If one is specified then it will be written to as processing occurs.</p> <p>Additional log files will be created by individual JobHandler processes if they are used. These files will have the letters “jh” and an ID included in their filename.</p> <p><strong>Note: in versions up to and including 9.2.8284, if the log file name does not end in “.txt” then all JobHandler processes will use the same log file which may cause file access contention and occasional conversion failures.</strong></p> <p>The pattern for using a log in C# is typically something like this:</p> <pre>string logPath = @"c:\test\solidframework.txt"; if (System.IO.File.Exists(logPath)) { System.IO.File.Delete(logPath); } SolidFramework.Plumbing.Logging.Instance.Path = logPath;</pre> <p>(Alternatively you can use SolidFramework.<wbr />Plumbing.Logging.Path = logPath;)</p> <p>Similarly in C++ the following code can be used.</p> <p>LPCWSTR p = L”c:/test/solidframework.txt”; SolidFramework::Platform::Plumbing::Logging::GetInstance().SetLogPath(p);</p> <p>Note: It is important to initialize Solid Framework before attempting to specify the log file.<br /> The easiest way to do this is to place this code after Importing the Solid Framework license.</p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-31" class="toggler " itemprop="headline" >Why am I getting a "BadImageFormatException"?<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-31-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Three versions of SolidFramework.dll are available for .NET</p> <p>One is specifically for 32-bit, one for 64-bit, and the third is “AnyCPU”.</p> <p>If a Visual Studio project has a different bitness to the referenced SolidFramework.dll, then the following message is shown:</p> <p><img loading="lazy" class=" wp-image-2410" src="https://solidframework.net/wp-content/uploads/2019/02/BadImageFormat.png" alt="" width="352" height="328" srcset="https://solidframework.net/wp-content/uploads/2019/02/BadImageFormat.png 455w, https://solidframework.net/wp-content/uploads/2019/02/BadImageFormat-300x280.png 300w, https://solidframework.net/wp-content/uploads/2019/02/BadImageFormat-450x419.png 450w" sizes="(max-width: 352px) 100vw, 352px" /></p> <p>The problem occurs most often if the 64-bit version SolidFramework.dll is downloaded, since the default bitness for an “AnyCPU” Visual Studio project is, unintuitively, 32-bit.</p> <h2>Solution</h2> <ol> <li>(Preferred). Download and use the AnyCPU version of SolidFramework.dll</li> <li>Change the Visual Studio project options to uncheck the default “Prefer 32-bit”</li> </ol> <p><img loading="lazy" class="alignnone wp-image-2412" src="https://solidframework.net/wp-content/uploads/2019/02/Capture_2019-02-12_10-57-52.png" alt="The Prefer 32-bit checkbox" width="366" height="232" srcset="https://solidframework.net/wp-content/uploads/2019/02/Capture_2019-02-12_10-57-52.png 909w, https://solidframework.net/wp-content/uploads/2019/02/Capture_2019-02-12_10-57-52-300x190.png 300w, https://solidframework.net/wp-content/uploads/2019/02/Capture_2019-02-12_10-57-52-768x486.png 768w, https://solidframework.net/wp-content/uploads/2019/02/Capture_2019-02-12_10-57-52-705x446.png 705w, https://solidframework.net/wp-content/uploads/2019/02/Capture_2019-02-12_10-57-52-450x285.png 450w" sizes="(max-width: 366px) 100vw, 366px" /></p> </div> </div> </div></section> <section class="av_toggle_section" itemscope="itemscope" itemtype="https://schema.org/CreativeWork" > <div class="single_toggle" data-tags="{All} " > <p data-fake-id="#toggle-id-32" class="toggler " itemprop="headline" >I am getting an error that says that "api-ms-win-crt-runtime-l1-1-0.dll" is missing<span class="toggle_icon" > <span class="vert_icon"></span><span class="hor_icon"></span></span></p> <div id="toggle-id-32-container" class="toggle_wrap " > <div class="toggle_content invers-color " itemprop="text" ><p>Solid Framework 10.0.10054 is compiled using Visual Studio 2019 which uses of the Windows 10 SDK.</p> <p>This has resulted in a change to the C++ Redistributable libraries that are required to use Solid Framework. This is not a problem on Windows 8 or Windows 10 machines (as the required files are automatically present), but it can cause an error on Windows versions up to and including Windows 7.</p> <p>When trying to run Solid Framework an error will be shown if the required files are not available.</p> <p><img loading="lazy" class="alignnone size-full wp-image-2748" src="https://solidframework.net/wp-content/uploads/2020/03/Capture_2020-03-03_14-58-54.png" alt="Error shown if api-ms-win-crt-runtime-l1-1-0.dll is missing" width="484" height="183" srcset="https://solidframework.net/wp-content/uploads/2020/03/Capture_2020-03-03_14-58-54.png 484w, https://solidframework.net/wp-content/uploads/2020/03/Capture_2020-03-03_14-58-54-300x113.png 300w, https://solidframework.net/wp-content/uploads/2020/03/Capture_2020-03-03_14-58-54-450x170.png 450w" sizes="(max-width: 484px) 100vw, 484px" /></p> <p>The required files can be downloaded from <a href="https://support.microsoft.com/en-nz/help/2977003/the-latest-supported-visual-c-downloads">https://support.microsoft.com/en-nz/help/2977003/the-latest-supported-visual-c-downloads</a></p> <p>For more information please see <a href="https://solidframework.net/wp-content/uploads/general/running_solid_framework_on_windows_7.pdf">https://solidframework.net/wp-content/uploads/general/running_solid_framework_on_windows_7.pdf</a></p> </div> </div> </div></section> </div> </div></div></main><!-- close content main element --> <!-- section close by builder template --> </div><!--end builder template--></div><!-- close default .container_wrap element --> <footer class='container_wrap socket_color' id='socket' role="contentinfo" itemscope="itemscope" itemtype="https://schema.org/WPFooter" > <div class='container'> <span class='copyright'>Powered by <a href=https://apryse.com/>Apryse</a>, Producer of the Market’s Leading <a href=https://apryse.com/products/core-sdk/pdf>PDF SDK</a></span> <nav class='sub_menu_socket' role="navigation" itemscope="itemscope" itemtype="https://schema.org/SiteNavigationElement" ><div class="avia3-menu"><ul id="avia3-menu" class="menu"><li id="menu-item-888" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-top-level menu-item-top-level-1"><a href="https://solidframework.net/what-solidframework-does/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Why Solid Framework?</span><span class="avia-menu-fx"><span class="avia-arrow-wrap"><span class="avia-arrow"></span></span></span></a></li> <li id="menu-item-1412" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children menu-item-top-level menu-item-top-level-2"><a href="https://solidframework.net/documentation-2/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Documentation</span><span class="avia-menu-fx"><span class="avia-arrow-wrap"><span class="avia-arrow"></span></span></span></a></li> <li id="menu-item-1419" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-top-level menu-item-top-level-3"><a href="https://solidframework.net/technical-support/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Support</span><span class="avia-menu-fx"><span class="avia-arrow-wrap"><span class="avia-arrow"></span></span></span></a></li> <li id="menu-item-1054" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-top-level menu-item-top-level-4"><a href="https://solidframework.net/purchase/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">Purchase</span><span class="avia-menu-fx"><span class="avia-arrow-wrap"><span class="avia-arrow"></span></span></span></a></li> <li id="menu-item-1138" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-top-level menu-item-top-level-5"><a href="https://solidframework.net/developer-portal-licenses/" itemprop="url"><span class="avia-bullet"></span><span class="avia-menu-text">My Account</span><span class="avia-menu-fx"><span class="avia-arrow-wrap"><span class="avia-arrow"></span></span></span></a></li> </ul></div></nav> </div> <!-- ####### END SOCKET CONTAINER ####### --> </footer> <!-- end main --> </div> <!-- end wrap_all --></div> <script type="text/javascript"> var _sf_async_config={}; _sf_async_config.uid = 6071; _sf_async_config.domain = "solidframework.net"; _sf_async_config.useCanonical = true; (function(){ function loadChartbeat() { window._sf_endpt=(new Date()).getTime(); var e = document.createElement('script'); e.setAttribute('language', 'javascript'); e.setAttribute('type', 'text/javascript'); e.setAttribute('src', '//static.chartbeat.com/js/chartbeat.js'); document.body.appendChild(e); } var oldonload = window.onload; window.onload = (typeof window.onload != 'function') ? loadChartbeat : function() { try { oldonload(); } catch (e) { loadChartbeat(); throw e} loadChartbeat(); }; })(); </script> <script type='text/javascript'> /* <![CDATA[ */ var avia_framework_globals = avia_framework_globals || {}; avia_framework_globals.frameworkUrl = 'https://solidframework.net/wp-content/themes/enfold/framework/'; avia_framework_globals.installedAt = 'https://solidframework.net/wp-content/themes/enfold/'; avia_framework_globals.ajaxurl = 'https://solidframework.net/wp-admin/admin-ajax.php'; /* ]]> */ </script> <script type='text/javascript' src='https://solidframework.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js?ver=3.0.9b' id='syntaxhighlighter-core-js'></script> <script type='text/javascript' src='https://solidframework.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushCSharp.js?ver=3.0.9b' id='syntaxhighlighter-brush-csharp-js'></script> <script type='text/javascript'> (function(){ var corecss = document.createElement('link'); var themecss = document.createElement('link'); var corecssurl = "https://solidframework.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9b"; if ( corecss.setAttribute ) { corecss.setAttribute( "rel", "stylesheet" ); corecss.setAttribute( "type", "text/css" ); corecss.setAttribute( "href", corecssurl ); } else { corecss.rel = "stylesheet"; corecss.href = corecssurl; } document.head.appendChild( corecss ); var themecssurl = "https://solidframework.net/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeDefault.css?ver=3.0.9b"; if ( themecss.setAttribute ) { themecss.setAttribute( "rel", "stylesheet" ); themecss.setAttribute( "type", "text/css" ); themecss.setAttribute( "href", themecssurl ); } else { themecss.rel = "stylesheet"; themecss.href = themecssurl; } document.head.appendChild( themecss ); })(); SyntaxHighlighter.config.strings.expandSource = '+ expand source'; SyntaxHighlighter.config.strings.help = '?'; SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n'; SyntaxHighlighter.config.strings.noBrush = 'Can\'t find brush for: '; SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Brush wasn\'t configured for html-script option: '; SyntaxHighlighter.defaults['pad-line-numbers'] = false; SyntaxHighlighter.defaults['toolbar'] = false; SyntaxHighlighter.all(); // Infinite scroll support if ( typeof( jQuery ) !== 'undefined' ) { jQuery( function( $ ) { $( document.body ).on( 'post-load', function() { SyntaxHighlighter.highlight(); } ); } ); } </script> <script type='text/javascript' src='https://solidframework.net/wp-content/plugins/wp-show-more/wpsm-script.js?ver=1.0.1' id='sm-script-js'></script> <script type='text/javascript' src='https://solidframework.net/wp-content/themes/enfold/js/avia.js?ver=4.2' id='avia-default-js'></script> <script type='text/javascript' src='https://solidframework.net/wp-content/themes/enfold/js/shortcodes.js?ver=4.2' id='avia-shortcodes-js'></script> <script type='text/javascript' src='https://solidframework.net/wp-content/themes/enfold/js/aviapopup/jquery.magnific-popup.min.js?ver=4.2' id='avia-popup-js'></script> <script type='text/javascript' id='mediaelement-core-js-before'> var mejsL10n = {"language":"en","strings":{"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https:\/\/get.adobe.com\/flashplayer\/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left\/Right Arrow keys to advance one second, Up\/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up\/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions\/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}}; </script> <script type='text/javascript' src='https://solidframework.net/wp-includes/js/mediaelement/mediaelement-and-player.min.js?ver=4.2.16' id='mediaelement-core-js'></script> <script type='text/javascript' src='https://solidframework.net/wp-includes/js/mediaelement/mediaelement-migrate.min.js?ver=5.6.14' id='mediaelement-migrate-js'></script> <script type='text/javascript' id='mediaelement-js-extra'> /* <![CDATA[ */ var _wpmejsSettings = {"pluginPath":"\/wp-includes\/js\/mediaelement\/","classPrefix":"mejs-","stretching":"responsive"}; /* ]]> */ </script> <script type='text/javascript' src='https://solidframework.net/wp-includes/js/mediaelement/wp-mediaelement.min.js?ver=5.6.14' id='wp-mediaelement-js'></script> <script type='text/javascript' src='https://solidframework.net/wp-includes/js/wp-embed.min.js?ver=5.6.14' id='wp-embed-js'></script> <!-- Cookie Notice plugin v2.1.3 by Hu-manity.co https://hu-manity.co/ --> <div id="cookie-notice" role="banner" class="cookie-notice-hidden cookie-revoke-hidden cn-position-bottom" aria-label="Cookie Notice" style="background-color: rgba(0,0,0,1);"><div class="cookie-notice-container" style="color: #fff;"><span id="cn-notice-text" class="cn-text-container">We use cookies to offer you a better browsing experience, session state and analyse site traffic. If you continue to use this site, you consent to our use of cookies.</span><span id="cn-notice-buttons" class="cn-buttons-container"><a href="#" id="cn-accept-cookie" data-cookie-set="accept" class="cn-set-cookie cn-button bootstrap button" aria-label="Ok">Ok</a></span><a href="javascript:void(0);" id="cn-close-notice" data-cookie-set="accept" class="cn-close-icon" aria-label="Ok"></a></div> </div> <!-- / Cookie Notice plugin --><!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-101893-22"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-101893-22'); </script><a href='#top' title='Scroll to top' id='scroll-top-link' aria-hidden='true' data-av_icon='' data-av_iconfont='entypo-fontello'><span class="avia_hidden_link_text">Scroll to top</span></a> <div id="fb-root"></div> </body> </html>