Сохранить все задания на печать в формате PDF - PullRequest
4 голосов
/ 01 декабря 2011

Цель

Компания, в которой я работаю, в настоящее время использует систему доставки черного ящика. Каждое утро наш менеджер по отгрузке распечатывает билеты для своих водителей. Используя C #, я хотел бы сохранить копию каждого билета, напечатанную в формате PDF. Действие сохранения в PDF должно быть сделано за кулисами.

Примечание : копия PDF будет дополнением к печатной копии, однако я хотел бы создать копию PDF при печати печатной копии (или сразу после того, как я смогу использовать сохраненную печать работа).

Конечный результат : менеджер распечатывает печатную копию, а файл PDF сохраняется в папке архива без какого-либо вмешательства со стороны менеджера.

Что я пробовал

Я дал указание принтеру «Хранить напечатанные документы» после печати. Это оставляет файлы .shd и .spl в папке очереди печати. Я экспериментировал с классом PrintDocument, но не могу найти способ поручить задание на перепечатку (в драйвер PDF) с использованием завершенного задания печати. ​​

Вопрос

Возможно ли то, что я пытаюсь достичь?

Дальнейшее уточнение :

В случае, если неясно, я не хочу, чтобы менеджер напечатал документ второй раз в драйвер печати PDF. В среднем он должен распечатать 60 билетов каждое утро, прежде чем он сможет отправить своих водителей. Я не хочу увеличивать это число до 120 И заставлять его вводить имена файлов.

Кроме того, система доставки «черный ящик» включает в себя другие модули, которые запускают другие части нашего производственного предприятия - программное обеспечение для изменения не является опцией.

Ответы [ 4 ]

3 голосов
/ 01 декабря 2011

Я предлагаю вам воспользоваться существующим решением таких проблем: Используйте программное обеспечение, которое может устанавливать виртуальные принтеры, которые печатают документ на нужные вам принтеры.Одним из таких программ является PrintDistributor .У меня нет опыта работы с этим программным обеспечением, но снимок экрана с именем «Виртуальные принтеры» выглядит многообещающе: второй принтер называется «Распечатать и сохранить».

Существует другое программное обеспечение, подобное этому, см. здесь.

2 голосов
/ 01 декабря 2011

В соответствии с вашей целью, что вы не хотите, чтобы он заставлял его вводить имена файлов, вы должны сделать следующее:

Использовать программное обеспечение PDF Printer, которое обеспечивает автоматическое именование файлов, например:

PDF Desk

Cute PDF

И попросите менеджера распечатать билеты только с этим принтером PDF.

Тогда, напишите ac # или vb.net приложение.используйте FileSystemWatcher, чтобы определить, создан ли новый файл в каталоге PDFs.и когда создается новый PDF, распечатайте его.

Вот несколько учебных пособий, в которых объясняется, как напечатать PDF-файл в c #:

Распечатать существующий PDF (или другие файлы)C #

Печать документов PDF в C #

1 голос
/ 01 декабря 2011

Захват вещей, отправляемых на принтер, может быть очень сложным.

Более простым способом было бы настроить «принтер PDF» с использованием такого программного обеспечения, как: http://www.bullzip.com/products/pdf/info.php

Настройте этот параметр для вывода в определенный каталог, а затем запишите службу Windows, чтобы отслеживать каталог и автоматически отправлять файлы PDF на физический принтер и архивировать файл в сетевую папку.

[и удалить принтерводитель со своего компьютера, чтобы он не мог обойти вашу новую систему]

0 голосов
/ 01 декабря 2011

Выполните две команды печати ... одну на бумажном принтере, одну на PDF-принтере.

...