Контрольная печать на странице ASP.NET - PullRequest
1 голос
/ 09 апреля 2011

Мне нужно создать веб-приложение, которое печатает чеки. Из-за характера программы, она должна быть очень безопасной, и каждое действие должно быть зарегистрировано. Мне нужно иметь возможность сгенерировать чек, распечатать чек, разрешить перепечатку при необходимости и т. Д.

Я завершил генерацию чеков. Я решил сделать PDF (так что я не получаю никакого мусора заголовка / нижнего колонтитула браузера). Я хотел бы даже не сохранять этот PDF-файл в файл, а вместо этого отправлять данные непосредственно на принтер. По сути, я бы хотел, чтобы пользователь ввел сумму чека, выберите учетную запись, для которой он будет напечатан, а затем нажмите кнопку, которая отправляет данные для этого чека непосредственно на принтер. Я даже не хочу, чтобы пользователь мог просматривать в PDF-формате то, что должно быть напечатано.

Кто-нибудь делал что-то подобное в ASP.NET?

Спасибо.

[EDIT]

На исходный вопрос, который я задал, ответили с помощью элементов управления ActiveX. Я, однако, решил сделать это по-другому. Вместо того, чтобы печатать PDF, я решил создать изображение фона чека. Затем я буду использовать это изображение (.jpg) и манипулировать им, поместив на него соответствующий текст (строка MICR, сумма, дата проверки и т. Д.), Используя System.Drawing.Graphics и сохраненные координаты X, Y и настройки шрифта в моем DB. Оттуда я могу использовать пространство имен System.Drawing.Printing для отправки нового файла .jpg на сетевой принтер с веб-сервера, устраняя необходимость в элементе управления ActiveX и еще более усиливая безопасность, поскольку новый образ законченной проверки никогда не будет сохранено, и пользователь никогда не имеет доступа к наложению чека.

Спасибо за вашу помощь.

Ответы [ 4 ]

3 голосов
/ 09 апреля 2011

Если вы посмотрите, как почтовые службы решают эту проблему, вы заметите, что простое веб-приложение не подойдет.Для контроля над тем, как и когда элементы отправляются на принтер, используются компоненты ActiveX или программное обеспечение Java.

[Редактировать]

Небольшое пояснение: я хочу сказать, что программное обеспечение должно работать нана стороне клиента, в отличие от предложенного предложения на стороне сервера.

Если вы хотите пойти по пути .NET, вы переходите на ActiveX в Managed C ++ или приложение Click-Once, которое запускается изweb (допускает больше языка .NET, но может быть декомпилирован и изменен).

1 голос
/ 09 апреля 2011

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

Во-вторых, мы написали компонент ActiveX на стороне клиента для обработки печати. Передайте входные значения бэкэнд-веб-службе, которая использует FOP для форматирования печати в PCL. PCL передается обратно компоненту ActiveX, который затем отправляет PCL непосредственно на принтер по умолчанию для пользователей. Здесь не требуется PDF.

В любом случае работает, но только второй вариант - который потребует от вас реализации некоторого клиентского компонента - отвечает всем вашим требованиям.

0 голосов
/ 09 апреля 2011

Нет способа сделать это полностью безопасно. Даже если вы заставите PDF-файл печатать непосредственно на принтере пользователя по умолчанию, это может быть принтер PostScript или PDF, такой как PDFCreator . Таким образом, они все равно могут получить просматриваемый PDF в конце.

0 голосов
/ 09 апреля 2011

На самом деле нет способа сделать это. Вы можете только отправить документ пользователю, который пользователь затем может отправить на принтер. Есть способы заставить диалоговое окно печати открываться, но в Интернете было бы довольно небезопасно, если бы вам было позволено контролировать управление данными на компьютере пользователя.

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

Если у вас был чек в виде html, вы можете использовать стили для отображения / скрытия содержимого только для принтера, как описано в этом посте: здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...