Помощь: печать нескольких «отчетов» из браузера (необходим IE 6, другие были бы хорошими) - PullRequest
2 голосов
/ 03 декабря 2009

Нет мыслей по этому поводу? Кто-нибудь?


Вот мой сценарий:

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

Пользователь хочет, чтобы опция:

  1. выводит на печать как текущий отчет (это легко), так и
  2. опция «напечатать все» для печати всех выбранных отчетов.

Однако каждый отчет для каждого пользователя должен иметь свой собственный нижний колонтитул «Страница x из n».

Для нижнего колонтитула я использовал параметры нижнего колонтитула браузера, но для того, чтобы нумерация страниц начиналась заново при каждой распечатке отчета, мне нужно сделать отдельный вызов window.print () для каждого из них. Я реализовал это таким образом, и это работает, но это ужасно, потому что каждый вызов print () вызывает новое диалоговое окно печати, означающее, что пользователь должен нажимать кнопку print в каждом диалоговом окне, чтобы завершить запрос на печать. Многие отчеты = глупое количество всплывающих диалогов печати.

В идеале я хотел бы, чтобы печать группы отчетов выглядела как одно задание на печать, но мне нужно, чтобы количество страниц было перезапущено для каждого отчета.

Я думал о том, чтобы попытаться самостоятельно подсчитать количество страниц, чтобы создать свой собственный нижний колонтитул, но это казалось сложной задачей, учитывая все переменные, которые могут повлиять на количество страниц, которое займет отчет. Я также читал некоторые статьи об использовании объектов ActiveX и WebBrowser для принудительной печати и скрытия диалогового окна печати, но у меня ничего не получилось, потому что я работаю на XP SP2. Кроме того, я понимаю, что это не одобряется с точки зрения безопасности, и это не хорошее кросс-браузерное решение.

Кто-нибудь имел дело с печатью этого типа раньше и хотел бы предложить несколько советов о том, как сделать это, или о том, как лучше справиться с этим?

Заранее спасибо.

Ответы [ 2 ]

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

Это не очень полезно, но вы можете использовать генератор PDF, например, PDFlib или fpdf . Выполнение этого со статическими страницами повлечет за собой все проблемы, которые вы указали, а также некоторые проблемы, которые вы не сделали (например, пользователь установил свой собственный шрифт или размер шрифта и разрушил вашу нумерацию страниц).

0 голосов
/ 04 декабря 2009

Я видел, что это было сделано двумя способами: в простом списке использовался компонент MexCo scriptx, который позволяет печатать без диалогов. Но, как вы правильно сказали, это нехорошо с точки зрения безопасности. Это было сделано в корпоративной среде, где они контролировали браузер конечных пользователей.

Второй - пойти по маршруту ajax и загрузить каждую страницу отчета отдельно, без печати, а затем объединить каждый отчет html вместе в один документ, добавив необходимые разрывы страниц. Наконец, рендеринг в IFRAME и вызов print в этом фрейме для печати всех отчетов за одно действие.

...