Потоковая передача байтов XPS в API пакета документов для печати - PullRequest
0 голосов
/ 27 мая 2020

Я хочу напечатать документ XPS из настольного приложения C ++. Источником XPS на самом деле является преобразование из PDF в XPS, и мы можем получить поток байтов XPS по мере его преобразования.

С этой точки зрения мы хотели бы иметь возможность передавать преобразованные байты XPS непосредственно в API пакета документов печати , чтобы распечатать их на локальном принтере.

Примечание. Предполагается, что API печати XPS устарел. , согласно документации

Кажется довольно простым вызвать IPrintDocumentPackageTargetFactory :: CreateDocumentPackageTargetForPrintJob , который принимает IStream, который, как предлагает документация MSDN, должен быть содержимым документа. Но передача моих байтов в IStream, который я передаю, похоже, ничего не делает (задание не добавлено в очередь, et c).

Единственная альтернатива - использовать другие интерфейсы в Print Документируйте API-интерфейсы пакетов и вместо этого отправляйте XPS по частям, но это потребует большого объема работы по преобразованию выводимых байтов обратно в части XPS.

Есть предложения?

Обновить :

Похоже, поток контента предназначен только для вывода. Если установлено, он предоставляет поток байтов, представляющих выполняемые команды XPS. Если для него установлено значение null, он направляется через систему печати Windows на принтер.

...