Я хотел бы скопировать данные спула для заданного задания печати Windows в произвольное место на диске.
У меня есть идентификатор задания задания печати из API диспетчера очереди печати. Я знаю, что эта работа закончилась спулингом. Я знаю, что работа не будет удалена, прежде чем у меня будет время завершить все, что мне нужно.
Если пул файлов отключен, я могу сделать это, посмотрев в каталоге спула для файла с форматом "xxxxx.spl", где xxxxx - это идентификатор задания с заполнением 0.
Как это сделать, если включен пул файлов?
Я был бы рад, если бы был метод, который взял идентификатор задания и вернул поток данных спула, но на данный момент это кажется маловероятным. Предположительно что-то подобное может быть возможно с помощью OpenPrinter
с именем "PrinterName, Job xxxx" и ReadPrinter, как описано здесь, но до сих пор я не смогли заставить его работать, и даже если я это сделаю, похоже, что он загружает данные в память, и я не уверен, как это будет работать с большой катушкой файлов ( > 1 ГБ не является необычным).
Мое второе предпочтение было бы способом передать идентификатор и вернуть местоположение файла с данными спула на диске (независимо от настройки пула файлов).
Мое третье предпочтение было бы способом сопоставить объединенный файл ( "FPyyyyy.spl" ) с идентификатором задания для него.
Есть ли какие-либо из этих возможностей или кто-нибудь лучше знает, как решить эту проблему?
(Отредактировано для добавления, поскольку было неясно, что мы знали об этой опции): Наш отказ - потребовать, чтобы наши клиенты отключили пул файлов пула, отредактировав реестр для каждого принтера, но мы бы предпочли избежать этого.