Печать PDF-файла в файл в PowerShell

Мне нужно автоматически распечатать файл PDF в файл (необходимо, чтобы драйвер принтера установил все параметры печати, такие как сшивание, двусторонняя печать и т. д.) В сетевой папке, чтобы другие сотрудники могли распечатать файл .prn с сетевых принтеров.

После небольшого поиска я обнаружил, что можно заставить PowerShell распечатать PDF-файл, используя

Start-Process -FilePath document.pdf -Verb Print

который вызывает соответствующее приложение для печати PDF-файла, но не позволяет мне установить флажок «Печать в файл».

Я мог бы установить порт принтера по умолчанию на FILE :, но тогда для этого потребуется взаимодействие с пользователем, чтобы указать имя файла назначения .prn.

Связанный вопрос (Программная печать в файл с помощью Adobe Acrobat), кажется, показывает, что это возможно с C#, но я не смог найти ничего для PowerShell. Было бы идеально, если бы это было возможно с помощью PowerShell (я не знаю C#), или я застрял в программном взаимодействии с диалоговым окном «Сохранить в файл»?

Благодарен за любые подсказки.

Вот еще одна мысль: если я использую start-process -FilePath file.pdf -Verb PrintTo("special printer"), где для порта «специального принтера» установлено значение «FILE:», появится диалоговое окно «Сохранить файл», и я должен ввести имя файла. Есть ли способ программно взаимодействовать с этим?

Colin Wu 15.10.2018 03:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
5 292
1

Ответы 1

Это должно помочь вам начать работу:

$PrintDocument = New-Object System.Drawing.Printing.PrintDocument
$PrintDocument.DocumentName = "c:\temp\yourPdf.pdf"
$printDocument.PrinterSettings.PrintToFile = $true
$printDocument.PrinterSettings.PrintFileName = 'c:\temp\test.txt'
$PrintDocument.Print()

если вы посмотрите на $ printDocument.PrinterSettings, там довольно много свойств:

($PrintDocument.PrinterSettings | gm -MemberType Property ).Name -join ','

CanDuplex,Collate,Copies,DefaultPageSettings,Duplex,FromPage,IsDefaultPrinter,IsPlotter,IsValid,LandscapeAngle,MaximumCopies,MaximumPage,MinimumPage,PaperSizes,PaperSources,PrinterName,PrinterResolutions,PrintFileName,PrintRange,PrintToFile,SupportsColor,ToPage

Спасибо, Том. Это действительно хорошее начало; однако, когда я просматриваю файл печати, я вижу только команды PJL независимо от того, печатаю ли я файл .pdf или .txt, используя драйвер PCL6 или PS. Что мне не хватает?

Colin Wu 13.10.2018 01:58

Но это (отсутствует itextsharp.dll) не объясняет, почему файлы .txt тоже не печатаются. Если я устанавливаю для PrintToFile значение $ false, я получаю только пустую страницу для .txt и .pdf. Должно быть что-то еще, что мне не хватает.

Colin Wu 13.10.2018 18:48

Вы пытаетесь получить копию этого PDF-файла или каковы ваши намерения в отношении печати в файл? Является ли цель, чтобы пользователь мог просто дважды щелкнуть файл prn, и он автоматически распечатает?

thom schumacher 13.10.2018 19:05

Цель состоит в том, чтобы в файл были встроены такие параметры печати, как сшивание, двусторонняя печать и т. д., Чтобы пользователи в удаленных офисах могли извлекать и распечатывать .prn на своих сетевых принтерах без необходимости запускать приложение на своем рабочем столе. Извлечение и печать части файлов .prn работает. У меня проблемы с созданием файла .prn.

Colin Wu 14.10.2018 03:37

Эта страница (docs.microsoft.com/en-us/dotnet/api/…), кажется, говорит, что мне нужно предоставить свой собственный обработчик событий OnPrintPage для рендеринга каждой страницы для печати, даже для файлов .txt ???

Colin Wu 14.10.2018 04:27

Кажется, что вы хотите сделать. Класс PrintTicket + PrintQueue может быть подходящим вариантом для просмотра этой статьи: stackoverflow.com/questions/33239716/… Билет печати, похоже, имеет двустороннюю печать и сшивание. Что, похоже, зависит от используемого принтера.

thom schumacher 15.10.2018 17:01

Другие вопросы по теме