Changes Introduced != "release notes"
Please note, this document is intended to "go beyond" the basic release notes and give more details where needed. Such as Release notes may say "new feature - added single page view to WDV" where the Changes Introduced will tell you more useful information such as "to enable this feature you need to set the singlepage config option to true here..."
For basic Release notes, please see
INFO: 11.5 Full Release Notes
Issues / Fixes in FixPacks
KNOWN ISSUE: WDV Annotations from older versions loading as ReadOnly in 11.5
The readonly property of annotations was added to WebDocumentViewer in a previous release, thus annotations saved to XMP before that feature do not have the setting present.
There is a known issue in DotImage 11.5 (but not in 11.4) where XMP read in from those old versions which is missing the readonly tag are defaulting to True instead of False.
This issue is expected to be addressed in a fixpack soon.
In the meantime, the workaround is that after you finish loading, you can iterate through all annotations on all pages and ensure the readonly flag is false.
Example Code:
//// The following code requires that you pass in the viewer object you're using
//// example usage assumes your WebDocumentViewer is named "_viewer"
//// Example
// ToggleAllAnnosReadOnly(_viewer, false);
// This code loops through all pages and calls the ToggleReadOnlyOnPage with the
// passed in readOnlyValue (defaults to false if null)
// the ToggleReadOnlyOnPage will do the actual hevy lifting for each page's annos
function ToggleAllAnnosReadonly(wdv, readOnlyValue) {
if (readOnlyValue == null) {
readOnlyValue = false;
}
var pageCount = wdv.getDocumentInfo().count;
if (pageCount != null && pageCount > 0) {
for (var i = 0; i < pageCount; i++) {
ToggleReadonlyOnPage(wdv, i, readOnlyValue);
}
}
}
// this is to set the readonly flag of all annos on a specific page to the
// readOnlyValue provided
function ToggleReadonlyOnPage(wdv, pageIndex, readOnlyValue) {
var annos = wdv.getAnnotationsFromPage(pageIndex);
if (annos != null) {
for (var i = 0; i < annos.length; i++) {
var anno = annos[i];
anno.readonly = readOnlyValue;
anno.update();
}
}
}
The fix is expected (but not guaranteed) for 11.5.0.3 which has an ETA of early October 2024
Added LimitsPageCount to EmlDecoder, HtmlDecoder & TxtDecoder
In 11.5.0.2 and forward, there is now a new property called LimitsPageCount which you can use to increase the default page count limit.
NOTE: the page counts are limited for memory/performance reasons. Adjusting this value in production should only be done after testing thoroughly in your app/deployment to ensure it does not cause memory issues
Missing jquery-ui-1.13.1.min.css in NuGet distribution
The initial 11.5.0.156 release is missing a css file
The file in question is jquery-ui-1.13.1.min.css
It should have been installed as part of Atalasoft.Web.Document.Viewer package. but somehow got missed
We're working on ensuring this gets included in the 11.5.0.1 fixpack release
In the meantime, you can either get it from installing the SDK from the main download site, where it can be found in
C:\Program Files (x86)\Atalasoft\DotImage 11.5\bin\WebResources\WebDocViewer
or you can grab a copy here : Download DotImage_Clientside_Web_Resources_v11.5.0.0.zip
NEW Features
PdfDecoder Multiprocessing
Overview
The PDF viewer has been upgraded with multiprocessing to support concurrent rendering of pages, aimed at reducing delays
with complex and large pages. Performance impact may be affected as follows:
- Documents with vector content will experience performance improvements.
- High page-count documents with rasterized content may experience performance improvements.
- High page-count documents with vector content, especially if the vector quantity per page is small, may not show substantial performance improvement.
-
Some PDF processing use case types may experience a degradation in performance as a result of parallel orchestration and system resource constraints. These use case types include the following:
- Using the multiprocessing feature for single page PDF documents.
- Using the multiprocessing feature for PDF documents without any graphics.
- Using the multiprocessing feature in one-core CPU environment
How To: Out of the Box
If you're using a default WebDocumentRequestHandler (not custom handling), all you need to do is set the WebDocumentViewer (and WebDoucmentThumbnailer if you are using it) config multiprocessing setting to true)
multiprocessing: true
let _viewer = new Atalasoft.Controls.WebDocumentViewer({
parent: $('#_containerViewer'),
toolbarparent: $('#_toolbar1'),
serverurl: _serverUrl,
allowannotations: true,
multiprocessing: true,
forcepagefit: true,
fitting: Atalasoft.Utils.Fitting.Width,
});
let _thumbs = new Atalasoft.Controls.WebDocumentThumbnailer({
viewer: _viewer,
parent: $('#_containerThumbs'),
serverurl: _serverUrl,
documenturl: _docUrl,
allowannotations: true,
multiprocessing: true
});
For full information please see HOWTO: Enable PdfMultiprocessing In WDV (new in 11.5)
NON-BREAKING Changes
These are important changes but ones that don't directly require code changes or other large rewrites
New Decoders
We've added several new decoders in DotImage 11.5.
CommonDecoders
The new "common Decoders" (non MS_Office) do not require additional licensing outside of DotImage Document Imaging, they are
-
WebpDecoder
.webp files: Decoding for newer web image formats.
-
TxtDecoder
For text and other types of files
Can be used for any plain text file including xml
NOTE there is no "pretty printing" / formatting of code. If you wish to have source code or XML, YAML etc properly indented, you'll want to run such files through the relevant pretty printing/lint utilities before passing them to TxtDecoder
-
HtmlDecoder
.html and .txt files: Expanded web and text file decoding.
-
EmlDecoder
.eml files: Enhanced email decoding capabilities.
In order to implement them you must follow these steps:
If you're using NuGet packages, everything you need should be in the
Atalasoft.dotImage.CommonDecoders.x64
or
Atalasoft.dotImage.CommonDecoders.x86
package depending on the "bitness" you need
If you're adding references manually from the installed SDK:
Add a reference to Atalasoft.dotImage.CommonDecoders.dll to your project (NOT available for .NET Framework 3.5)
Add the Perceptive Filters (64 or 32 bit depending on your platform target for your app) to your project as ALWAYS COPY or COPY IF NEWER or place them directly in the bin directory of the app
or if you installed the SDK the files are:
ISYS11df.dl
ISYSreaders.dll
ISYSreadershd.dll
Perceptive.DocumentFilters.dll
They can be found in
C:\Program Files (x86)\Atalasoft\DotImage 11.5\bin\PerceptiveDocumentFilters\intel-32\
or
C:\Program Files (x86)\Atalasoft\DotImage 11.5\bin\PerceptiveDocumentFilters\intel-64\
depending on which bitness you're targeting
Finally, Add the relevant decoder(s) to the RegisteredDecoders.Decoders collection in a STATIC CONSTRUCTOR for your class/program (do this once and only once)
RegisteredDecoders.Decoders.Add(new TxtDecoder() { Resolution = 200 });
RegisteredDecoders.Decoders.Add(new HtmlDecoder(){ Resolution = 200 });
RegisteredDecoders.Decoders.Add(new EmlDecoder() { Resolution = 200 });
RegisteredDecoders.Decoders.Add(new WebpDecoder());
Documentation / Help Files
In previous versions, the ApiReference.chm and DevelopersGuide.pdf were installed to a folder named help to:
C:\Program Files (x86)\Atalasoft\DotImage 11.x\Help\
These files are now provided as download links in the DotImage 11.5 start menu folder
Developers Guide
START->All Programs->Atalasoft DotImage 11.5->DevelopersGuide
Direct Download
.NET API Reference
START->All Programs->Atalasoft DotImage 11.5->ApiReference
Direct Download
WebDocumentViewer (clientside) API Reference
https://atalasoft.github.io/web-document-viewer/
WebCapture (Clientside) API Reference
https://atalasoft.github.io/web-capture-service/
WDV Setting e.FilePath in DocumentInfoRequested now Persists to other events
Previously, there was a bug where setting e.FIlePath in the DocumentInfoRequested event did not persist the chagned file name to ImageRequested and other events
This has been fixed in 11.5.
This is very uesful for situations where you might for instance call openUrl from the client and the request fetches a file from another location and you want to update the viewer to point to a copy of the file you've grabbed (cached)... say the user did openurl(Document1234) where Document1234 was the ID of a document to be fetched from a remote server
You could write code to fetch Document1234 and place it in say
/images/Document1234_someRandomNumber
Then set e.FilePath to "/images/Document1234_someRandomNumber"
With no further handling, now the viewer will now look for Document1234_someRandomNumber at that path instead of for just Document1234 as the original open
This can be incredibly useful too for simple "cache breaking"
You request Document1234 and it's local but you copy it to Document1234_SomeGUID and set that file path to the new name - thus breaking any caching done by file name by server or browser
BREAKING Changes
DLL Restructuring
In 11.5 you may notice some DLLs are "missing" versus previous versions. This is by design.
We distribute our SDK in sets based on Framework
our dlls for targeting .NET Framework 3.5 are in
C:\Program Files (x86)\Atalasoft\DotImage 11.5\bin\3.5
Our DLLs for targeting .NET Framework 4.6.2 through 4.8.x are in
C:\Program Files (x86)\Atalasoft\DotImage 11.5\bin\4.6.2
Our DLLs for .NET 6 and p
C:\Program Files (x86)\Atalasoft\DotImage 11.5\bin\6.0
In older dotImage we had 3.5, 4.5.2, and 5.0 respectively
.NET Framework Minimum
The DLL restructure has a specific impact on the .NET Framework minimum, Any project you have that targets .NET Framework < 4.6.2 must be updated to .NET Framework 4.6.2 or later (but NOT .NET 5 or higher - stay with the 4.6.2-4.8.x (4.9 maybe someday?) for .NET Framework. .NET 5 and up is a totally different beast - see below
.NET 6+ Minimum
For those using our .NET 5 dlls previously, we have dropped .NET 5 and you must target .NET 6 or up (we support .NET 6, .NET 7, and .NET 8 currently - we will drop 6 and 7 in 11.6)
Please see FAQ: Support for ASP.NET Core / .NET Core / .NET 5 / .NET 6 /.NET 7 / .NET 8
WebDocumentRequestHandler - Hard Dependencies
WebDocumentRequestHandler (in support of our new CommonDecoders and Multithreading) has 2 hard dependencies at runtime. (Your solution will build but you'll get a crash if the following have not been installed:
Microsoft.CodeAnalysis.CSharp 4.5.0
Please note our dependency is on the very specific 4.5.0 version, and NOT on the latest - you must install the specific 4.5.0 version (for now, we're working on possibly being able to set it to 4.5.0 minimum in future)
NOTE That if you install the NuGet package Atalasoft.dotImage.PdfReader.Multithreading.x64 or Atalasoft.dotImage.PdfReader.Multithreading.x86, this should get installed for you automatically
We have also noticed that IISExpress (and possibly IIS) caches the install so once it's been installed once, you may not find that it complains)
The symptom of this dependency being missing will not show up at compile - but at runtime the WebDocumentRequestHandler will throw an exception and if you look at the network trace and error text is on it will mention that it's missing Microsoft.CodeAnalysis.CSharp 4.5.0 specifically
Perceptive Filter Dlls
These are supposed to be available in a NuGet package, but the PerceptiveFilter packages currently available are not correct. This is being investgated
For now, you'll need to grab them from the SDK (you would need to download and install it. The files are:
ISYS11df.dl
ISYSreaders.dll
ISYSreadershd.dll
Perceptive.DocumentFilters.dll
They can be found in
C:\Program Files (x86)\Atalasoft\DotImage 11.5\bin\PerceptiveDocumentFilters\intel-32\
or
C:\Program Files (x86)\Atalasoft\DotImage 11.5\bin\PerceptiveDocumentFilters\intel-64\
depending on which bitness you're targeting
Alternately, for your convenience you can download them here:
PerceptiveDocumentFilters_11.5.0.0.zip
Adding the Perceptive Filters
Once we get a NuGet package, you can just add that.
However, the NuGet package DLLs can not be referenced, so you can't just add them as references. Instead, you need to add the DLLs to your project then set them to "COPY ALWAYS" or "COPY IF NEWER"
Dropped Support
Windows Server 2012 R2 and older
Microsoft has end of lifed Windows server 2012 R2 and older - minimum server OS is now Windows Server 2016 and up
Windows 8.1 and Older
Microsoft has end of lifed Windows 8.1 and older - minimum desktop OS is now Windows 10 and up
MacOS Catalina and older dropped
This applies to the Web Capture client-side component. The installable MacOS package that clients using pages with WebCapture need to install. The package no longer supports MacOS Catalina and older.