Компания Google открыла исходные тексты проекта PDFium (https://code.google.com/p/pdfium/), в рамках которого развивается движок для отображения и обработки документов в формате PDF, а также сопутствующий комплект для разработчиков (FPDF SDK (https://pdfium.googlesource.com/pdfium/+/master/fpdfsdk)), позволяющий задействовать движок в своих проектах. Код проекта написан на языке Си++ и распространяется (http://pdfium.googlesource.com) под лицензий BSD.
Судя по присутствующему (https://pdfium.googlesource.com/pdfium/+/master/core/src/fpd... во всех исходных файлах примечанию и списку коммиттеров (https://code.google.com/p/pdfium/people/list), движок основан на коде, созданном компанией Foxit Software (http://www.foxitsoftware.com), развивающей популярный проприетарный продукт для просмотра PDF - Foxit Reader (http://ru.wikipedia.org/wiki/Foxit_Reader). Отдельно стоит отметить, что PDFium использует (https://pdfium.googlesource.com/pdfium/+/master/core/src/fxg... геометрическую библиотеку AntiGrain (http://antigrain.com/), автором которой является Максим Шеманарев, погибший (http://rsdn.ru/forum/life/5377743.flat) год назад. Компания Google намерена включить PDFium в состав браузера Chromium, чтобы поддержать функциональный паритет с браузером Chrome. С точки зрения производительности и качества поддержки PDF, PDFium превосходит написанный на JavaScript просмотрщик PDF.js (https://github.com/mozilla/pdf.js), интегрированный (http://www.opennet.me/opennews/art.shtml?num=36156) в Firefox.
URL: https://news.ycombinator.com/item?id=7781878
Новость: http://www.opennet.me/opennews/art.shtml?num=39838
О, отлично. Фокситовский движок весьма хорош и шустр, если его можно будет использовать в открытых проектах - это жирный плюс.
> О, отлично. Фокситовский движок весьма хорош и шустр, если его можно будет
> использовать в открытых проектах - это жирный плюс.И ещё он будет избавлен от уязвимостей (см. недостатки xpdf, acroread).
Поглядим, как там с уязвимостями - но, учитывая, что код весьма неплох, плюс гугловская оплата за баги - думаю, особых ужасов ждать не приходится.
Всё-таки, в отличие от других PDF-движков этот сразу планируется встраивать в браузер, т.е. обрабатывать им данные из недоверенных источников. Ну и культура написания защищённых программ у Гугеля значительно лучше, чем у Адобы.
ТОка печатает безобразно
> ТОка печатает безобразноКак самокритично!
Было бы хорошо, если бы мозильщики забили на свой JS-горбыль, который истошно жрет проц по 2 минуты и юзали вот это.
Зато безопасно
> Зато безопасноЕсли не считать DOS (подвисание браузера) за уязвимость.
это всего лишь самовнушение.
> Зато безопасноА если компьютер не подключать к питанию - тогда вообще станет зашибись. Если программой невозможно пользоваться - при этом уже не так важно какая она там мегабезопасная.
>свой JS-горбыль, который истошно жрет проц по 2 минутыЛОЛШТО?
http://arewefastyet.com/
ЛОЛТО. Это у тебя сравнение JS-движков, а не производительности pdf.js и PDFium. Разницу понимаешь?
> ЛОЛШТО?Лолто. Это у...ще нисколько не сомневаясь будет перегонять весь PDF на 500 страниц в JS, пыхтя две минуты. Эти две минуты проц положен в полку, а интерфейс браузера будет клинить. Сколько оно памяти при этом съест - понятно, думаю. На большом может влегкую пойти на многие гигабайты.
Особенно хорошо когда ты в первые же 15 секунд понимаешь что этот электронный компонент тебе в принципе не годится по одному из ключевых параметров, например. Такая эффективность работы - 2 минуты ффтыкания на экран чтобы за 15 секунд понять что этот пдфник мне вообще не нyжен.
Мало того что писали на тормозном JS, так еще выбрали максимально идиoтскую стратегию рендеринга "а давайте все и сразу попробуем зарендерить, все 500 страниц!"
А отключить встроенный просмотрщик руки отваливаются?
> А отключить встроенный просмотрщик руки отваливаются?Ну да, выходя на улицу не забудь одеть противогаз, напялить каску, убедись что взял бронежилет и костюм химзащиты. И миноискатель главное не забудь. Вдруг какой-нибудь добрый человек перекладывал асфальт? Для вашего же блага!
Для нытиков, идём в about:config
pdfjs.disabled;true. Теперь скачиваем pdf и смотрим в том, чём нравится
Собственно, даже about:config не нужен, settings->applications - и выбираем для pdf нужный вариант. Но идея Мозиллы менее загадочной от этого не становится.
просто она работает. да, у меня и7 и я не дрочу на индикатор загрузки проца
> индикатор загрузки процаФфтыкать по 2 минуты в сильно тормозящий браузер - удовольствие ниже среднего. Оно конечно работает, но вопрос в том как. Мало того что JS сам по себе тормоз, так они еще выбрали максимально глупую и недружественную к пользователю стратегию рендеринга - рендерить сразу весь документ при попытке открытия. Более вменяемые вьюшки рендерят по мере мотания документа. И при том прорисовывают документ быстрее и лучше чем этот кусок гуано от мозиллы. Который половину пдфников рендерит некорректно, для начала. Простой как валенок evince обставляет это и по скорости рендера на порядки и по отсутствию глюков. Не говоря что он открывает пдфники мгновенно, без клина интерфейсов где либо на минуту.
>[оверквотинг удален]
> Ффтыкать по 2 минуты в сильно тормозящий браузер - удовольствие ниже среднего.
> Оно конечно работает, но вопрос в том как. Мало того что
> JS сам по себе тормоз, так они еще выбрали максимально глупую
> и недружественную к пользователю стратегию рендеринга - рендерить сразу весь документ
> при попытке открытия. Более вменяемые вьюшки рендерят по мере мотания документа.
> И при том прорисовывают документ быстрее и лучше чем этот кусок
> гуано от мозиллы. Который половину пдфников рендерит некорректно, для начала. Простой
> как валенок evince обставляет это и по скорости рендера на порядки
> и по отсутствию глюков. Не говоря что он открывает пдфники мгновенно,
> без клина интерфейсов где либо на минуту.я где то сказал хоть слово, что оно тормозит? повторюсь - у меня оно работает мгновенно и без тормозов. иначе я бы первым делом его отключил
да, я не открываю мегаэпичные пдф на 100500 страниц с блудницами и троянами. могу допустить, что в этом случае будут лаги. но для моего юзкейса - жс просмотрщика хватает с головой
> встроенного в PDF-файлы JavaScript кода"Ух ты, а что, так можно?"
И, главное, а как это заблокировать? А то ща все пи...сы начнут кто биткоины майнить, кто за пользователями следить, кто серваки ддосить кучей запросов...
До Чингачгука только на двадцатый год дошло, что у сарая нет задней стены? Ну ты и т@рмозилла, да еще поди идейный.Этой фишке в PDF 20 лет в обед.
> Этой фишке в PDF 20 лет в обед.Это не фишка, это фишинг.
> И, главное, а как это заблокировать?Ты не поверишь. Как обычно, в стандартной менюшке хрома, появляющейся по щелчку слева от урла в адресной строке.
Мде, хром головного мозга во все поля.
>поддержать функциональный паритет с браузером Chrome.Ну сейчас это не нужно, ведь есть https://chrome.google.com/webstore/detail/oemmndcbldboiebfnl.../ . Да и засинхронизировать его можно в случае чего. Но надо посмотреть, что оне там сделают. Главное, чтобы их новый просмотрщик можно было в случае чего отключить и вновь пользоваться вышеуказанным.
Еще один повод поблагодарить Google за поддержку СПО. Теперь не нужно будет самому добавлять в Chromium pdf-просмотрщик из Chrome.
>Теперь не нужно будет самому добавлять в Chromium pdf-просмотрщик из Chrome.
>самомуплохо быть тобой.
вообще-то есть пакеты с хромо-плагинами.
>При этом интеграция PDFium в Firefox маловероятна, так как для обработки встроенного в PDF-файлы JavaScript кода PDFium использует привязку к JavaScript-движку V8 и требует значительной переработки для перевода на использование движка SpiderMonkey.Мозилловцы специально же пишут просмоторщик на js, не от того что альтернатив нет. Точно так же, как и флэш переписывают на него. Просто JavaScript - это технолгия будущего, настоящая кроссплатформенность и гибкость.
> Мозилловцы специально же пишут просмоторщик на js, не от того что альтернатив
> нет. Точно так же, как и флэш переписывают на него. Просто
> JavaScript - это технолгия будущего, настоящая кроссплатформенность и гибкость.Ага, прямо как один сказал "C - язык будущего". :-) Единственная польза от PDF.js в том, что просмотрщик крутится в той же песочнице, что и скрипты со страницы. То есть, в отличие от C++-ного кода, не добавляет новых уязвимостей (если не считать уязвимостью DOS - подвисание браузера).
>Единственная польза от PDF.js в том, что просмотрщик крутится в той же песочнице, что и скрипты со страницы.Нет же. JS позволяет показать пдф-ку хоть где, где есть нормальный браузер.
>JS позволяет показать пдф-ку хоть где, где есть нормальный браузер.Врёшь, одного "нормального бразера" недостаточно. Нужно ещё пару лишних гигабайт памяти.
>Нужно ещё пару лишних гигабайт памяти.А мой телефон с 512 оперативы то этого не знает!
> А мой телефон с 512 оперативы то этого не знает!Попробуй на нем в мозильской вьюшке посмотреть даташит на Ti OMAP. Хочу посмотреть как телефон расплавится и стечет в унитаз :)
Нормальный браузер есть на 3-х ОС: Windows, Linux, OSX. И везде, кроме Windows, есть просмотрщик PDF.
> Нормальный браузер есть на 3-х ОС: Windows, Linux, OSX. И везде, кроме
> Windows, есть просмотрщик PDF.А как же телевизоры всякие? Сейчас куда не плюнь интернет встраивают.
> А как же телевизоры всякие? Сейчас куда не плюнь интернет встраивают.Не думаю что это попадает под критерий нормального браузера.
>просмотрщик крутится в той же песочнице, что и скрипты со страницы. То есть, в отличие от C++-ного кода, не добавляет новых уязвимостейА если С++ный код крутится в другой песочнице, это добавляет уязвимостей?
Каким образом? Или вы просто имеете в виду что с точки зрения теории вероятности больше песочниц - больше вероятности багов?
> А если С++ный код крутится в другой песочнице, это добавляет уязвимостей?Да. Следим за руками:
а) Песочницы неидеальны - они содержат ошибки.
б) Чем больше вариантов кода может бегать в песочнице, тем легче её взломать. Скажем, если в песочнице может выполняться только Hello world (в силу каких-то обстоятельств), такая песочница, скорее всего, невзламываема.
в) Мы можем подсовывать браузеру любой JS код, а вот С++ код, выполняемый в песочнице, мы менять не можем. Например, мы можем подсунуть ему PDF.js, а заставить передать управление PDFium'у не можем (если тот не встроен).
Таким образом, PDF.js не увеличивает кол-во программ, которые могут использоваться для взлома JS песочницы, а PDFium - увеличивает. Соответственно, если забыть про DOS атаки на браузер, то PDF.js безопаснее.
> а) Песочницы неидеальны - они содержат ошибки.Это можно сказать и про JSную VM, если что. Более того - половина уязвимостей именно там и возникает.
> б) Чем больше вариантов кода может бегать в песочнице,
По определению, количество кода бесконечно. Мозилла генерит код из входных данных.
> Таким образом, PDF.js не увеличивает кол-во программ, которые могут использоваться для
> взлома JS песочницы,Да, тав всего 1 немеряный движок всему вебу вывешен. И половина секурити багов лисы - именно там.
Прочесть прочёл, а понять не понял. Аноним.
Ктонибудь сравнивал, как оно по сравнению с poppler?
Жду в chromium.
Конечно ок что открыли, но имхо Mozilla ничего переделывать из-за этого не надо. У меня и на стареньком нетбуке Eee PC pdfки в Firefox с достаточной скоростью открываются и корректно отображаются.
А если открыть две pdf-ки ?
А зачем вообще в браузере открывать pdf-ки?
Нормально. Лаги есть, но некритичные (вроде полусекундной задержки раз в 15 секунд). В одной вкладке даташит на Atmel, 448 страниц, в другой на PIC16F87X, 218 страниц. Первое что в гугле нашлось. Asus Eee PC 1005PE, Mint 15 MATE 32bit, Firefox 32.0a1.
>Лаги есть, но некритичные (вроде полусекундной задержки раз в 15 секунд)Ща Generational Garbage Collector допилят и те пропадут.
> В одной вкладке даташит на Atmel, 448 страниц, в другой на
> PIC16F87X, 218 страниц.Теперь расскажи сколько минут они открываются.
> Первое что в гугле нашлось.
Ну а вот если фичой еще и пользоваться, а не "первое что в гугле" - окажется что PDF бывают разные. Я уж не знаю от чего это зависит, но некоторые пдф рендерятся целиком и при том дико тормозно, заклинивая браузер на пару минут.
Не говоря о том что я иной раз вижу рендеринг при мотании пдфки. А иногда приходится откровенно ждать пока страница отрендерится, если там много линейной графики, например более-менее сложная схема нарисована. Некоторые пдф просто некорректно рендерятся - на схеме может внезапно не оказаться половины линий. Висят какие-нибудь отверстия и черточки в воздухе. Чего висят? Открываем в нормальной вьюхе - о, там схема оказывается! Настолько поганого рендера не демонстрировал ни 1 другой просмотрщик вообще.
По моему нескромному мнению это одновременно самый недоразвитый, самый тормозной и самый проблемный в использовании просмотрщик PDF который я когда либо видел. И самый ресурсоемкий. Если это по мнению мозиллы "не надо менять" - мне тогда пора менять браузер.
И большие файлы тоже?
> И большие файлы тоже?Да (448 страниц). Asus Eee PC 1005PE, Mint 15 MATE 32bit, Firefox 32.0a1.
Но вы можете прислать мне для теста ссылку на большой в вашем понимании документ.
> Но вы можете прислать мне для теста ссылку на большой в вашем
> понимании документ.Просто погуглите разные PDF и опробуйте хотя-бы сотню-другую. Два пдфа из всех миллионов на планете - это не тест, извините.
Так это получается, что Chrome по сути стал полностью открытым?
Flash же.
Итого, для рендеринга есть xpdf с отпрыском poppler, Ghostscript, реактивный MuPDF, да вот этот PDFium. А чем из C создавать PDF? libHaru не умеет в UTF-8 и CCITT/G4. Точнее, в UTF-8 умеет, но результат либо рендерится неправильно, либо через pdftotext не проходит и поиск не работает; а CCITT понимает только на импорт (в чём мало смысла, поскольку TIFF библиотека импортировать не умеет). PoDoFo? Не умеет жать в CCITT/G4; с UTF-8, на первый взгляд в сорцы, получше. Есть ещё варианты?
http://www.foxitsoftware.com/russian/products/sdk/
> http://www.foxitsoftware.com/russian/products/sdk/Вы сайтом ошиблись. Тут про открытые технологии. А вендовoзная blob-онли буита - это не сюда, извините.
Человек же просил рабочее а не открытое
Я (тред-стартер) наивно полагал, что на сайте, посвященном открытому ПО, в новости об открытой библиотеке подскажут софт под свободными лицензиями (тем более, в коментарии закрытого ПО не упоминал). Заблуждался, должно быть…Собственно, меня пока устраивает питонячий свободный пакет ReportLab, но для идеала и ему не хватает поддержки вывода в CCITT/G4.
Есть еще SumatraPDF под GPL v3 лицензией.
> Есть еще SumatraPDF под GPL v3 лицензией.Цитата из «Википедии»: «For rendering PDFs it uses the MuPDF library». Да ещё и Windows-only.