Я хочу напечатать документ XPS из настольного приложения C ++. Источником XPS на самом деле является преобразование из PDF в XPS, и мы можем получить поток байтов XPS по мере его преобразования.
С этой точки зрения мы хотели бы иметь возможность передавать преобразованные байты XPS непосредственно в API пакета документов печати , чтобы распечатать их на локальном принтере.
Примечание. Предполагается, что API печати XPS устарел. , согласно документации
Кажется довольно простым вызвать IPrintDocumentPackageTargetFactory :: CreateDocumentPackageTargetForPrintJob , который принимает IStream, который, как предлагает документация MSDN, должен быть содержимым документа. Но передача моих байтов в IStream, который я передаю, похоже, ничего не делает (задание не добавлено в очередь, et c).
Единственная альтернатива - использовать другие интерфейсы в Print Документируйте API-интерфейсы пакетов и вместо этого отправляйте XPS по частям, но это потребует большого объема работы по преобразованию выводимых байтов обратно в части XPS.
Есть предложения?
Обновить :
Похоже, поток контента предназначен только для вывода. Если установлено, он предоставляет поток байтов, представляющих выполняемые команды XPS. Если для него установлено значение null, он направляется через систему печати Windows на принтер.