XPS — печать документов с изображениями

Я задавал аналогичный вопрос в прошлом, но с тех пор не имел никакой радости, чтобы решить мою проблему. Я не эксперт по документам XPs, но мне удалось решить эту проблему...

Следующие примеры принимают аргумент DocumentPaginator и просто печатают документ. Первый пример работает, второй не печатает встроенные в документ изображения.

// this works

XpsDocumentWriter xpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(printQueue);
xpsDocumentWriter.Write(document);  // where document is a DocumentPaginator

// this doesn't work (it prints but no images)

// create new doc
XpsDocument doc = new XpsDocument(package, CompressionOption.NotCompressed, "pack://TempTemporaryPackageUri.xps");

// create writer for new doc
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);

// write document
writer.Write(document, printQueue.DefaultPrintTicket);

// create writer for print job
XpsDocumentWriter xpsDocumentWriter = PrintQueue.CreateXpsDocumentWriter(printQueue);

// i think it's here where the resources are being lost 

// write document
xpsDocumentWriter.Write(doc.GetFixedDocumentSequence());

Причина, по которой мне нужно создать новый документ, заключается в том, что мне нужно манипулировать XpsDocument после того, как он разбит на страницы.

Может ли кто-нибудь указать мне правильное направление в отношении возможности копирования ресурсов из одного документа в другой?

Любые советы приветствуются.

Заранее спасибо,

Сэм


person sambomartin    schedule 23.04.2012    source источник
comment
Я думаю, ты все еще идешь по ложному пути. Создав XPS-документ с разбивкой на страницы, измените этот документ напрямую, а не пытайтесь его скопировать.   -  person Jon    schedule 23.04.2012
comment
Как вы затем распечатываете xpsdocument в очередь печати. Кажется, когда я создаю новый документ из последовательности getfixeddocumentsequence, он теряет ресурсы или оставляет их в оригинальном документе. Я должен упустить что-то простое   -  person sambomartin    schedule 24.04.2012
comment
PrintQueue.AddJob будет хорошим местом для начала.   -  person Jon    schedule 24.04.2012


Ответы (1)


Вы можете попробовать код, указанный по ссылке ниже. Он работает для преобразования в форматы XPS и PDF.

http://msdn.microsoft.com/en-us/library/bb412305(v=office.12).aspx

person Anshul Agrawal    schedule 23.04.2012
comment
спасибо за ответ, но я пытаюсь создать XpsDoc из существующего документа, но добавляю дополнительный визуальный элемент на каждую страницу. Я не использую Word или PDF. Спасибо хоть. - person sambomartin; 23.04.2012
comment
в порядке. но в этом коде разница между вашим требованием и примером заключается только в изменении формата на wdExportFormatXPS, а также, если вы хотите добавить некоторые данные, просто напишите файл документа, как вы хотите, с помощью FileStreamer, а затем преобразуйте его. - person Anshul Agrawal; 25.04.2012