Обновить
3.18

PDF

Межплатформенный формат электронных документов

Сначала показывать
Порог рейтинга
Уровень сложности

Как я диплом в LaTeX писал с GitHub, Docker и TravisCI

Время на прочтение5 мин
Количество просмотров46K

Еще со времен обучения в университете я использовал LaTeX для оформления лабораторных и курсовых работ. Познакомился впервые с LaTeX на Coursera, на курсе "Документы и презентации в LaTeX".


В этой заметке я расскажу, как я писал диплом с помощью LaTeX и почему я использовал GitHub, Docker и TravisCI.


Но зачем?

Читать дальше →

Кража NTLM через PDF

Время на прочтение3 мин
Количество просмотров12K

Прошло всего несколько дней после того, как было объявлено, что злоумышленники могут использовать уязвимость в MS Outlook, используя OLE, чтобы украсть NTLM-хэш пользователей Windows.

Исследовательская группа Check Point обнаружила, что утечка дайджеста NTLM возможна и с помощью файлов PDF. Атака возможна без какого-либо взаимодействия с пользователем — достаточно просто открыть файл.
Продолжение внутри

Что не так с 3D PDF и eDrawings. Как мы заменили просмотрщик 3D-моделей в своем приложении

Время на прочтение6 мин
Количество просмотров11K
Это рассказ о том, как мы встроили новый просмотрщик C3D Viewer в систему управления жизненным циклом изделия ЛОЦМАН:PLM, почему мы это сделали, и что у нас получилось.

image
Читать дальше →

Увеличиваем себе премию в два раза, или как взломать документы, подписанные усиленной квалифицированной подписью

Время на прочтение4 мин
Количество просмотров52K

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


Читать дальше →

Как на Java c помощью КриптоПро подписать документ PDF

Время на прочтение10 мин
Количество просмотров42K


Привет! Я сотрудник Альфа-Банка и занимаюсь разработкой программного обеспечения со встроенными средствами криптографической защиты информации.

В данной статье хочу рассказать о следующих вещах:

  • преимуществах формата PDF в качестве документа с электронной подписью;
  • платформе Java, библиотеке itextpdf и СКЗИ КриптоПро CSP, как инструментах подписи;
  • о том, с какими трудностями пришлось столкнуться, о доработке itextpdf;
  • привести пример кода, выполняющего несколько подписей;
  • поговорить о целесообразности использования формата PDF в качестве документа с подписью.
Читать дальше →

Печать на произвольном размере бумаги в Linux

Время на прочтение66 мин
Количество просмотров17K
Какое-то время назад мне понадобилось распечатать документ на бумаге нестандартного размера. Я даже не ожидал, что это может быть так затруднительно. Сейчас я бы хотел рассказать как я эту проблему решал. Я нашёл обходное решение, но по-хорошему надо исправить модуль печати kde так, чтобы не нужны были никакие костыли. Цель этой статьи — поделиться информацией, которую я собрал. Как минимум это будет кому-то полезно, а как максимум — найдётся человек, который исправит данную ситуацию.

Кого заинтересовало, прошу под кат.
Читать дальше →

Как сделать генерацию LaTeX и PDF в Sphinx

Время на прочтение6 мин
Количество просмотров21K
Когда мы полтора года назад внедряли у себя генератор документаций Sphinx, перед нами стояла задача генерировать PDF. Дело оказалось весьма непростое. Готовых инструкций “бери и делай” на ресурсах не было. Мы пошли методом проб и ошибок. Через 3 дня мучений мы умели генерить PDF с нужным нам оформлением.

Сделали и забыли — работает же. Пока не случилась проблема со шрифтами. Снова намучились и снова решили. Но что примечательно — с тех пор готовой инструкции по генерации в PDF на просторах интернета не появилось. Поэтому выкладываю нашу. Внутри алгоритм с комментариями и файлами шаблона, особенностями ReST для LaTeX, которые мы собрали опытным путём.



Статья для тех, кто уже использует Sphinx, но имеет проблемы с LaTeX или PDF. Если вы только рассматривает Sphinx как инструмент документирования, будет полезно представлять, как готовить и подавать документацию в этих форматах.
Читать дальше →

Удаление метаданных из PDF

Время на прочтение2 мин
Количество просмотров75K
image
Вот, казалось бы, тривиальная задача — удалить metadata из документа. Уже тысячу раз специалисты по паранойе информационной безопасности давали подобного рода рекомендации: «обязательно удаляйте избыточную метаинформацию из документов перед публикацией». И объясняли зачем это может понадобиться (пример). В сети масса инструкций о том как это сделать для различных форматов изображений и документов, но в то же время про такой распространённый формат как PDF внятной информации довольно мало.

Я провел небольшой эксперимент и по результатам собрал небольшой toolchain и freeware утилит. Вот этим всем и хочу поделиться.
Читать дальше →

Технология JPEG: анализ пространства решений

Время на прочтение7 мин
Количество просмотров9.2K

Изображения в формате JPEG, помимо собственно файлов с расширением .jpg, можно встретить внутри PDF-файлов и TIFF-файлов.


Стейкхолдеров технологии JPEG можно, наверное, разделить на следующие группы:


  • разработчики фотоаппаратов и сканеров;
  • фотографы (большие фотографии в хорошем разрешении с высокими требованиями к качеству);
  • соцсети и CDN'ы типа imgix, которые раздают залитые фоточки неконтролируемого UGC-происхождения, количества и размера в пережатом виде;
  • вебмастеры, которые управляют умеренным количеством не-UGC картинок с контролируемым качеством;
  • любители отсканированных бумажных книг и прочих исторических источников;

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

Читать дальше →

Как pdf (изображения) преобразовать в текстовый txt-файл

Время на прочтение4 мин
Количество просмотров47K
Вы скажете, что самый простой способ — выделить весь текст в pdf, скопировать его в буфер обмена и вставить из буфера обмена в текстовый файл. И будете правы. Но это не наш случай. Файл pdf — результат сканирования многостраничного документа. Т.е. содержимое pdf — это изображения текста.

image


Предлагаемый вариант решения реализован под Windows-8, но с небольшими корректировками, думаю, вполне может быть использован для Linux и OS X.
С задачей преобразования изображения в текст справляются Abbyy FineReader, MS Word, MS OneNote. Существуют также сайты, на которых изображение можно преобразовать в online: http://www.ocrconvert.com
Предлагаемое решение использует бесплатные утилиты. В приоритете также была работа в командной строке.
Читать дальше →

Информационное сокрытие в PDF документах

Время на прочтение8 мин
Количество просмотров21K
Существует масса способов информационного сокрытия одних данных внутри других данных. Самое частое, что обычно вспоминают – это стеганографию в изображениях, аудио и видео информации.

Однако контейнеры этим не исчерпываются. Совместно с двумя разгильдяями очень талантливыми студентами (а именно с lancerx и с PavelBatusov) мы решили разработать простенький just4fun-проектик информационного сокрытия в электронных документах.

Ссылка на то, что получилось (не судите строго): pdf.stego.su
(примеры PDF можно взять здесь)

Интерфейс довольного пользователя представлен на кавайной картинке:


Дальше читать

[PF] Печать PDF под .NET, векторный подход, практика

Время на прочтение13 мин
Количество просмотров6.6K

Как и обещал, продолжаю тему(раз, два) управляемой печати PDF из под .NET в векторном формате. О теоретических аспектах работы с PCL я рассказал в предыдущей статье, настало время разобрать программу для вывода на принтер PDF файла в векторе. Наше приложение будет полезно, например, когда нужно распечатать пачку многостраничных бланков или анкет на бумаге разных цветов и разной плотности. Если мы научимся управлять лотками принтера, избавим себя от ручного прокладывания страниц ;) В шаблоне будет указан номер лотка, из которого принтер заберет бумагу для текущей страницы. Причем шаблон будет применяться к документу циклически: если в документе 32 страницы, а в шаблоне 4, то шаблон повторится 8 раз для Simplex режима и 4 раза для Duplex.
Читать дальше →

[PF] Печать PDF под .NET, векторный подход, теория

Время на прочтение4 мин
Количество просмотров8.6K


Продолжаю тему печати PDF документов из под .NET.

В принципе, распечатать документ не трудно, есть даже готовые решения. Сложности возникают, когда нужно управлять некоторыми параметрами печати. В своей практике я столкнулся с задачей по реализации минитипографии — когда при печати документов нужно указывать, из какого лотка брать очередной лист, т.е. печатать документы по шаблонам. Первым делом я попытался найти готовые решения, но не обнаружив ничего подходящего, стал придумывать свое.
Хочу читать дальше!

Ближайшие события

[PF] Печать PDF под .NET, растровый подход

Время на прочтение8 мин
Количество просмотров15K

Под катом хочу рассказать про вывод на печать PDF фалов под .NET. С уклоном на печать из разных лотков принтера. Это бывает полезно, когда нужно распечатать документы, состоящие из разных типов бумаги разложенных по лоткам принтера.
Читать дальше →

jsPDF + canvas: экспорт в PDF многостраничной таблицы на русском языке

Время на прочтение4 мин
Количество просмотров29K
Генерация PDF… Эта тема не нова, однако порой можно столкнуться с некоторыми тонкостями, в итоге став на тернистый путь велосипедостроения. Сегодня я расскажу, как разрабатывал один такой велосипед.

Мне понадобилось сделать генерацию отчетов в PDF. По ряду причин я решил сделать это на стороне клиента. Беглый поиск предоставил мне выбор между jsPDF и pdfmake. Остановился на первом. А теперь подробнее…

Читать дальше →

Мастер-класс Дмитрия Склярова. DRM: вчера, сегодня и завтра

Время на прочтение34 мин
Количество просмотров16K
Сегодня мы продолжаем серию публикаций мастер-классов наших образовательных проектов и представляем вашему вниманию пост по мотивам выступлений Дмитрия Склярова, которые он провел в Техносфере и Технотреке. Тема выступления — Digital Rights Management. Видео выступления смотрите на IT.MAIL.RU, а текст — далее.

Идея этого выступления выросла из доклада, который я читал на конференции DEFCON в 2001 г., после чего у меня и у компании, в которой я работал (ElcomSoft), возникли некоторые юридические сложности. Через 1,5 года после данного выступления в США состоялся суд, в результате которого компанию признали невиновной по всем пяти пунктам обвинения, но история была достаточно громкой. Спустя годы я решил сделать новую версию того доклада, добавив информацию о новых тенденциях в сфере Digital Rights Management (DRM).

DRM в сфере аудио и видео


Расскажу, как возникла идея DRM. Все началось с бытового видеомагнитофона системы Betamax, который компания Sony выпустила на рынок в 1975 г. Он стал первым устройством, позволяющим самостоятельно записывать телевизионный эфир для последующего просмотра. А в 1976 г. Sony получила судебный иск от Universal Studios и The Walt Disney Company, в котором говорилось, что использование технологий бытовой видеозаписи нарушает авторские права. То есть я могу записать фильм с телевизора, и после этого, например, продать его или дать посмотреть кому-нибудь, кто никакого отношения к телевидению не имеет, или что-то в этом роде. Значит, компания Sony заранее виновна в том, что создала такое устройство, и подобные устройства надо следует запретить.


Читать дальше →

Wkhtmltopdf + Node.JS

Время на прочтение3 мин
Количество просмотров12K
Создание pdf документов является довольно распространенной задачей. С ней успешно справляется целое семейство библиотек, позволяющих буквально «собрать» pdf по частям или же заполнить его на основе заранее приготовленного шаблона. Данный подход надежен, т.к. мы можен расчитывать на то, что, поменяв текст одной надписи, не исчезнет пагинация на некоторых страницах. С другой стороны добавление новых страниц к pdf занимает определенное время у разработчика и, чем больше различных визуальных элементов, тем больше времени на это уходит.

Однако, есть и другой путь создания pdf документов: конвертирование из некоторого языка разметки с помощью соотвествующего инструмента. Данный способ будет эффективным и займет меньше времени на внесение изменений в pdf, если выбранный инструмент работает достаточно предсказуемо. Существует несколько подобных решений, но на нашем проекте мы остановили свой выбор на Wkhtmltopdf, которое генерирует pdf документ из HTML. Спустя год использования данного инструмента могу сказать, что выбор был сделан правильный, т.к. все потребности были покрыты с головой.

В данной статье я хочу поделиться библиотеками, позволяющими упростить работу c wkhtmltopdf в Node.JS.
Читать дальше →

Habrahabr в PDF-варианте для электронной книги

Время на прочтение8 мин
Количество просмотров30K
Часто зависая на Хабре и не только много раз ловил себя на мысли, что информация и статьи гораздо эффективнее воспринимаются с телефона или планшета, когда читаешь в удобной позе, или даже не дома — в транспорте, командировках, и т.п. Описание игр с напильником для оригинальной конвертации Хабрахабра в PDF-вариант для комфортного оффлайн чтения на электронной книге — скорее любопытный вариант эксперимента, где задействовано сразу несколько интересных сервисов и известных всем технологий: PHP, CURL, ajax, js, css.
Читать дальше →

Экспорт Избранного на Хабре в PDF. Версия 2.0

Время на прочтение3 мин
Количество просмотров29K
Доброго времени суток, хабражители!



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

Представляю вам новую версию программы закачки статей с Хабра, Гиктаймс и Мегамозг в формате PDF.

Новый проект называется HabraParse.

Проект состоит из библиотечки, которая парсит сайты, и скрипта, использующего лишь часть возможностей этой библиотеки. Скрипт написан на python3, для его работы потребуются модули docopt, requests и weasyprint (все их легко можно установить командой pip install name).

На текущий момент в скрипте имеются следующие возможности:
  • скачать статью по её ID;
  • скачать список URL избранного для заданного пользователя;
  • скачать статьи из избранного в папку в формате PDF или HTML (пока реализация HTML не на высоте, поэтому по умолчанию используется формат PDF, но он работает значительно дольше).


Использование опций --gt/--mm позволяет сохранять статьи с GeekTimes.ru и Megamozg.ru.

Краткое описание параметров скрипта
Usage:
  ./habraparse.py save_favs_list [--gt|--mm] <username> <out_file>
  ./habraparse.py save_favs [--gt|--mm] [-cn --save-html --limit=N] <username> <out_dir>
  ./habraparse.py save_post [--gt|--mm] [-c --save-html] <topic_id> <out_file>

По умолчанию все команды работают с проектом HabraHabr.ru.
При задании опций --gt/--mm скрипт будет работать с GeekTimes.ru/Megamozg.ru.

Команды:
  save_favs_list - сохранение в файл <out_file> списка URL избранного для пользователя <username>
  save_favs - сохранение в папку <out_dir> статей из избранного для пользователя <username>
  save_post - сохранение в файл <out_file> статьи с заданным ID



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

Читать дальше →

Печатаем документ в виде чека с помощью Python и Parse

Время на прочтение3 мин
Количество просмотров29K
Не так давно передо мной встала задача: распечатка документа определенного формата с помощью мобильного устройства. На телефоне должны были вводиться определенные значения, отправляться на сервер (для того, чтобы потом можно было использовать эти данные на веб сайте) и печать документ с этими данными. С самого начала мой выбор пал на Google cloud print, так как он максимально прост в использовании и решении подобных задач. Но при использовании этого варианта есть несколько недостатков:

  • Очень медленная обработка запроса
  • Нужно где-то формировать PDF документ и возвращать ссылку на него
  • Постоянно нужно выбирать принтер (если у вас подключен только один принтер к Google cloud print, то все равно нужно выбирать между ним и сохранением на Google Drive)

Поэтому я решил написать свой скрипт для подобных операций.
Читать дальше →