Ограничить печать копий в PDF

19075
pauldunlop

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

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

7
безрассудство dlamblin 15 лет назад 6
Расскажите мне об этом ;-) Я искал возможность использования java-апплета для обработки печати вместо PDF, кажется, что на этом пути могут быть какие-то варианты, но все-таки не все так просто. pauldunlop 15 лет назад 0
В конце концов, вероятно, ни вы, ни ваш клиент не будете довольны тем, как это получится. С таким же успехом можно быть откровенным. emgee 15 лет назад 8
Согласовано. Просто скажи ему, что это невозможно. alex 15 лет назад 1
Вы должны прочитать и понять вопрос и ответы по адресу http://superuser.com/questions/14224/how-to-explain-drm-cannot-work ... Chris W. Rea 15 лет назад 1
Спасибо всем за вашу помощь, я знаю, что это, по сути, невозможная ситуация, приятно получать отзывы и идеи от всех. Спасибо! pauldunlop 15 лет назад 0
Просто добавьте еще один гвоздь в гроб: как насчет печати на принтере, таком как принтер Microsoft XPS, или на любом другом PDF-принтере, который в любом случае дает мне незащищенную цифровую копию. Michael Stum 14 лет назад 0
Еще один момент: даже если вам как-то удается ограничить пользователя одной распечаткой, что мешает им просто сделать ксерокопию? Фотокопия распечатки с лазерной печатью практически совпадает с оригинальной распечаткой (это более или менее та же технология печати). sleske 14 лет назад 0
И я просто нажму на принтскрин, и вся твоя концепция исчезнет. Fake Name 14 лет назад 0

12 ответов на вопрос

6
pelms

Adobe использует свой Adobe Content Server для защиты электронных книг и PDF-файлов вместе с Adobe Digital Editions (их бесплатными программами для чтения электронных книг и PDF) на стороне клиента. Это позволяет распространять PDF-файлы с более гибкими параметрами безопасности, чем позволяет обычный автономный PDF-файл. Например, документы могут быть ограничены по времени или позволять печатать только определенное количество страниц.

Это может быть решением кувалды для вашей проблемы, так как я не знаю ни цены Adobe на этот продукт, ни целесообразности ее использования для небольшого количества документов. Он используется аналогами Британской библиотеки (до недавнего времени так или иначе) для электронных межбиблиотечных займов, срок действия которых истекает через 2 недели и позволяет печатать статью только один раз.

Очень интересно, я не знал, что это решение существует. Я обязательно должен это проверить. Спасибо! pauldunlop 15 лет назад 0
И я уверен, что конечные пользователи очень довольны, когда на их принтере заканчиваются чернила во время их единственного шанса на печать. RBerteig 15 лет назад 9
На работе я однажды купил книгу, которая требовала этого. Никогда не получалось даже показать в Adobe Digital Editions. Вполне возможно, что это произошло из-за сайта, который продал мне книгу, так как этот сайт каким-то образом должен сигнализировать цифровым изданиям о цифровых правах (необходимо установить цифровые издания до загрузки книги). Или, может быть, виноваты даже некоторые ограничения на компьютер компании. Тем не менее, я не покупаю ничего, что требует дополнительного программного обеспечения больше. Arjan 15 лет назад 0
5
Rook

Я бы сказал, что это технически не только невозможно, но и непрактично.

Что мешает пользователю фотокопировать документ сразу после его печати?

Что вы пытаетесь достичь этим, кроме как собрать несколько новых предложений?

У нас есть сценарий, связанный с печатью ваучера / купона. По сути, клиент должен убедиться, что у пользователя есть только одна копия ваучера. Проверка при выкупе (в магазине) не вариант, поэтому это необходимо сделать во время печати ваучера. По сути, то, что вы сказали о фотокопировании и т. Д., Полностью верно. Идея ошибочна, но я просто исчерпываю все возможные пути, прежде чем сказать так :-) pauldunlop 15 лет назад 2
@Chops - ну не могли бы вы поставить какой-нибудь серийный номер на нем? Различать их? А затем уничтожить их, как они используются, после проверки серийного номера, чтобы один с тем же номером не мог использоваться дважды? Rook 15 лет назад 3
Мы могли бы, и на самом деле клиенты в настоящее время реализуют это, но поскольку они предоставляют ваучеры для нескольких клиентов, у них нет серийной проверки при покупке в магазине, поэтому теоретически пользователь может напечатать много ваучеров и выкупить их, и продавец не сможет сказать. pauldunlop 15 лет назад 0
4
del-boy

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

Я хотел бы, чтобы это был вариант. Это что-то для клиента, мы не предъявляем требований. Мы знаем, что у всей концепции есть фундаментальные недостатки, но мы в основном хотим сделать так, чтобы среднестатистический Джо печатал более 1. pauldunlop 15 лет назад 0
Если вы консультант, часть вашей работы - отговаривать клиента от глупых идей. ;-) ИМХО, если вы в конечном итоге введете какие-либо ограничения, которые имеют простой обходной путь (например, фотокопировальный аппарат), это только в конечном итоге вызовет раздражение конечных пользователей до возможной точки отказа от продукта. Chris W. Rea 15 лет назад 1
Я не консультант по этой работе, просто разработчик, сидящий на первой встрече. Уже посоветовали нашему продавцу это кажется безнадежным делом. Проблема в том, что конкурент разработал ряд решений с помощью элементов управления ActiveX и специальных приложений, которые необходимо установить, чтобы справиться со всем этим, мы просто пытаемся найти более элегантное решение. Не стоит, если вы спросите меня, но спасибо за ваш совет. pauldunlop 15 лет назад 0
3
CesarB

Если вы можете печатать один раз, вы можете печатать бесконечное количество раз.

Рассмотрим сетевой принтер: необработанные данные, которые будут напечатаны, должны быть отправлены на удаленное встроенное устройство, которое ваша программа не сможет ограничить, даже если она каким-то образом предполагает владение всей машиной пользователя (что уже будет считаться крайне оскорбительным). см. скандал с руткитом Sony, чтобы узнать реакцию, которую можно ожидать).

Как вы могли бы сказать, что устройство, с которым разговаривает компьютер пользователя, - это настоящий HP LaserJet, а не то, что притворяется единым (или, что еще проще, притворяется удаленным спулером), но которое сохраняет необработанный PCL / PS / что угодно? вместо печати? Поскольку эти данные - это все, что нужно для печати задания, достаточно просто воспроизвести его несколько раз на реальном принтере, чтобы получить несколько копий. Вы также можете использовать сниффер (как упоминалось в @dlamblin) и избавить вас от необходимости эмулировать принтер.

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

И даже USB не застрахован (хотя для этого потребуются дополнительные технические знания и, возможно, специальное оборудование); существуют USB-снифферы. И даже без них вполне достаточно «драйвера гаджета» для usb-принтера на встроенном устройстве Linux (однако обратите внимание, что на момент написания этой статьи я не знал ни одного драйвера гаджета для usb-принтера для Linux).

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


Все, что сказал, вам не нужно идти так далеко. Большинство людей, даже если у них есть технические ноу-хау, не будут пытаться обойти даже самые слабые попытки предотвратить повторную печать, которую вы делаете. На самом деле, я бы не удивился, если бы большинство пользователей добровольно не печатали более одного раза, если сказали, что файл должен быть напечатан только один раз (но тогда было бы больше случаев, когда люди случайно печатали дважды). Итак, создайте простую программу, которая печатает один раз, а затем стирает исходные данные. Предупредите пользователя, что данные будут удалены после однократной печати. И примите к сведению, что некоторые люди будут печатать больше раз, чем вы разрешали, и что некоторые люди будут печатать меньше раз, чем вы позволяли (сбои питания, неисправные принтеры, неправильно настроенные системы или страшное письмо о загрузке ПК).может привести к сбою печати). Будьте готовы к этому.

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

Для людей, которые печатают меньше раз, чем это разрешено, вариант поддержки по телефону, где пользователь может запросить новую копию, был бы вариантом (это работает для Microsoft, верно?). Конечно, некоторые люди будут злоупотреблять этим, но смотрите предыдущий абзац.

2
RBerteig

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

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

TurboTax (инструмент подготовки федерального и государственного подоходного налога США для неамериканских читателей) пробовал нечто подобное пару лет назад. Они решили, что установить программу можно только один раз с включенной печатью, что обеспечивается кодом активации с их сервера. Оказывается, что значительное число их клиентов имели привычку делать налоги дома, но устанавливали временную копию в своем офисе, чтобы воспользоваться имеющимися офисными принтерами. Были также громкие жалобы от людей, обеспокоенных тем, что можно было переустановить программное обеспечение того года позже, чтобы исправить возвращение, если аудит выявил проблему.

Жалобы были достаточно громкими, чтобы ни у одной из последующих версий не было этих ограничений.

2
hlovdal

Идея о том, что программа может контролировать то, что пользователь печатает что-то один раз, является ошибочной идеей. Подумайте о застревании бумаги - только то, что какое-то приложение или операционная система успешно отправили задание на печать на принтер, не гарантирует, что пользователь получит копию. Так что же тогда делать пользователю?

Или как насчет принтера, настроенного для печати X копий каждого листа? А как насчет сканеров или фотокопировальных устройств?

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

1
dlamblin

Я не могу найти функцию Adobe PDF, которая подсчитывает количество раз, когда документ напечатан. Я только нахожу отключение всей печати. Это имеет смысл, если принять во внимание следующее:

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

Засим:

На Mac я предпочел бы предварительно просмотреть распечатку, прежде чем нажимать «печать», и сохранить созданный ею предварительный просмотр PDF.

На ПК я бы попросил драйвер принтера также перенести работу в файл.

Или я выбрал бы драйвер для печати в файл, многие из которых бесплатны.

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

Редактировать:
Даже с помощью Java-апплета печати, который Pitney-Bowes использует для печати почтовых расходов, который, кажется, отключает опцию предварительного просмотра, я сохранил полученное задание на печать для перепечатки. Но я больше не использую эту опцию, потому что кажется, что она просто не может правильно печатать на бумаге любого типа, она всегда печатает штрих-код за пределами страницы, даже когда я играю прямо с намерением однократной печати ,

Да, я думал об этих PDF, спул к файлам проблемы также. Следовательно, в идеале необходимо что-то, что полностью обходит встроенные средства печати ОС. Что конкретно на OS X, я не уверен, что это возможно. Весело весело! pauldunlop 15 лет назад 0
1
Arjan

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

Рассматривали ли вы персонализацию отпечатков, требуя какой-то идентификационный номер (и, возможно, некоторую подпись) при использовании отпечатка в магазине, и предоставили ли вы соглашению о продаже, что будет использоваться только одна копия? Затем вам потребуется некоторая окончательная обработка (в более позднее время), чтобы зарегистрировать, какие ваучеры использовались несколько раз, и (угрожать) выставить счет клиенту за это ... (Это может быть даже дополнительная вещь, рядом с попыткой ограничить количество отпечатков.)

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

Кроме того, как уже отмечал @RBerteig, у некоторых клиентов может даже не быть принтера, или могут закончиться чернила. Как они будут печатать у какого-нибудь соседа или на работе, когда вашему решению понадобится дополнительное программное обеспечение, например (ужасные, на мой взгляд) Adobe Digital Editions? Продолжая тему: каким будет электронный ваучер? Я думаю, что вы будете осуществлять некоторую онлайн-проверку при погашении в следующем выпуске, для тех, кто показывает вам штрих-код на своем смартфоне, а не бумажный ваучер.

Мы знаем, что у всей концепции есть фундаментальные недостатки, но мы в основном хотим сделать так, чтобы среднестатистический Джо мог печатать больше 1.
[..]
Проблема в том, что конкурент разработал ряд решений через ActiveX элементы управления и специальные приложения, которые вы должны установить, чтобы справиться со всем этим, мы просто пытаемся найти более элегантное решение.

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

0
Chris_K

Мы сделали такие вещи с водяными знаками. В PDF всегда есть водяной знак, за исключением некоторого определенного «события», которое позволяет пользователю печатать (например, оплата в нашей ситуации). Затем мы перерисовываем PDF без водяного знака.

Не совсем то, что вы ищете, но, возможно, понятие водяного знака может быть полезным?

Интересная идея, не рассматривал что-то вроде водяных знаков. Однако проблема заключается в том, что на этом первом отпечатке без водяных знаков мы не сможем остановить печать 10 копий и т. Д. Поэтому мне было интересно, содержала ли в спецификации PDF что-то подобное? pauldunlop 15 лет назад 0
Не то, чтобы я знал. У Алекса есть хорошая ссылка, но я не думаю, что она справляется с количеством копий - это работа локального драйвера принтера, верно? Chris_K 15 лет назад 0
Да, так и есть. По сути, нам нужно как-то обойти диалог локального принтера и использовать что-то еще, где мы можем контролировать, какие опции видит пользователь. Сильно подозреваю, что это будет невозможно, но я все равно исследую это, чтобы быть тщательным. pauldunlop 15 лет назад 0
Хм, так что вы всегда визуализируете PDF-файлы как заблокированные для печати. Затем единственный способ, которым они могут быть напечатаны, - это отправить / передать в другое ваше приложение, которое может переключить блокировку _и_ отслеживать файлы и, если они были напечатаны ранее. Хлоп! Chris_K 15 лет назад 0
Звучит слишком сложно, чтобы работать на чем-либо, кроме определенной версии Windows / Acrobat. Мне прислали (купил) PDF-файл, который был запрещен для печати. К сожалению, я не знал, когда я его купил, и хотел распечатать страницу с кодом, чтобы перейти за стол. Продавец не позволил мне снять ограничение, но я нашел в Интернете множество мест, которые позволяют мне снять блок. Если вы реализуете это, то, скорее всего, клиент потеряет бизнес, чем продолжит бизнес в этом случае. Joshua Nurczyk 15 лет назад 0
0
alex

Попробуйте этот урок от Adobe:

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

1. Выберите «Файл»> «Свойства формы».

2. Перейдите на вкладку «Безопасность PDF».

3.В области «Разрешения» выберите «Использовать пароль для ограничения печати и редактирования документа и его настроек безопасности».

4.В списке «Допустимая печать» выберите один из следующих параметров:

•Никто

• Низкое разрешение (150 точек на дюйм)

•Высокое разрешение

Полезная ссылка, но, насколько я могу судить, не позволяет мне ограничить количество печатных копий одной копией? pauldunlop 15 лет назад 0
** ** невозможно печатать только один раз. И даже если бы это было, подумайте об этом; Я отдаю 3 копии документа (или я даю только одну, но потом кто-то делает больше). Каждый документ затем будет напечатан один раз. PDF не содержит информации о том, сколько раз он был напечатан. И еще одна вещь; если я использую CutePDF (или аналогичный) и распечатываю исходный документ в формате PDF, тогда я могу обойти все ограничения, поскольку новый документ не содержит исходных метаданных. alex 15 лет назад 1
Поверьте мне, либо выберите другой способ печати, который не включает PDF-файлы, либо просто заставьте клиента отказаться от лимита печати. Это технически невозможно. Всегда есть обходной путь, особенно если есть лазейка, например, для печати один раз. alex 15 лет назад 1

Похожие вопросы