Мне нужно автоматически распечатать файл PDF в файл (необходимо, чтобы драйвер принтера установил все параметры печати, такие как сшивание, двусторонняя печать и т. д.) В сетевой папке, чтобы другие сотрудники могли распечатать файл .prn с сетевых принтеров.
После небольшого поиска я обнаружил, что можно заставить PowerShell распечатать PDF-файл, используя
Start-Process -FilePath document.pdf -Verb Print
который вызывает соответствующее приложение для печати PDF-файла, но не позволяет мне установить флажок «Печать в файл».
Я мог бы установить порт принтера по умолчанию на FILE :, но тогда для этого потребуется взаимодействие с пользователем, чтобы указать имя файла назначения .prn.
Связанный вопрос (Программная печать в файл с помощью Adobe Acrobat), кажется, показывает, что это возможно с C#, но я не смог найти ничего для PowerShell. Было бы идеально, если бы это было возможно с помощью PowerShell (я не знаю C#), или я застрял в программном взаимодействии с диалоговым окном «Сохранить в файл»?
Благодарен за любые подсказки.





Это должно помочь вам начать работу:
$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. Что мне не хватает?
Но это (отсутствует itextsharp.dll) не объясняет, почему файлы .txt тоже не печатаются. Если я устанавливаю для PrintToFile значение $ false, я получаю только пустую страницу для .txt и .pdf. Должно быть что-то еще, что мне не хватает.
Вы пытаетесь получить копию этого PDF-файла или каковы ваши намерения в отношении печати в файл? Является ли цель, чтобы пользователь мог просто дважды щелкнуть файл prn, и он автоматически распечатает?
Цель состоит в том, чтобы в файл были встроены такие параметры печати, как сшивание, двусторонняя печать и т. д., Чтобы пользователи в удаленных офисах могли извлекать и распечатывать .prn на своих сетевых принтерах без необходимости запускать приложение на своем рабочем столе. Извлечение и печать части файлов .prn работает. У меня проблемы с созданием файла .prn.
Эта страница (docs.microsoft.com/en-us/dotnet/api/…), кажется, говорит, что мне нужно предоставить свой собственный обработчик событий OnPrintPage для рендеринга каждой страницы для печати, даже для файлов .txt ???
Кажется, что вы хотите сделать. Класс PrintTicket + PrintQueue может быть подходящим вариантом для просмотра этой статьи: stackoverflow.com/questions/33239716/… Билет печати, похоже, имеет двустороннюю печать и сшивание. Что, похоже, зависит от используемого принтера.
Вот еще одна мысль: если я использую
start-process -FilePath file.pdf -Verb PrintTo("special printer"), где для порта «специального принтера» установлено значение «FILE:», появится диалоговое окно «Сохранить файл», и я должен ввести имя файла. Есть ли способ программно взаимодействовать с этим?