Я сделал копию вашего кода, и вы не единственный, за исключением.
Я не знаю, почему просмотрщик документов выбрасывает исключение «Файл не найден», и если кто-то может это объяснить, это будет оценено.
Один из способов, который я нашел, чтобы решить эту проблему, это поместить поток изображения в BitmapImage перед загрузкой в просмотрщик документов. Единственная проблема в том, что я не могу заставить это работать с многостраничным Tiff:
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.StreamSource = ImageStream;
bi.EndInit();
this._Image.Source = bi;
Один из способов заставить его работать с многостраничным TIFF - это своего рода хак, вы можете просто создать файл, который запрашивает программа. Это должен быть файл с именем Image без расширения, а также структура файла Tiff. Это может быть любой tiff, но для этого я сделал копию tiff, который мы показываем в просмотрщике документов. Если файл изображения уже существует, копировать его не нужно.
string pathToTiff = @"C: \Users\developer\Desktop\temp\test.tif";
this._Image = new Image();
FileStream ImageStream = new FileStream(pathToTiff, FileMode.Open, FileAccess.Read,
FileShare.Read);
TiffBitmapDecoder ImageDecoder = new TiffBitmapDecoder(ImageStream,
BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
this._FixedDocument = new FixedDocument();
if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + @"\Image"))
{
File.Copy(pathToTiff, AppDomain.CurrentDomain.BaseDirectory + @"\Image", true);
}
foreach (BitmapFrame f in ImageDecoder.Frames)
{
this._Image = new Image();
this._Image.Source = f.Clone(); ;
this._Image.Stretch = Stretch.None;
this._Image.Margin = new Thickness(20);
this._FixedPage = new System.Windows.Documents.FixedPage();
this._FixedPage.Width = 1000;
this._FixedPage.Height = 1000;
this._FixedPage.Children.Add(this._Image);
this._PageContent = new System.Windows.Documents.PageContent();
this._PageContent.Child = this._FixedPage;
this._FixedDocument.Pages.Add(this._PageContent);
}
documentViewer.Document = this._FixedDocument;