Я пытаюсь помочь с моей заявкой.У меня есть документы xps, которые я загружаю в просмотрщик документов.Эти файлы встроены в файл ресурсов.
Я могу получить к ним доступ как к байтовому массиву.Например, Properties.Resources.help_sudoku_methods_2 возвращает byte []
Однако программа просмотра документов не может его прочитать и требует фиксированной последовательности документов.Поэтому я создаю поток памяти из bytearray, затем xpsdocument и затем fixeddocumentsequence следующим образом:
private void loadDocument(byte[] sourceXPS)
{
MemoryStream ms = new MemoryStream(sourceXPS);
const string memoryName = "memorystream://ms.xps";
Uri memoryUri = new Uri(memoryName);
try
{
PackageStore.RemovePackage(memoryUri);
}
catch (Exception)
{ }
Package package = Package.Open(ms);
PackageStore.AddPackage(memoryUri, package);
XpsDocument xps = new XpsDocument(package, CompressionOption.SuperFast, memoryName);
FixedDocumentSequence fixedDocumentSequence = xps.GetFixedDocumentSequence();
doc.Document = fixedDocumentSequence;
}
Это очень нечистый подход, который также не работает, если в файлах есть изображения - вместо изображений в новых документах отображаются изображения изПервый загруженный документ.
Есть ли более понятный способ загрузки XPS из встроенных ресурсов в средство просмотра документов?или мне нужно что-то вроде копирования файла из ресурсов в каталог приложения и загрузки отсюда, а не памяти?Спасибо.