|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CBR.Core.Helpers;
using System.Windows.Xps.Packaging;
using System.IO;
using System.IO.Packaging;
using System.Windows.Documents;
using System.Windows;
using System.Windows.Threading;
using System.Threading;
using System.Windows.Media.Imaging;
namespace CBR.Core.Files.Conversion
{
internal class XPSImageReader : IReaderContract
{
public bool Read(string filePath, string outputFolder, List<byte[]> imageBytes, List<string> imageNames, ContractParameters settings, ProgressDelegate progress)
{
try
{
XpsDocument xpsDocument = null;
// read the document
xpsDocument = new XpsDocument(filePath, FileAccess.Read, CompressionOption.NotCompressed);
//
IXpsFixedDocumentSequenceReader fixedDocSeqReader = xpsDocument.FixedDocumentSequenceReader;
ICollection<IXpsFixedDocumentReader> fixedDocuments = fixedDocSeqReader.FixedDocuments;
IEnumerator<IXpsFixedDocumentReader> enumerator = fixedDocuments.GetEnumerator();
enumerator.MoveNext();
ICollection<IXpsFixedPageReader> fixedPages = enumerator.Current.FixedPages;
string imageFileName = Path.GetFileNameWithoutExtension(filePath);
int i = 0;
foreach (IXpsFixedPageReader fixedPageReader in fixedPages)
{
try
{
ICollection<XpsImage> list = fixedPageReader.Images;
if( list.Count == 1 )
{
XpsImage img = list.First();
if (img != null)
{
using (Stream xpsThumbStream = img.GetStream())
{
byte[] buf = new byte[xpsThumbStream.Length];
xpsThumbStream.Read(buf, 0, buf.Length);
imageBytes.Add(buf);
imageNames.Add(imageFileName + "_" + i + ".jpg");
}
}
}
i++;
}
catch (System.InvalidOperationException)
{
}
}
xpsDocument.Close();
progress(string.Format("{0} images founded...", imageBytes.Count));
}
catch (Exception err)
{
ExceptionHelper.Manage("XPSImageReader:Read", err);
settings.Result = false;
return false;
}
finally
{
}
return true;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
WPF and MVVM fan, I practice C # in all its forms from the beginning of the NET Framework without mentioning C ++ / MFC and other software packages such as databases, ASP, WCF, Web & Windows services, Application, and now Core and UWP.
In my wasted hours, I am guilty of having fathered C.B.R. and its cousins C.B.R. for WinRT and UWP on the Windows store.
But apart from that, I am a great handyman ... the house, a rocket stove to heat the jacuzzi and the last one: a wood oven for pizza, bread, and everything that goes inside
https://guillaumewaser.wordpress.com/
https://fouretcompagnie.wordpress.com/