Вот и все.
Код выглядит многообещающе!
Непонятно, что это значит. Пользователь больше не активен на Github. Можно открыть снова, если потребуется.
Позвольте мне погуглить это для Вас.
http://www.google.com/search?q=site : adobe.com + pdf + layer
http://www.google.com/search?q=site : adobe.com + pdf +% 22optional + content + group% 22
Стандарт, начиная со спецификации PDF 1.5.
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf
раздел 8.11.3 «Сделать графический контент необязательным»
Присутствует в пользовательском интерфейсе каждой программы просмотра Adobe PDF уже около миллиарда лет.
Слои PDF обычно соответствуют слоям программы рисования Illustrator (и аналогичных), слоям в выходных данных ГИС и т. Д.
Я был бы более «активным» на github (и с другим бесплатным программным обеспечением), если бы мне нравилось, когда меня бьют больше. (Я перестал использовать Firefox после «обновления», которое убило действительно полезный http://code.google.com/p/firefox-mac-pdf/ плагин, который также не поддерживал PDF-слой, но в остальном действительно работал очень хорошо . Браузер без просмотра PDF-файлов = бесполезен. Safari, по крайней мере, справляется с этим, несмотря на всю остальную ерунду.)
Привет, я не хотел тебя оскорбить! Мы занимаемся устранением проблемы, поэтому, пожалуйста, простите, что закрыли вам проблему.
И спасибо за подробный ответ - он определенно прояснил, что вы имели в виду.
Трудно сделать повторное предположение о кратких пользовательских запросах - имел ли пользователь в виду «слои» на уровне пользовательского интерфейса / средства просмотра или на уровне спецификации (необязательный контент) и т. Д.? Я думал о том, чтобы спросить здесь, но я ошибочно предположил, что вероятность ответа была низкой, учитывая, что единственным вашим действием на Github был этот комментарий (мы польщены! :)).
Как я уже сказал, открытие - это определенно вариант - считайте, что это сделано.
Еще раз спасибо.
Я загрузил сюда крошечный файл, который демонстрирует неправильное поведение рендеринга для необязательных групп контента и / или контуров отсечения (я не уверен, что на самом деле вызывает плохое поведение). Если вы попытаетесь добавить #textLayer=visible
к URL-адресу, вы увидите, что pdf.js правильно находит и отображает текст, но просто неправильно обрабатывает остальную часть визуализации.
(Этот конкретный PDF-файл появился из-за моей работы над этим подходом к отображению ссылок в LaTeX с использованием выделения вместо полей. Текст отображается в текущем пути отсечения ( 7 Tr
), а не как обычный текст ( 0 Tr
), то обтравочный контур заполняется обычным цветом текста и в дополнительной группе содержимого снова заполняется цветом выделения. IIRC, canvas.js#L982
уже имеет некоторую поддержку для добавления текста к обтравочному контуру. , но, похоже, здесь он не работает ... В результате этот комментарий может не быть на 100% применимым к его ошибке; не стесняйтесь перенаправить меня на более подходящий, если он существует ;-))
@blerner Я думаю, что эта проблема отличается от того, о чем вы спрашиваете. Можете ли вы открыть новый выпуск своим комментарием выше?
Я тоже ищу функциональность OCG ... это в планах? Может кто-нибудь указать мне на дорожную карту?
Есть новости о поддерживающих слоях? Было бы невероятно полезно. Также было бы полезно получить имена объектов (например, имена объектов и групп, которые вы можете установить в Illustrator).
Мне также интересно знать, когда будут поддерживаться слои (в частности, их отображение / скрытие).
Для этого пока нет реализации, и, насколько я знаю, никто не работает над этим. Если кто-то хочет над этим поработать, смело создавайте пулреквест.
Файлы с OCG:
http://ims.er.usgs.gov/images/USTopo/
(не все, только огромные)
Также ожидайте этой функции. Получить информацию о слоях / показать слой / скрыть слой.
Привет, также ожидайте поддержки OCG (уровень). Есть расписание?
@timvandermeij Вложение представляет собой файл в формате pdf, экспортированный из архитектурного чертежа, содержащего сотни слоев.
OCGs_demo.PDF
В настоящее время реализация этой функции не планируется. Если кто-то хочет над этим поработать, дайте нам знать. Если вы можете прикрепить сюда больше примеров файлов PDF, это поможет людям начать работу и проверить свою работу.
Вот простой:
PDFBOX-4103-OCG.pdf
старый пример с прозрачностью и ocgs, было бы неплохо, если бы ocgs можно было выбирать из браузера / страницы
_myChessboardv1.2_mockup_ImageArray_beta0.7 - public.pdf
Я пытаюсь определить какой-то контент из PDF.
Я понимаю, что не могу использовать слои, потому что они не поддерживаются.
Это корект?
А есть ли другой способ?
Я тоже жду этой функции. Получить информацию о слоях / показать слой / скрыть слой. Это будет очень полезно для использования Solidworks / Inventor.
Привет, я понимаю, что этой проблеме 8 лет, но я просто хотел бы добавить к случаю, что это была бы очень полезная функция. Может, за 2 года все изменилось?
Обновите статус, если кто-то работал над этой проблемой и решил ее.
Спасибо
+1
+1
Пожалуйста, не публикуйте отдельные комментарии «+1», а дайте исходному комментарию (https://github.com/mozilla/pdf.js/issues/269#issue-1238154) отметку «Нравится», используя механизм реакции GitHub. Это предотвращает ненужные удары по этой проблеме и позволяет нам фильтровать на основе приоритета сообщества.
Привет, есть ли какие-нибудь обновления приоритета этого будущего запроса? :)
Кажется, что много дублированных сообщений ссылаются на одну и ту же проблему, которую нельзя объяснить и показать в хорошем примере в этом сообщении?
Сейчас над этим никто не работает. Если кто-то хочет внести свой вклад, мы всегда рады рассмотреть запросы на включение.
Причина, по которой это еще не реализовано, скорее всего, заключается в том, что это довольно сложная тема, учитывая то, как все это описано в спецификации PDF.
Игнорируя множество других особенностей, связанных с OCG, раздел «8.11.3.1 Общие» спецификации заявляет (обратите внимание на второй пункт):
Когда определено, что часть необязательного содержимого в PDF-файле должна быть скрыта, происходит следующее:
- Контент не отрисовывается.
- Операции с графическим состоянием, такие как установка цвета, матрицы преобразования и отсечения, по-прежнему должны применяться. Кроме того, должны применяться побочные эффекты графического состояния, возникающие из-за операторов рисования; в частности, текущая позиция текста должна обновляться даже для текста, заключенного в необязательный контент. Другими словами, параметры состояния графики, которые сохраняются после конца раздела с помеченным содержимым, должны быть одинаковыми независимо от того, является ли необязательный контент видимым или нет.
Привет, я пытался найти решение этой проблемы на прошлой неделе и надеялся, что кто-нибудь укажет мне правильное направление.
Для моего варианта использования не было бы необходимости переключать дополнительные слои, мне просто нужно было бы скрыть их в моем средстве просмотра.
Пока мне удавалось идентифицировать «скрытые» слои внутри document.js следующим образом:
const hiddenLayers = this.xref.root._map.OCProperties._map.D.get("OFF");
Но я не смог провести связь между слоями и фактическим контентом, который отображается pdf.js. Так что, если бы кто-нибудь мог дать мне подсказку, как выяснить, какие данные должны быть скрыты, я бы с удовольствием использовал их.
@brendandahl как работает новый API? Что такое «необязательный контент»? Разве мы не можем просто сканировать существующие слои и скрывать их? Благодаря!
Что такое «необязательный контент»?
См. Https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf#G7.3858031
Разве мы не можем просто сканировать существующие слои и скрывать их?
К сожалению, действительно довольно сложно понять, о чем вы здесь спрашиваете.
Примечание. Эта функция еще не интегрирована в программу просмотра по умолчанию, однако она будет рассмотрена в # 12170.
Извините, я имел в виду их обнаружение и возможность манипулировать ими (скрыть, удалить и т. Д.)
Я попробовал эту функцию, и она работает, как ожидалось, а именно: вместо отображения всех слоев отображаются только те, которые доступны для просмотра.
@brendandahl как работает новый API? Что такое «необязательный контент»? Разве мы не можем просто сканировать существующие слои и скрывать их? Благодаря!
Полный API все еще требует немного дополнительной работы, но вы можете pdfDoc.getOptionalContentConfig
затем перебрать различные optionalContentConfig.groups
и указать, какие из них вы хотите скрыть / показать ( optionalContentGroup.visible
). Затем передайте эту конфигурацию в вызов на страницу render
a.
Полезные ссылки:
https://github.com/mozilla/pdf.js/blob/63e33a5895bb730ce0e6a65e4d0de12ed043b649/src/display/api.js#L779
@brendandahl , это выглядит очень интересно! Я попробую. Благодаря!
Самый полезный комментарий
Также ожидайте этой функции. Получить информацию о слоях / показать слой / скрыть слой.