DocumentUltimate v3.0.0 is released

This release includes the following changes:

  • Added: More direct conversions: “Xps, Oxps, Xpz” to “Emf, Svg, Jpg, Png, Bmp, Txt”

  • Added: DocumentViewer class now accepts streams for input and output files.
    There is also new IInputHandler and IOutputHandler interfaces which can be implemented for more control
    over input and output files. Changed parameter type BackSlashPath to string in all methods because from now on,
    input or output file does not have to be a path, it can be any file identifier which will be passed to your
    custom IInputHandler or IOutputHandler implementation.

    public class CustomInputHandler : IInputHandler
    {
    	public StreamResult OpenRead(string inputFile, InputOptions inputOptions)
    	{
    		return new StreamResult(stream);
    	}
    }
    
    public class CustomOutputHandler : IOutputHandler
    {
    	public StreamResult OpenWrite(string currentOutputFile, ConversionContext conversionContext)
    	{
    		return new StreamResult(stream);
    	}
    }
     
  • **Changed: ** Removed DocumentSource class which was confusing and added IDocumentHandler interface for
    better stream handling in DocumentViewer. Streams will be no more copied to the cache folder.
    Conversion or downloading the original will be done on the stream directly via IDocumentHandler.
    DocumentViewer.Document property is now a simple string, it can be any file identifier which will be passed
    to your custom IDocumentHandler implementation which is specified in the new DocumentViewer.DocumentHandlerType
    property. Also with IDocumentHandler you don’t need to provide file size or file date for cache key,
    you only need to provide a unique ID (e.g. it can be an ID field from your database)

    public class CustomDocumentHandler : IDocumentHandler
    {
    	public DocumentInfo GetInfo(string inputFile)
    	{
    		return new DocumentInfo(uniqueId, fileName);
    	}
    
    	public StreamResult OpenRead(string inputFile, InputOptions inputOptions)
    	{
    		return new StreamResult(stream);
    	}
    }
    
    documentViewer.DocumentHandlerType = typeof(CustomDocumentHandler);
    documentViewer.Document = "file path or identifier";
     
  • Improved: Re-added DocumentViewer.Password property, however password set in DocumentViewer.InputOptions
    can override it.

  • Added: New DocumentViewer.HighQualityEnabled property. You can set this property to true to disable
    this possible flattening (if you observe it’s happening with your specific document). For example if
    parts of some pages look blurry when you zoom in. This only effects the second step of the conversion: PDF -> XPZ.

  • Fixed: Errors before “please wait a moment” dialog was not displayed. Also downloading indicator animation
    (blue rectangle) was not displaying (the one after “please wait a moment” dialog).

  • Added: New ImageOutputOptions class for setting desired resolution for the generated images,
    in dots per inch (DPI). The default value is 96 DPI. The image output dimensions (width and height) depends
    both input document dimensions and DPI.

  • Improved: Conversion accuracy for WordProcessing, Spreadsheet, Diagram formats.

  • Fixed: License domain check for 3 letter domains failed as they were mistakenly treated as TLDs.
    Possible “Request is not available in this context” on probably earlier .net 4.0 versions when license key is set.

  • Improved: Updated missing descriptions (red warnings) in docs.

For the full version history of DocumentUltimate, please see here.