Что такое код cpdf_rlineto

cpdf_rlineto

Руководство по PHP
Пред. След.

cpdf_rlineto

(PHP 3 >= 3.0.9, PHP 4, PHP 5 cpdf_rlineto ( int pdf_document, float x_coor, float y_coor [, int mode] )

The cpdf_rlineto() function draws a line from the current point to the relative point with coordinates ( x_coor , y_coor ). Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Необязательный параметр mode определяет единицу измерения. Если он не указан, либо равен 0, используется определенная по умолчанию для страницы единица измерения. Иначе координаты измеряются в пунктах postscript без учета текущей единицы измерения.

Что такое код cpdf_rlineto

В последнее время на просторах интернета обнаружилось очень много PDF converter’ов, reader’ов и write’ов. И подавляющее большинство из них предлагается за деньги. Сама программа от 10$ до 300$. А уж исходный код за гораздо большие деньги цена начинается от 200$ а в одном месте (заинтересовавшись этим полазил по инету) аж за 900 евро.

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

Обычный PDF файл состоит из четырех частей

Что такое такое ? Это обычное упоминание о версии PDF specification. Которое присутствует в первой строке PDF файла. Например «%PDF-1.3» В седьмой версии акробата которая вышла где то в начале лета этого года, этот номер «%PDF-1.7″, но это не версия продукта, это версия именно спецификации. Второй строкой PDF идет небольшая аброкадабра (видимо предназначена для дальнейшего использования) » %вгПУ»

Все с первой частью PDF разобрались.

Что из себя представляет вторая часть которая называется ?

Ответ очень простой: это последовательность объектов, описание которых как и хедера представлены в текстовом виде.

Каждый объект это текстовой фрагмент с порядковым номером в имени например «4 0 obj»

  • 4 это порядковый номер объекта
  • 0 это номер (ре)генерации файла то есть когда файл обновляется (редактируется ) то данный номер увеличивается
  • obj это кодовое слово означающее что в теле документа нам встретился объект

Все объекты делятся на косвенные и прямые. Все косвенные, и их большинство, после слова obj имеют в своем теле делиметер » >» и кодовое слово endobj

Прямые объекты не должны иметь в своем теле открывающих и закрывающих делиметеров » >» Все косвенные объекты доступны через cross-reference table . В ней представлены ссылки в виде смещения от начала файла до начала объекта (Данные (строки) в объекте разделяются #13#10 либо #13 )

Тип «самого главного» объекта в теле PDF файла носит гордое имя «/Catalog»

На самом деле в теле минимального PDF файла типа «Hello world» должно быть 3 «главных» объекта. Давайте я их перечислю по типам:

  • «/Catalog» содержит в себе ссылку : на дерево страниц ( /Pages )
  • «/Pages» содержит в себе ссылку на группу страниц документа
  • «/Page» содержит в себе ссылку на объекты относящиеся к конкретной странице.

И несколько «второстепенных»

Разберем объект страница:

  • /Rotate поле показывающее на сколько градусов изображение страницы должно быть повернуто при отображение в программе
  • /MediaBox и /CropBox поля описывающие размер страницы
  • /Parent ссылка на родительский объект «/Pages»
  • /Resources это поле описывает какой фонт должен быть использован при отображении страницы (фонт это отдельный объект) и установку ProcSet эта установка показывает какое содержимое потока данных данной страницы (тоже может быть определен как объект, а не как поле)
  • /Contents Самое интересное поле в объекте «страница», дает ссылку на объект содержимого данной страницы, причем : если это поле отсутствует в объекте «страница» значит страница пустая

/Length 305 — это поле показыввающее сколько байт от слова stream до слова endstream

Самый простой вариант — это некодированный и несжатый поток данных в объекте stream . Он ограничивается операторами BT и ET

/F12 9 Tf —

  • /F12 это кодовое имя объекта который характеризует фонт используемый на данной странице
  • 9 это размер фонта
  • Tf это оператор который характеризует что данная строка в объекте steam есть установка фонта и размера

10 782 TD — это цифры откуда начинается данная строка (отсчет производиться от левого верхнего угла)

Tj — это оператор перевода на новую строку

Ну а в круглых скобках наш текст

Кодированный поток я сдесь не объясняю. Он основан на алгоритмах RC4, RC5, MD5.

Что такое объект Font

  • /Type /Font Естественно название типа
  • /Subtype /Type1 название подтипа
  • /Name /F7 F7 это кодовое имя

PDF поддерживает несколько видов фонтов. Они перечисленны ниже

  • Type 1, including subsets and Multiple Master «snapshots»
  • Type 3
  • TrueType, including subsets
  • Type 0

Честно говоря, я не разбирался с Type 3, TrueType, including subsets, Type 0 ничего по ним сказать не могу.
А Type 1 — это следующие фонты

Это объект с названиями кодовых имен для фонтов первого типа. По этому кодовому имени можно легко получить сам объект фонт .

ВСЕ: то есть минимальное Состоит из следующих объектов: «catalog» , «pages», «page», «Resources» (опиционально может присутствовать, как поле в объекте страница), нетипизированный объект «stream» , группа объектов «font»

Что такое ?
На самом деле это обычная текстовая таблица, она начинается со слова xref и своем теле имеет ссылки на все косвенные объекты в документе. Вот пример 0 27 Эти цифры обозначают следующее :

  • 0 — первый object number в таблице
  • 27 — количество элементов таблицы

Первый элемент таблицы всегда иммет вид » XXXXXXXXXX 65535 f » где X это цифра, а 65535 это значение по умолчанию для первого элемента в таблице. Символ «f» обозначает » free «, то есть объект не используется Ссылки на объекты, которые используются, в конце имеют символ » n «

Разберем элемент данной таблицы.

  • Первые 10 цифр — это смещение от начала файла до начала объекта.
  • 0000000016 означает что через 16 байт от начала файла Вас встретит первое упоминание об объекте то есть, например, 4 0 obj

Вторые пять цифр — это номер генерации файла. Если файл только что создан, то они всегда нули. Если файл модифицируется, то это число увеличивается на единицу. То есть, 0000000024 00001 f

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

Взаимосвязь таблиц осуществляется при помощи последнего элемента и кодового слова startxref

Канонический, только что созданный PDF файл, имеет только одну таблицу, после таблицы идет элемент trailer

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

Это значит, что через 173 байта от начала документа, будет присутствовать кодовое слово xref . Но, если файл был отредактирован, то последний в файле трайлер будет иметь вид:

Но, если мы обратимся к таблице, куда указывает ссылка startxref 173 , то мы найдем следующую таблицу, а за ней трайлер, который будет иметь поле /Prev 3896

Данное поле /Prev 3896 указывает нам на предыдущую таблицу, а ссылка startxref 567 указывает на следующую таблицу и так практически до бесконечности, пока в очередном поле startxref мы не увидим 0 . Это значит, мы прочитали все таблицы.

В данном очерке, конечно, не хватает исходного кода. Вот и он: представлены два модуля основной » PDFDocument » и вспомогательный » PDFBaseFonts «

Что означает часть кода pdf

Тема была в универе про вирусы в pdf файлах.
Задание такое:
В коде любого пдф файла есть вторая строка: %µµµµ ( не во всех файлах). Что она означает?

Часть пдф кода:
%PDF-1.5
%µµµµ
1 0 obj
>>>
endobj
2 0 obj
>
endobj
3 0 obj
>/ExtGState >/XObject >/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 419.64 595.32] /Contents 4 0 R/Group >/Tabs/S/StructParents 0>>
endobj
4 0 obj
>

11.03.2015, 18:16

Подскажите начинающему, что означает эта часть кода
Здравствуйте. Учу джаву потихоньку. Делаю задание, и не пойму в этой части кода, что означает int.

Что означает строка кода?
Что делает эта строка current->n%2 == 1 for(current = Head->Right; current != Head; current.

Что означает строка кода с => ?
public string GetName() => Name; что означает эта строка и вот эта строка: public void.

Что означает строка кода?
Возник такой вопрос, есть код программы которая в строке заменяет арабские цифры в словесные.

Департамент ИТ

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

В меню файл выберите «Печать» (Рис. 1).

В открывшемся окне выберите принтер PDF-XChange for ABBYY PDF Transformer (Рис. 2) или любой другой PDF принтер и нажмите «Печать».

После отправки всех страниц на этот принтер программа предложит сохранить новый файл. В этом файле будет снята вся защита (Рис. 3) и его можно будет редактировать.

Прочтите также:

Попробовал снять защиту с документа, защищенного от записи изменений, как описано выше, только в PDF-XChange 4.0 (для PDF-Transfomer 3.0). В получившемся документе поля, предназначенные для редактирования, стали недоступны для редактирования.
Вот ссылка на первоначальный документ http://www.cic.gc.ca/english/pdf/kits/forms/IMM1283E.pdf

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

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

PDF Password Remover 3.1
Wondershare PDF Password Remover 1.5.1
Эти программы за несколько секунд удаляют пароли PDF файла, пользуйтесь ими.

Бред….в новых версиях ПДФ нету таких принтеров вообще!

Кк это сделать на windows 8?

http://smallpdf.com
на этом сайте все расшифровывается

Снять защиту можно этой программой: Manyprog PDF Password Recovery
http://ru.manyprog.com/pdf-password-recovery.php

Можно этот документ сохранить «как другой», в формате ексель

Можно этот файл сохранить в формате ексель и спокойно редактировать

Что такое код cpdf_rlineto

(PHP 3 >= 3.0.9, PHP 4, PHP 5

Description bool cpdf_rlineto ( int pdf_document, float x_coor, float y_coor [, int mode] )

The cpdf_rlineto() function draws a line from the current point to the relative point with coordinates ( x_coor , y_coor ). Returns TRUE on success or FALSE on failure.

The optional parameter mode determines the unit length. If it is 0 or omitted the default unit as specified for the page is used. Otherwise the coordinates are measured in postscript points disregarding the current unit.

UniversalTransferDocumentSellerTitleInfo¶

Структура данных UniversalTransferDocumentSellerTitleInfo представляет исходные данные для формирования файлов в XML-формате при помощи метода GenerateUniversalTransferDocumentXmlForSeller . При заполнении структуры UniversalTransferDocumentSellerTitleInfo нужно иметь в виду:

  • Реквизиты продавца (UniversalTransferDocumentSellerTitleInfo.Seller) и покупателя (UniversalTransferDocumentSellerTitleInfo.Buyer) заполняются в виде структуры данных ExtendedOrganizationInfo .
  • Реквизиты грузоотправителя (Shipper.OrgInfo) заполняются в виде структуры данных ExtendedOrganizationInfo . Если проставлен флаг Shipper.SameAsSeller, то реквизиты грузоотправителя заполнять не нужно — будут использоваться соответствующие реквизиты продавца.
  • Реквизиты грузополучателя (UniversalTransferDocumentSellerTitleInfo.Consignee) заполняются в виде структуры данных ExtendedOrganizationInfo .
  • Реквизиты подписанта документа UniversalTransferDocumentSellerTitleInfo.Signers заполняются в виде структуры данных ExtendedSigner .
  • Даты документов должны указываться в формате ДД.ММ.ГГГГ.
  • Идентификатор файла информационного поля AdditionalInfoId.InfoFileId заполняется в формате GUID через дефис.
  • Суммы должны указываться в формате XXX.XX (дробная часть должна отделяться точкой). То же самое касается формата представления количества товара ExtendedInvoiceItem.Quantity.
  • Если не указан код валюты UniversalTransferDocumentSellerTitleInfo.Currency, по умолчанию будет использоваться код 643 (Российский рубль).
  • Коды единиц измерения ExtendedInvoiceItem.Unit, коды стран происхождения товара InvoiceItem.CountriesOfOrigin, а также коды иностранных государств ForeignAddress.Country можно указывать в буквенном формате, тогда Диадок предпримет попытку сконвертировать их в соответствующие числовые коды.

© Copyright 2020, Диадок Revision 456dafef .

Что такое код cpdf_rlineto

Пострадальцев таких немало (всякой и разной печатности у нас выходит прилично), так что разбираться с каждым по отдельности — это никакого времени не хватит. Поэтому возникла идея сделать что-то вроде инструкции/методички: «Как проверить PDF с версткой на совместимость с PDF/A-стандартом, а потом конвертировать его в PDF/A».
В Акробате как раз такая возможность есть — его Preflight, где в числе прочего есть пункт «Verify compliance with PDF/A». Надо только настроить профиль именно на это дело — проверку издательских PDF с версткой.

Покопал в Сети, нашел вот такой материал — www.publish.ru/articles/201306_20013064. Там дается достаточно неплохая пошаговая инструкция, как сделать Preflight-профиль для допечатной проверки сверстанных PDF. Если к ней еще сделать что-то аналогичное, но для проверки на PDF/A-совместимость, то IMHO получится достаточно неплохая рабочая база.
И вот здесь как раз нужна помощь — понять какие пункты в профиле для «Verify compliance with PDF/A» надо отметить и какие настройки там требуется поставить. Чтобы в результате проверки с такими настройками перекрыть большую часть возможных «граблей» по совместимости с PDF/A.

1. Macshop , 18.05.2020 03:31
Идете стандартным путем. Выводите .ps. А потом дистиллируете в PDF/A. Все ИМХО.

, 18.05.2020 09:11 Rainhaart
Начать исследование вопроса с Вики не мелькнула мысль?
Я вот открыл и сразу увидел ссылку на бесплатный (более того — свободный) софт для проверки.

3. Rainhaart , 18.05.2020 12:53
Macshop
Идете стандартным путем. Выводите .ps. А потом дистиллируете в PDF/A. Все ИМХО.
Именно так и делают мои знакомые, которые работают в издательстве. Но при этом все равно периодически получают вопли РГБ-шной системы проверки со списком ошибок в присланных PDF, которые надлежит исправить.
Видимо сам по себе этот путь полного успеха не гарантирует, потом еще нужно проверить PDF на потенциальных «блох». Которые у не очень опытных верстальщиков таки бывают. Вот инструкцию для такой проверки и хочется создать — очень многим бы жизнь облегчила.

Начать исследование вопроса с Вики не мелькнула мысль?
Каюсь, не мелькнула — не так уж и часто ею пользуюсь. Но посмотрел тамошнюю статью по PDF/A — никаких ссылок на софт в ней не нашел.

, 18.05.2020 13:41 Rainhaart
не так уж и часто ею пользуюсь
А зря.

посмотрел тамошнюю статью по PDF/A — никаких ссылок на софт в ней не нашел.
Очень странно. Надеюсь, вы смотрели в английскую Вики, не в русскую?

5. Rainhaart , 18.05.2020 16:28

Надеюсь, вы смотрели в английскую Вики, не в русскую?
Именно что в русскую. Сейчас посмотрел куда надо — сколько я понимаю, меня должен интересовать veraPDF?

Добавление от 18.05.2020 17:36:

Скачал его с verapdf.org/software, посмотрел, что там внутри.
Проблема номер раз — там не обычный ЕХЕ-шник, а JAR-файл. Посмотрел внутрь этого архива, но так и не понял, что с его содержимым надо дальше делать. Проблема номер два — когда я щелкаю по по verapdf-install.bat, то в ответ получаю сообщение: «java не является внутренней или внешней командой, исполняемой программой или пакетным файлом».

Что со всем этим дальше делать?

Добавление от 18.05.2020 17:36:

Скачал его с verapdf.org/software, посмотрел, что там внутри.
Проблема номер раз — там не обычный ЕХЕ-шник, а JAR-файл. Посмотрел внутрь этого архива, но так и не понял, что с его содержимым надо дальше делать. Проблема номер два — когда я щелкаю по по verapdf-install.bat, то в ответ получаю сообщение: «java не является внутренней или внешней командой, исполняемой программой или пакетным файлом».

Что со всем этим дальше делать?

Установить предварительно JRE (Java Runtime Environment), он необходим для работы данного инсталлятора, написанного на Java.

6. WarRior82 , 18.05.2020 20:35
7. НеСпециалист , 18.05.2020 22:54
Ну вообще-то «корпоративным подручным стандартом» считается Enfocus Pitstop для Adobe Acrobat-а. Очень недешёвый, равно как и сам Acrobat.
А если спросить у Гугла (https://www.google.ru/search?q=%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C+pdf+%D0%BD%D0%B0+%D1%81%D0%BE%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%81%D1%82%D0%B2%D0%B8%D0%B5&rlz=1C1NHXL_enRU712RU712&oq=%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%B8%D1%82%D1%8C+pdf+%D0%BD%D0%B0+%D1%81%D0%BE%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D1%81%D1%82%D0%B2%D0%B8%D0%B5+&aqs=chrome..69i57.10471j0j7&source >
8. Macshop , 18.05.2020 23:36
Rainhaart

цитата: потом еще нужно проверить PDF на потенциальных «блох». Которые у не очень опытных верстальщиков таки бывают.

цитата: Именно так и делают мои знакомые, которые работают в издательстве.

Вы сделайте сначала это у себя. Отрегулируйте техпроцесс. А пойдут ошибки, езжайте в РГБ и там на месте начинайте проверять. Должны у них быть нормальные спецы. Наверняка ошибки будут системными, которые повторяются из файла в файл. Так всегда делалось с препрессом типографий. Вы должны понимать, что это живой процесс и ошибки всегда возможны. Но без расшифровки ошибок вы ничего не сделаете.

Искать нужно понимания в РГБ, а не в конфе.
Здесь единственный профи в этой теме- это НеСпециалист. ИМХО. Большинство других спецов- на уровне пдф из ворда Не хочу никого обижать

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

9. НеСпециалист , 19.05.2020 09:54
Rainhaart
Подозреваю, что кроме прямого «тупого» соответствия требованиям «электронного формата» проверяется ещё и кое что другое:
— вылеты за обрез (если есть)
— расстояние до обреза значимых элементов
— сумма красок
— применение черного/составного черного, в том числе на тексте
— минимальная толщина линий
— минимальный размер шрифта, в том числе вывороткой
(это вот так бегом)

К тому же фраза «закон, который требует от издательств» и последующая за ней фраза «описание ошибок обычно идет на таком невнятном языке, что из сообщения практически невозможно понять в чем же там дело и что именно требуется исправить» как то не очень сочетаются в моём понимании. «Издательства» должны понимать претензии, как мне кажется (хотя я выдывал людей, писавших в резюме «опыт работы в издательстве», но не замечающих «в упор» простых вещей. ). Нет, я не исключаю того, что «есть многое на свете, друг Горацио, чего без трёх поллитров не поймёшь», но.

Macshop
Вы мне льстите.

, 19.05.2020 12:52

НеСпециалист
что кроме прямого «тупого» соответствия требованиям «электронного формата» проверяется ещё и кое что другое:
— вылеты за обрез (если есть)
— расстояние до обреза значимых элементов
— сумма красок
.

Это может проверяться где-нибудь в типографиях, но только не в РГБ. ИМХО.

Добавление от 19.05.2020 12:53:

Rainhaart
описание ошибок обычно идет на таком невнятном языке, что из сообщения практически невозможно понять в чем же там дело и что именно требуется исправить
Примерами не поделитесь?

11. НеСпециалист , 19.05.2020 13:35
Ну, вообще говоря, в требованиях у макетам несколько БОЛЬШЕ написано, чем нам тут рассказывают.
Да, не «типографское», но и не «вот вам просто так PDF/А»

, 19.05.2020 14:05

НеСпециалист

цитата: Цветовое пространство RGB

13. НеСпециалист , 19.05.2020 14:33

А я где-то писал про цветовое пространство?

14. Rainhaart , 19.05.2020 18:35
Macshop
Проблема не в верстальщиках. Все уже отлажено на уровне макета.
Это когда отлажено. А когда нет?
По той ссылке, которую я давал в первом сообщении, описывается немало потенциальных «блох», которые могут возникнуть в верстке — как раз если верстальщик не очень опытен в своем деле. Точнее так — проблемы здесь не обязательно именно в самой верстке, а в связке «верстка плюс преобразование PDF с ней в PDF/A». Уж где именно в этой цепочке возникнет — для данного конкретного PDF не всегда предсказуемо.
В любом случае какие-то проблемные места явно обнаруживаются, иначе бы от РГБ-шной системы проверки не шли бы отказы.

Вы сделайте сначала это у себя.
Мне этой головоморокой с PDF/A, слава богу, заниматься не приходится — я по другой линии работаю. Но зашел недавно к своему старому знакомому из РГБ и узнал, что как раз на их отдел повесили всю эту головную боль с обязательным экземпляром и письмами по поводу него. И просто жалко людей стало — с этими сообщениями не всякий специалист разберется, а там обычный офисный народ, разве что с библиотечным уклоном.
Приходит к ним куча писем — «Помогите!», «Что нам здесь и здесь делать?!», «В чем ошибка в наших PDF?» — а что они толком ответить могут? Вот несколько характерных сообщений от тамошней системы проверки:

Ваш PDF не может быть принят, поскольку в нем следующие ошибки:

— Максимальная вместимость словаря (по записям) равна 4095;

— Абсолютное реальное значение должно быть меньше или равно 32767.0;

— Словарь аннотаций должен включать ключ F. Флаговый бит Print (печать) ключа F следует установить на 1 и его флаговые биты Hidden (скрытый), Invisible (невидимый) и NoView (нет отображения) следует установить на 0;

— Словарь XObject не должен содержать ключ SMask.

Исправьте эти ошибки и вышлите PDF заново.

«Для всех подмножеств шрифта формата CIDFont, упомянутых в рамках соответствующего файла, словарь дескриптора шрифтов должен включать поток CIDSet, идентифицирующий, какие CIDs присутствуют во вложенном файле СIDFont, как описано в cпецификации PDF Таблица 5.20»

«Все цветовые пространства ICCBased встраиваются в качестве потока профиля ICC, как указано в cпецификации PDF 4.5. Количество цветовых компонентов в цветовом пространстве, описываемого данными профиля ICC должно соответствовать реальному количеству компонентов в профиле ICC. Как в пункте PDF 1.4, N должно быть равно 1, 3, или 4»

«Следующие ключи, если они присутствуют в объекте ExtGState, должны иметь следующие значения: CA — 1.0»

Читаю все это и просто не представляю, что в них от людей хотят. Поэтому и пришла в голову мысль делать проверку таких вот PDF на Preflight. Который диагностические сообщения выдает не в пример более внятно.
Но там сначала надо что-то вроде методички по проверке, делать, которую методичку я здесь и затеял.

Искать нужно понимания в РГБ, а не в конфе.
Искать надо у людей, которые хорошо разбираются в PDF. В РГБ с этим не очень, вот и ищу таких, где могу.
Если знаете какие-то стоящие места для моего вопроса — подскажите, буду весьма признателен.

Это может проверяться где-нибудь в типографиях, но только не в РГБ.
В РГБ проверяется конечный результат — соответствует или не соответствует. А причины «не соответствует» могут откуда угодно придти, в том числе и от перечисленного НеСпециалист.

НеСпециалист
Подозреваю, что кроме прямого «тупого» соответствия требованиям «электронного формата» проверяется ещё и кое что другое:
Там вообще непонятно, что же именно проверяется. Формально — соответствие формату/стандарту PDF/A. А что именно в реальности разработчики заложили — сплошное ХЗ.

К тому же фраза «закон, который требует от издательств» и последующая за ней фраза «описание ошибок обычно идет на таком невнятном языке, что из сообщения практически невозможно понять в чем же там дело и что именно требуется исправить» как то не очень сочетаются в моём понимании.
Сочетаются, как мне удалось выяснить от своего знакомого, очень просто.
На РГБ свалили работу по приемке обязательного экземпляра. Для этого их разработчики сделали систему приема и проверки этого самого обязательного экземпляра, которая на пилотных испытаниях работала вполне нормально. Когда в нее пошел не тестовый, а уже рабочий поток PDF, выяснилось, что на проблемные PDF выдается такая вот ахинея.
Но к этому времен разработчики уже переключились на другой проект, по уши заняты именно им и на вопросы «Что все это значит и что надо делать при таком-то и таком-то сообщении?» почти что не реагируют.
IMHO достаточно обычная история для большой организации с кучей отделов и начальников.

Так что получается что-то вроде классического: «Спасение утопающих — дело рук самих утопающих».
Вот и пытаюсь людям чем могу помочь.

, 19.05.2020 20:53

Rainhaart
Вот несколько характерных сообщений от тамошней системы проверки:
Ставлю 50 кибер-рублей на то, что это есть выхлоп veraPDF, грамотно или не очень переведенный на русский.

надо что-то вроде методички по проверке, делать, которую методичку я здесь и затеял.
ИМХО методичка ваша должна быть очень простой. «Для изготовления обязательного экземпляра использовать исключительно ПО, в полном объеме поддерживающее стандарт PDF/A версии такой-то». Кстати, уж версию стандарта, на которую настроена система проверки, ваши знакомые просто обязаны из разработчиков оной выцарапать.

Методичку «PDF/A для чайников» у вас сделать никак не получится. Стандарт сам по себе описан техническим языком, а не художественным, там речь именно про «словари» и «флаги». Так что у ваших несчастных знакомых из РГБ выхода ровно два: либо обучаться, либо брать на работу специалиста и платить ему деньги.

17. Rainhaart , 20.05.2020 22:29

Ставлю 50 кибер-рублей на то, что это есть выхлоп veraPDF, грамотно или не очень переведенный на русский.
Похоже вы выиграли.

Я прогнал через veraPDF случайный файл с какой-то книгой и он выдал мне в отчете следующее:

Validation information
Rule

Specification: ISO 19005-1:2005, Clause: 6.7.11, Test number: 1
The PDF/A version and conformance level of a file shall be specified using the PDF/A Identification extension schema.
Failed 1 occurrences

Specification: ISO 19005-1:2005, Clause: 6.3.6, Test number: 1
For every font embedded in a conforming file and used for rendering, the glyph width information in the font dictionary and in the embedded font program shall be consistent.
Failed 1 occurrences

Specification: ISO 19005-1:2005, Clause: 6.2.3, Test number: 2
DeviceRGB may be used only if the file has a PDF/A-1 OutputIntent that uses an RGB colour space
Failed 2 occurrences

Specification: ISO 19005-1:2005, Clause: 6.4, Test number: 2
An XObject dictionary shall not contain the SMask key
Failed 2 occurrences

IMHO это что-то достаточно похожее на выдачу РГБ-шной системы проверки. Например, для двух последних сообщений у меня есть следующие их аналоги на русском:

1. «Компонент DeviceRGB может использоваться только тогда, когда файл имеет вывод намерений OutputIntent PDF/A-1, который использует цветовое пространство RGB».
2. «Словарь XObject не должен содержать ключ SMask».

Как вы полагаете, можно это считать оригиналом и переводом?

ИМХО методичка ваша должна быть очень простой. «Для изготовления обязательного экземпляра использовать исключительно ПО, в полном объеме поддерживающее стандарт PDF/A версии такой-то».
То есть тот же, например, Акробат, который народ по большей части и так у себя использует. И с созданных в нем файлов периодически имеет обломы с системой проверки.
Выходит, что одного «правильного» софта здесь маловато, нужен еще и «правильный» PDF на входе.

Кстати, уж версию стандарта, на которую настроена система проверки, ваши знакомые просто обязаны из разработчиков оной выцарапать.
Она пока вроде бы нигде явно не прописана и, что называется, слава богу. Там ведь или PDF/A-1a или PDF/A-1b, а последний делать не в пример проще, требования не такие жесткие. Проверку же PDF/A-1b вполне проходит, уже выяснили.
Если же начать тамошний народ тормошить на предмет «какая именно версия», то вполне могут додуматься ужесточить требования до PDF/A-1a.

Методичку «PDF/A для чайников» у вас сделать никак не получится.
Да пока что и не требуется подробной методички «Как делать» — вполне достаточно краткой инструкции «Как проверить уже сделанное». А для этого всего лишь надо прописать в профиле Preflght-проверки нужные параметры — там не их так уж и много, где-то десятка полтора.
В общем сделать что-то вроде описания, которое я приводил в ссылке из первого сообщения. Только там описывается предпечатная проверка, а здесь надо будет расписать то, что в Акробате обозначено как «Verifies compliance with PDF/A-1b».
Когда же у издательских людей будет внятный Акробатовский диагноз — что именно в PDF не в порядке, то дальше и уж сами вполне смогут разобраться, как это исправлять.

Я бы и сам такое сделал, но, увы, не настолько знаток PDF с версткой и правил их преобразования в PDF/A, чтобы грамотно расписать все пункты настроек. В этом как раз и рассчитывал на помощь — где что выбрать, где какую галочку поставить.
Работы там не так уж и много, но надо хорошо знать где, что и как.

Стандарт сам по себе описан техническим языком, а не художественным, там речь именно про «словари» и «флаги».
Все правильно, однако это же не помешало адобовцам сделать так, чтобы Preflght-диагностика выдавалась на вполне нормальном языке. Значит нашлись таки «переводчики».

Про «перевод» всей этой невнятицы я уже давно задумывался, но это работа надолго. А сейчас надо проблему заткнуть побыстрее, чтобы она людям жизнь не портила.

18. Macshop , 21.05.2020 00:12
Rainhaart

цитата: Но к этому времен разработчики уже переключились на другой проект, по уши заняты именно им и на вопросы «Что все это значит и что надо делать при таком-то и таком-то сообщении?» почти что не реагируют.

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

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

цитата: В этом как раз и рассчитывал на помощь — где что выбрать, где какую галочку поставить.

Так нужно иметь техзадание.

цитата: Это когда отлажено. А когда нет?

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

Понимаю, что я не помог решению проблемы.
Но поймите.
Вот я хочу вам помочь не абстрактно.
Возьму старую верстку и попробую вам для пробы отправить. И потом отлаживать. Но ведь техданных нет. Я не знаю, что вам присылать, кроме того, что это должно быть в PDF/A.

19. Rainhaart , 21.05.2020 01:21
Macshop
То есть модуль проверки у вас абсолютно сырой. И что вы от него тогда хотите?
Модуль проверки вполне дееспособный и требуемое от него делает более или менее нормально. Иначе бы его просто не приняли в работу. Проблема в том, что диагностические сообщения, которые он выдает, никто толком понять не может.
А поскольку это выяснилось уже после того, как он был принят и запущен в работу, то с этого всю проблему и имеем.

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

Вот здесь (oek.rsl.ru/faq#) лежит список требований к присылаемым PDF (пункт «Какие требования предъявляются к файлу электронной копии обязательного экземпляра документа»).
Там конечно все в самом общем виде, без деталировки — при том разнообразии печатности, которая у нас выходит, требования к ней можно только в общем виде дать.

А так берете префлайт и настраиваете его. Другого варианта нет.
Именно это я и собираюсь сделать — если повезет и получится.

А настраиваете его по тому техзаданию, которое писалось под модуль.
ТЗ скорее всего писалось примерно в том же духе, что и в ссылке, которую я привел. Самые общие требования, чтобы в них вписалась практически любая наша печатность. То есть минимум миниморум технических деталей, основное — соблюдение стандарта PDF/A.

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

А если на том конце не отлажено, то что вы можете сделать при приемке?
Дать издателю перечень проблем с его PDF и сказать: «Вот это и вот это надо устранить, после чего делаете PDF заново и присылаете его опять нам». Именно это у моего знакомого и спрашивают издатели, которым пришли отказы: «Скажите, где и в чем у нас ошибка, что нам надо исправлять?».

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

Вы поймите правильно, как можно проверять то что не совсем понятно.
Для начала, думаю, будет достаточно этого самого минимум миниморум — PDF/A-совместимость в чистом виде. Если же выяснится, что где-то надо добавить технические детали, то при готовой базе это особых трудностей IMHO не составит.

Понимаю, что я не помог решению проблемы.
Наоборот, очень даже помогли.
Теперь стало понятно, какие моменты я упустил в самом начале (ТЗ, например) и на предмет чего надо будет потормошить моего знакомого. Я ж обо всех этих деталях раньше просто не подозревал, верстка и PDF это не совсем моя сфера дел, с ней знаком больше вприглядку.

Но поймите.
Вот я хочу вам помочь не абстрактно.
Возьму старую верстку и попробую вам для пробы отправить. И потом отлаживать.

Очень-очень большое спасибо. При вашем-то опыте верстальщика наверняка что-то существенное увидите.

прав и в РГБ фактически стоит veraPDF, то можно не отсылать именно туда, а просто прогнать самому на veraPDF. А то при передаче туда PDF надо изрядную бюрократию разводить, только зря время потратите.

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

цитата: При вашем-то опыте верстальщика наверняка что-то существенное увидите

цитата: Вот здесь (oek.rsl.ru/faq#) лежит список требований

цитата: Дать издателю перечень проблем с его PDF и сказать: «Вот это и вот это надо устранить, после чего делаете PDF заново и присылаете его опять нам»

цитата: То есть минимум миниморум технических деталей, основное — соблюдение стандарта PDF/A.

Вы не в то упираетесь. Пдф он и есть пдф. Как вы шхуну обзовете, так она и поплывет (Капитан Врунгель), вот только название будет всегда одно: Беда.
Проблема не в совместимости, а в ошибках верстки или подготовки материалов (я не знаю в чем, потому что этих ошибок нет, я их не вижу)
У вас по какому-то принципу модуль написан проверки. И теперь вы надеетесь, что эта хрень взлетит.
Примерно так. Вы просто не с того конца подходите.
Если пдф отдистиллирован в PDА/A, то значит, что он уже прошел первоначальную проверку и он скорее-всего стандарту соответствует. а дальше начинаются просто ошибки. Не связанные с совместимостью со стандартом. ИМХО.

20. Macshop , 21.05.2020 02:14
21. Rainhaart , 21.05.2020 12:29
Macshop
Ну значит он сырой.
Хуже — это вполне себе приличный софт (судя по отзывам), но похоже написанный в манере «программист для программиста».
Или же: «Неужели вам все это действительно непонятно?!» — обычно произносится с интонацией искреннего удивления.

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

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

Да это фигня. Зачем им 300 точек? При ржб
Чтоб я знал. Вот на неделе как раз и буду тормошить знакомого, чтобы все эти вопросительные знаки выяснил.

Это нужно целый отдел держать.
А на этой работе в РГБ целый отдел и сидит — мой знакомый как раз в нем работает. Люди там конечно не только этим занимаются, но работа с подобными письмами у них таки приличную часть времени съедает.

Вы не в то упираетесь. Пдф он и есть пдф.
Проблема не в совместимости, а в ошибках верстки или подготовки материалов.

А вот это для меня очень существенный момент.

До сих пор я не очень хорошо представлял себе откуда могут браться ошибки, на которые ругается система проверки. То ли с верстки, то ли с неправильных настроек преобразования в PDF/A, то ли еще с чего.
Если же основная их причина — верстка или подготовка материалов, то для их отлова проверять надо уже сверстанное, но еще не преобразованное. В смысле PDF с версткой, но никак не PDF/A, который из него сделали.
Тогда для издательств получаем вполне работающую цепочку — верстаем, делаем из верстки PDF, проверяем его на Preflight на потенциальные ошибки, обнаруженные ошибки убираем, делаем PDF/A, отсылаем в РГБ.

IMHO вполне пойдет — или как?

Но при этом все равно этот PDF с версткой надо прогонять через Акробатовское «Verifies compliance with PDF/A-1b» — как еще проверить-то?

Если пдф отдистиллирован в PDА/A, то значит, что он уже прошел первоначальную проверку
IMHO здесь немного по другому — такой PDF в принципе можно преобразовать в PDF/A, совсем уж безнадежного в нем ничего нет. Но полноценным PDF/A (т.е. полностью вписывающимся в стандарт) он при этом то ли будет, то ли нет — в зависимости от того обнаружатся ли в нем какие-то «блохи». О которых периодически бурчит система проверки.

Посмотрел еще раз настройки «Verifies compliance with PDF/A-1b». Действительно там чистая совместимость с PDF/A — только один из пунктов, причем настраивается он достаточно просто, всего лишь галочку где надо поставить. Так что в смысле своего «минимум миниморум» я пожалуй был неправ.

Но вот все остальные пункты — здесь уже без человека с практикой работы в издательстве никак не обойдешься. Там везде надо хорошо представлять, какие моменты настроек могут оказаться критичными, в смысле, чтобы отлавливались типичные «блохи» верстки. Которые потом могут помешать преобразованию в корректный PDF/A.

А потом заметил интересный момент. Какой Preflight-профиль не посмотри, там в настройках везде один и тот же список пунктов — «Pages», «images», «Colors», «Fonts» и т.д. И комплекты настроек внутри каждого пункта везде одинаковые. Каких-то заметных отличий между профилями, сделанными для разных задач я не заметил.
Но какой-то рабочий минимум по допечатной подготовке (если я правильно понял, то именно ею вы и занимались) как раз дан по ссылке, которую я в самом начале приводил — https://www.publish.ru/articles/201306_20013064. И там именно это и расписано — что и как надо настраивать при Preflight-проверке всего, о чем идет речь в статье.

Тогда может при создании задуманной инструкции для начала отталкиваться от материала из этой статьи?
Взять тамошний список «что надо проверить», сделать поправку на то, что там идет по допечатной подготовке, а у меня будет преобразование в PDF/A плюс требования РГБ (которые требования еще выяснить надо будет ). При необходимости дополнять и редактировать полученную инструкцию (созданный на ее основе профиль проверки).

IMHO получится как раз то, что требуется — набор достаточно дежурных ошибок, которые могут помешать преобразованию в корректный PDF/A. И на которые делается проверка перед этим преобразованием.

22. Macshop , 21.05.2020 13:28
Просто в дистиллере ставится совместимость с PDF/А. И все. На выходе получается нужный файл. Но это нужно делать у заказчика.
Или вы собираетесь все перегонять в самой отделе?

цитата: В действительности, PDF/A является подмножеством формата PDF, из которого исключены некоторые особенности, не подходящие для долгосрочного архивного хранения.

цитата: чтобы документы в формате PDF/A были на 100 % самодостаточными. Вся информация, необходимая для того, чтобы каждый раз отображать документ в неизменном виде, внедрена в файл. Сюда входит (не ограничиваясь только этим) всё содержимое документа (текст, растровые изображения и векторная графика), шрифты и информация о цвете. Документы формата PDF/A не могут использовать информацию из внешних источников (как то шрифтовые программы или гиперссылки).

Другие ключевые элементы для соответствия требованиям PDF/A включают:

запрещён аудио и видео контент;
запрещено внедрение кода на javascript и команд на запуск исполняемых файлов;
все шрифты должны быть внедрены и также они должны быть легально внедряемы для неограниченного универсального отображения. Это так же касается и так называемых стандартных шрифтов Postscript, таких как Times или Helvetica;
цветовые пространства определяются независимым от устройства способом;
шифрование не разрешено;
предписывается использование основанных на стандартах метаданных.

цитата: то ли с неправильных настроек преобразования в PDF/A

Нет неправильных настроек, кроме базовых.
А остальные глюки только через макет издания и верстку.

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

Добавление от 21.05.2020 13:32:

цитата: Хуже — это вполне себе приличный софт (судя по отзывам), но похоже написанный в манере «программист для программиста».

Ну если софт нормально не работает? ТО что это? И ведь главное не исправляется ничего. Идеального софта не бывает, а вот умение глюки исправлять.

23. Rainhaart , 22.05.2020 00:49
Macshop
А остальные глюки только через макет издания и верстку.
.
Вы ищете глюки в преобразовании в пдф, а искать нужно в верстке и допечатке.
Понял, осознал, выполняю.

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

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

Просто в дистиллере ставится совместимость с PDF/А. И все. На выходе получается нужный файл.
Даже если при этом дистиллеру скармливается файл, у которого есть проблемы совместимости с PDF/А — например, не может быть внедрена часть использованных шрифтов?

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

Шо я зовсим дурний?
Просто сообщаю это автору очередного письма: «Помогите, что нам делать?», а уж правильно перегонять свою верстку он сам будет.

Вся ваша проверка на совместимость должна вписываться в эти вот требования.
Полностью согласен. Но я же не могу просто сказать Акробату: «Проверь этот PDF на полную внедряемость всех шрифтов», или «Проверь на внедряемость использованных изображений», или еще что-то аналогичное.
Мне надо в Preflight-профиле расставить все необходимые настройки, поставить, где надо галочки и т.д. И основной вопрос пока — как это надо сделать, где и что проставить, чтобы отлавливались ошибки PDF/A-совместимости, которые могут набежать через верстку.

Почему я и приводил в качестве образца статью по допечатной подготовке — там как раз показывается, как подобное надо делать. Если материал этой статьи в какой-то степени можно использовать для проверки на PDF/A-совместимость, то очень даже неплохо. Надо только знать какие именно места оттуда можно взять.

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

Ну если софт нормально не работает? ТО что это? И ведь главное не исправляется ничего. Идеального софта не бывает, а вот умение глюки исправлять.
Работает-то он вроде вполне нормально — в смысле именно проверки на совместимость. А вот почему такие странные сообщения выдает.
Все, что мне пока голову приходит — известное «Это не баг, это фича». По причине, пока не очень понятной, именно так его разработчиками и было задумано. А вот почему — как раз и будем выяснять. И что с их диагностикой делать — тоже

Люди вроде бы серьезные (http://verapdf.org/home/), так что надеюсь, что какое-то работающее решение найдем.

24. Macshop , 22.05.2020 09:45
Rainhaart

цитата: Но я же не могу просто сказать Акробату: «Проверь этот PDF на полную внедряемость всех шрифтов», или «Проверь на внедряемость использованных изображений»,

цитата: Даже если при этом дистиллеру скармливается файл, у которого есть проблемы совместимости с PDF/А — например, не может быть внедрена часть использованных шрифтов?

цитата: Как собственно когда-то PDF и задумывался.

цитата: Просто сообщаю это автору очередного письма: «Помогите, что нам делать?», а уж правильно перегонять свою верстку он сам будет.

цитата: Мне надо в Preflight-профиле расставить все необходимые настройки, поставить, где надо галочки и т.д.

Все настройки у вас перед глазами. Там всего ничего-то.

, 22.05.2020 11:19

Rainhaart
Как вы полагаете, можно это считать оригиналом и переводом?
Вполне. Возможно даже стоит поискать версию veraPDF с этим переводом. Есть шанс, что его авторы не стали нарушать правила open-source.

Там ведь или PDF/A-1a или PDF/A-1b
Или PDF/A-2. Или PDF/A-3.

вполне достаточно краткой инструкции «Как проверить уже сделанное». А для этого всего лишь надо прописать в профиле Preflght-проверки нужные параметры — там не их так уж и много, где-то десятка полтора.
Вы такой наивный. Ну получите вы список вида «ошибка «Clause: 6.3.6″ соответствует галочке №8», и что с того? Вопрос «и что нам с этим делать» так и останется. Проблему недостаточно квалифицированных кадров в издательствах этим не решить.

Точнее, так. До сих пор их необходимая квалификация не включала в себя тонкости формата PDF. А теперь должна включать. Вашим знакомым следует воспользоваться моментом, изучить их, и проводить платные семинары для издателей.

26. НеСпециалист , 23.05.2020 13:36
Давненько меня тут не было.

Ради интересу поставил себе эту самую verapdf. Долго веселился. Значица так: в нынешних программах Adobe НЕТУ «стандартного» вывода в стандарт PDF/A, есть в PDF/X (в InDesign-е). Что не совсем здОрово, если придётся делать файл через Distiller из чего-то другого, например «через Word» (всяко бывает), в Кварке смотреть лениво, но метод борьбы примерно следующий:
1. Пусть поставят себе оную verapdf и проверяют результаты.
2. Делаем PDF, совместимый с pdf/x 2003 (описываю для InDesign-а, там этот профль есть, далее — сообразят, если захотят).
3. Открываем PDF в Акробате, выбираем (есть в версии Acrobat DC 2015, в более старых наверное тоже что-то подобное есть) панель инструмента «PDF standards», далее «Save as pdf/a» в опциях «pdf/a-1b» и далее «исправлять ошибки». Опа! Проверка пройдена!

До соответствия с версией «pdf/a-1a» дойти не смог. Там что-то совсем уже.

27. Macshop , 23.05.2020 21:49
Не мытьем, так катаньем.
28. НеСпециалист , 23.05.2020 22:36
Macshop
Я ленив, однако. На кой ляд мне изучать весь стандарт (а потом ещё долго соображать, что там авторы в ту или иную проверку всунули под каким сообщением), когда надо просто «сдать»?

ЗЫ Не, можно и до «1a» при необходимости, там какие-то относительно простые сообщения. Но это пусть уж ТС и его друзья чуток напрягутся.

ЗЫ2 Проверял, кстати, на «кошерном» файле, давно напечатанном. И даже не на одном. Дело не в «правильно верстать и выводить», дело в «тупой» проверке неизвестно что и как проверяющей программой, и в не озвученных НОРМАЛЬНО «требованиях». Как, блин, РОССИЙСКАЯ государственная библиотека может требовать соответствия не оформленному официально на русском языке некоему «стандарту». И выводить в качестве аргумента совершенно «неклассифицируемые» сообщения. Бред собачий.

, 23.05.2020 23:24

НеСпециалист
Как, блин, РОССИЙСКАЯ государственная библиотека может требовать соответствия не оформленному официально на русском языке некоему «стандарту». И выводить в качестве аргумента совершенно «неклассифицируемые» сообщения. Бред собачий.

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

Ссылка на стандарт там, кстати есть (ГОСТ Р 704-2006). Только вот слово «PDF» в нем ни разу не встречается.

30. Rainhaart , 24.05.2020 18:21
Macshop
Галочку загружать шрифты должны ставить с той стороны.
Так я сам это делать и не собираюсь.

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

Шрифты или есть или их нет
Шрифты еще могут быть бестолково сделанные, что называется, самодельные. Кое-как, наперекосяк.
Оказывается в издательствах и такое бывает — накопали где-то в Сети вроде бы подходящий шрифт и работают с ним. В типографию такое еще как-то проходит, а при переводе в PDF/A облом — «Символы такие-то шрифта такого-то не могут быть внедрены». Потому что шрифт был сделан с нарушением каких-то там правил, стандартов.

Или все или ничего. Скорее всего дистиллер просто откажется этот файл обрабатывать.
Судя по происходящему возможен и третий вариант — дистиллер PDF возьмет, что-то на выходе выдаст, но это будет неполноценный PDF/A. Который при проверке как раз и даст обсуждаемое здесь.
Подобных PDF/A-файлов в РГБ приходит, слава богу, не так уж и много, основная масса сделана вполне нормально и проверку проходит. Но учитывая объемы печатности в России таки набегает.

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

, часто имеем не особо хорошее знание работы с PDF. Которому знанию, еще только учиться предстоит.
Изменить такое, да еще по всей России, возможностей нет, так что.

Все настройки у вас перед глазами. Там всего ничего-то.
Для профи в этом деле действительно на пару раз плюнуть. А для новичка вроде меня каждый пункт настроек — вопросительный знак.
Надо ли вот здесь и вот здесь ставить галочки или нет? Для какого типа проверки надо ставить, а для какого не требуется? Если в настройках требуется указывать какие-то параметры (разрешения, типы шрифтов, размер страниц и тому подобное), то какие значения выбрать?
И так далее, и тому подобное.

Или PDF/A-2. Или PDF/A-3.
Вот-вот. Не дай бог еще задумаются — а что именно нам надо?

Вы такой наивный. Ну получите вы список вида «ошибка «Clause: 6.3.6″ соответствует галочке №8», и что с того?
Пришлось как-то разбираться с одним сообщением системы проверки — надо было помочь знакомому из издательства.
Из сообщения удалось понять, что где-то облом с внедрением шрифтов (глифов). Взяли проблемный PDF, прогнали его через Preflight, получили сообщение «Символы такие-то шрифтов таких-то не могут быть внедрены». Плюс страницы PDF, где были выделены символы, которые не удалось внедрить.
С таким уже и работать можно.

Ко всем давно уже назревший вопрос — не знает ли кто мануала/методички по работе с Preflight? Более или менее обстоятельно написанного. с примерами, как надо делать настройку профиля для того или иного вида проверки.
Если такое в природе водится (хоть в каком-нибудь виде), то заметно бы облегчило задачу.

Вашим знакомым следует воспользоваться моментом, изучить их, и проводить платные семинары для издателей
И как хлынут на эти семинары «пострадальцы» от системы проверки со всей России-матушки.
Нет уж нафиг, нафиг — это домой за полночь возвращаться станешь.

31. НеСпециалист , 24.05.2020 18:57
Rainhaart
В типографию такое еще как-то проходит, а при переводе в PDF/A облом — «Символы такие-то шрифта такого-то не могут быть внедрены». — да вы, батенька, сказочник. Любая типография (а не «подвальная девочка с быстрым корелом») пошлёт создателей такого PDF в единственно верном направлении.
32. Rainhaart , 24.05.2020 19:27
НеСпециалист
да вы, батенька, сказочник. Любая типография (а не «подвальная девочка с быстрым корелом») пошлёт создателей такого PDF в единственно верном направлении.
Про неаккуратно сделанные шрифты попалось как-то случайно на форуме полиграфистов. Деталей уже не помню, но там было именно так — типография принимала без проблем, а вот в РГБ шел отказ.
Опять же было это чисто как пример, что шрифты могут быть и нормальные, и не очень. Так что не настаиваю.
33. Macshop , 25.05.2020 00:05
Rainhaart

цитата: Шрифты еще могут быть бестолково сделанные, что называется, самодельные. Кое-как, наперекосяк.

Да ладно вам. Уже сколько лет прошло. Шрифты подчищены. Плохо сделанное уже давно умерло.

И это действительно не проблемы РГБ. Или типографии. Не надо лишнего на себя брать.

34. Rainhaart , 13.07.2020 19:12
За прошедшие времена удалось таки наработать нормальную методику создания PDF/A, которая почти не создает обломов при приемке в РГБ. Но пара проблемных мест пока еще осталось.

Сегодняшняя схема перевода в PDF/A и чистки от ошибок выглядит так.

Верстка → вывести в PS → через Дистиллер сделать из него PDF/A → проверить на ошибки → если есть ошибки конвертировать через Preflight в PDF/A → опять проверить на ошибки → если все еще не вычищены, то → преобразовать PDF/A в PS → создать из PS-файла PDF/A-файл.

Когда у людей есть Акробат, да еще одной из последних версий, то никаких проблем. Но если нет вообще или версия старая (все ошибки создания PDF/A вычистить не в состоянии), то пока единственный вариант — виртуальный принтер, который может выводить в PDF/A (например, Free Solid PDF Creator).
Когда он делает нормальный PDF/A с первого раза, то все в порядке. Но если делает с ошибками, то надо такой PDF пересоздавать (запускать цепочку PDF-PS-PDF). А вот как такое сделать без Акробата с его инструментарием — пока более или менее надежного инструмента не накопалось.

Если кто-то знает подходящий софт, то было бы очень неплохо.

И еще одна проблема. Часто верстка издания делается поблочно, на разных компах, а потом собирается в одно целое. Чтобы из таких блоков создать PDF/A для РГБ обычно выводят каждый блок в PS, а потом PS-файлы объединяют в PDF/A.
Здесь то же самое — если есть Акробат, то без проблем. А вот если нет. Пока еще чего либо подходящего не накопалось.

35. nesla , 14.07.2020 11:23
Rainhaart
. Здесь то же самое — если есть Акробат, то без проблем. А вот если нет. [source=23:46132:34]

Для осмысления посмотрите PDF24 (фриварная, есть вариант для бизнеса):

Там есть средства перевода PDF в PDF/A (1, 2). И если их применить, то в конечном PDF-файле появляется надпись о соответствии стандарту PDF/A (3).

К сообщению приложены файлы: 1.jpg, 900×600, 63Кb, 2.jpg, 900×600, 54Кb, 3.jpg, 881×860, 63Кb

36. Rainhaart , 14.07.2020 13:10
nesla
Для осмысления посмотрите PDF24 (фриварная, есть вариант для бизнеса):
[source=23:46132:35]

Мне он уже попадался, спасибо. Там пока основная проблема — как перемещаться по его менюшкам. На входе я имею окошко с набором инструментов (на приложенном скриншоте), а как оттуда попасть в место, которое занимается PDF/A (как на ваших скриншотах) — пока что не разобрался.

Работает ли он с PS-файлами — тоже не очень понятно. Пока что открыть в нем PS не получается, а работа с PS (за пределами Акробата) сейчас основная проблема.

Поэтому пока используем Free Solid PDF Creator. Это просто виртуальный принтер, без доп. инструментов, но интерфейс там достаточно простой и понятный.

К сообщению приложены файлы: 1.gif, 668×408, 30Кb

37. nesla , 14.07.2020 13:41
Rainhaart

Это у вас запущен лаунчер (запускатель). У меня вот так:
«C:\Program Files (x86)\PDF24\pdf24-Launcher.exe»

Из него можно запустить конструктор (1):

Но конструктор можно запустить и без лаунчера:
«C:\Program Files (x86)\PDF24\pdf24-Creator.exe»

Далее:
Меню — Файл — Открыть. (2) и Меню — Файл — Сохранить (3).

Можно запустить ещё ассистент:
«C:\Program Files (x86)\PDF24\pdf24-Assistant.exe»

Формат PS открывает. Можно и PDF сохранить в PS.

Текст любой ценой: PDF

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

С portable document format’ом не всё так просто, как DOCX или ODT, что мы рассматривали в прошлый раз, но всё же это всё ещё изначально текстовый, а не бинарный формат. Вы удивлены? Тогда давайте посмотрим на то, что там внутри. Дальше действительно много текста.

Как вы могли заметить, перед нами вполне себе «текстовый» документ, с вкраплениями бинарных данных. Конечно, как книгу pdf в блокноте не почитаешь, но понимать, что написано и что в последствии будет отображено на экране, вполне возможно. Заранее отмечу, что целью этой статьи не является описание формата данных, поэтому буду рассказывать по существу: «Где искать текст?» Более подробную информацию по формату PDF вы найдёте по ссылкам в конце этого небольшого руководства.

Типы данных PDF

PDF поддерживает несколько базовых типов данных (если быть точно восемь), часть из которых нам понадобится для работы — это строки (strings), массивы (arrays), словари (distionaries), потоки (streams) и объекты (objects). Остановимся на каждом.

Строки
Строки PDF унаследовал от PostScript, как следствие, под строкой в .pdf подразумевается последовательность 8-битных символов, окружённая круглыми скобками. String может перенесена на следующую строку с помощью обратного слэша, который не является частью строки и, помимо всего прочего, экранирует спецсимволы:

Как результат, на выходе мы получим две строки:

Из-за своей изначальной восьмибитовости в PDF есть несколько способов для вставки текстовых данных, например, в той же кодировке Unicode. Мы можем использовать вставку по восьмеричным кодам символа ( \053 ), с помощью отдельного двухбайтового hex’а ( ) или даже их последовательности ( ). Например, следующие строки эквивалентны:

В строках мы в будущем научимся искать текстовые данные, которые содержит в себе PDF-документ.
Массивы
Массивы в PDF заключаются в квадратные скобки и представляют собой просто последовательность группированных объектов. Например: [(Hello,)10(world!)] . Массивы подчас содержат текстовые строки.

Словари
Это обрамлённые в > пары ключ-значение. Словарь часто используется для наделения объекта, который его содержит, свойствами, что описаны в dictionary. Нам же эти данные помогут определить, как, например, расшифровать поток, узнать его длину или, наоборот, отбросить текущий объект, как неинтересный (если это изображение). Перед вами пример обычного PDF-словаря:

После чтения, мой код представит его в виде:

$dictionary = array (
«Length» => «681» ,
«Filter» => true ,
«FlateDecode» => true ,
) ;

Потоки
Потоки представляют последовательность восьмибитных данных между ключевыми словами stream и endstream . Любые бинарные данные, будь-то сжатый текст, изображение или внедрённый шрифт, будут представлены в виде потока. Поток всегда находится внутри объекта (чуть ниже) и характеризуется, как минимум, своей длиной (опция /Length N в словаре) и очень часто методом сжатия (например, /Filter /FlateDecode ). PDF поддерживает достаточное количество форматов сжатия (в том числе и формат шифрования /CryptDecode ), нас же будут интересовать лишь три: наиболее часто используемый Flate (gzip-сжатие) и более редкие ASCII Hex (представление данных в виде шестнадцатеричной строки с конечным символом > ) и ASCII 85-based (сжатие, когда подряд идущие 4 символа исходного текста кодируются 5 символами от ! до y в ASCII таблице).

В stream’ах мы будем искать текст, который хотим получить из PDF-документа. Пример потока вы можете найти во второй половине изображения, что вначале данного топика: да-да, те крякозябрики — это оно и есть.

Объекты
Объекты — это наибольшая структура, с которой на предстоит работать. Объект может содержать внутри себя любой другой тип данных от обычного числа до потока, обрамляется ключевыми словами obj и endobj . Объект имеет свой ID внутри документа, по которому можно на него ссылаться. Нам в первую очередь интересны объекты с потоками внутри себя (не забываем об основной подзадаче), которые почти всегда содержат ещё и набор дополнительных опций в виде словаря. Вот обычный пример объекта внутри PDF-файла (с несжатым содержимым потока):

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

Где искать текст?

Сформулируем задачу: «Где искать в PDF-документе текстовые объекты?» Тут всё просто и не раз и не два описано на различных форумах: будем искать объекты, в которых есть потоки. Обычно имеется ввиду, сжатые gzip, потоки, но документация говорит нам — потом может не сжат вообще или, наоборот, сжатий может быть несколько ( /Filter /FlateDecode /ASCIIHexDecode ). Что ж нам нужен какой-нибудь действительный пример. Пожалуйста, стихотворение Михаила Юрьевича Лермонтова «Парус» в PDF-формате (документ создан на Acrobat.com из odt-файла из прошлой статьи).

Найдём в данном документе какой-нибудь объект и начнём его разбирать. Я немного смухлюю и возьму объект, в котором заведомо есть текстовые данные, но это только для примера — скрипту всё равно с чем работать:

Давайте для начала разберёмся, что перед нами, используя полученные ранее знания о типах данных PDF. Перед нами объект со словарём свойств, которые говорят, что длина потока данных 681 байт ( /Length 681 ), что поток сжат ( /Filter ) в gzip ( /FlateDecode ). Уже достаточно информации, чтобы разжать поток данных — подойдёт gzuncompress :

Теперь чуть-чуть отвлечёмся от нашего примера и узнаем ещё немного нового о представлении текста в PDF. Нам нужно запомнить всего несколько вещей:

  • Если текст есть в потоке, то он содержится между «маркером» начала текста BT (beginning of text) и конца ET (end of text).
  • PDF может отображать текст или не отображать, в зависимости наличия маркета Tj (отобразить текст) или маркера TJ (отобразить текст с учётом индивидуального символьного позиционирования). Данные маркеры стоят после строки текста или массива строк, как в данном случае ( [ 17 10 10 17 ]TJ ).
  • PDF поддерживает индивидуальное позиционирование символов, как я написал выше, это значит, что мы можем задать произвольный и отдельный размер расстояния между каждой парой символов. Об этом подробнее позже

Этой информации нам достаточно, чтобы выделить две строки из нашего примера:

Внимательный читатель, посмотревший PDF примера, может предположить, что перед нами заголовок (ПАРУС) и первая строка стихотворения (Белеет парус одинокой). И он окажется прав, но! Но вы не находите, что уж очень странные hex-коды у данного текста:

  • ПАРУС кодируется, как 01 02 03 04 05
  • Белеет — как 06 07 08 0707 09 .

Очень похоже на то, что есть какая-то таблица соответствий, не так ли? Что ж вы опять правы, давайте искать…

Таблица преобразований

На предыдущем примере бы спасовало бы большинство функций получения текста из PDF, которые вы можете найти в свободном доступе в интернетах. Попробуем разобраться что к чему. Итак, нас интересуют ToUnicode CMaps, о которых рассказывается в подразделе о получении текста описания формата PDF от Adobe. Давайте поищем их в нашем файле. Я опять смухлюю и предложу читателю «заведомо правильный кусочек»:

Знакомые числа , и так далее? Ещё бы — мы их видели чуть раньше в текстовых строках. Предположим, что мы должны заменить 01 на 041F , взглянем, что скрывает за собой это число. Ура! #x041F = П ! Мы нашли трансформацию одного символа в другой, теперь обратимся к документации и узнаем чуть больше.

bfchar
Преобразование, что находится между beginbfchar и endbfchar , самое простое. Оно ставит в соответствие первому коду другой. Например, в примере выше мы узнали, что 01 скрывает за собой код символа П . Но это лишь частный случай работы данного преобразования — есть возможность ставить в соответствие одному коду целую строку до 512 символов длины (т.е. до 128 символов в Unicode).

bfrange
Есть и другое более сложное преобразование, обрамлённое beginbfrange и endbfrange . Оно работает уже не с отдельными символами, а уже с их диапазонами. Преобразование поддерживает два вариант своей работы:

  • — мы работает с диапазоном от 0000 до 005E, каждое значение из которого преобразуется в значения из промежутка 0020 и 007E. Заметили принцип? 0000 преобразуется в 0020, 0001 в 0021, 0002 в 0022 и так далее;
  • [ ] — каждое значение из промежутка между 005F и 0061 (т.е. ещё 0060) заменяется на соответствующую последовательность из массива в квадратных скобках: 005F будет заменён на 0066 00 66 (т.е. на ff ), 0060 на fi , а 0061 на ffl .

Алгоритм и код

Используя полученные нами знания мы можем прочитать наш «злополучный» стих о Парусе. Что ж время представить самые интересные куски кода и ссылку на полный исходник:

  1. function pdf2text ( $filename ) <
  2. // Читаем данные из pdf-файла в строку, учитываем, что файл может содержать
  3. // бинарные потоки.
  4. $infile = @ file_get_contents ( $filename , FILE_BINARY ) ;
  5. if ( empty ( $infile ) )
  6. return «» ;
  7. // Проход первый. Нам требуется получить все текстовые данные из файла.
  8. // В 1ом проходе мы получаем лишь «грязные» данные, с позиционированием,
  9. // с вставками hex и так далее.
  10. $transformations = array ( ) ;
  11. $texts = array ( ) ;
  12. // Для начала получим список всех объектов из pdf-файла.
  13. preg_match_all ( «#obj(.*)endobj#ismU» , $infile , $objects ) ;
  14. $objects = @ $objects [ 1 ] ;
  15. // Начнём обходить, то что нашли — помимо текста, нам может попасться
  16. // много всего интересного и не всегда «вкусного», например, те же шрифты.
  17. for ( $i = 0 ; $i count ( $objects ) ; $i ++ ) <
  18. $currentObject = $objects [ $i ] ;
  19. // Проверяем, есть ли в текущем объекте поток данных, почти всегда он
  20. // сжат с помощью gzip.
  21. if ( preg_match ( «#stream(.*)endstream#ismU» , $currentObject , $stream ) ) <
  22. $stream = ltrim ( $stream [ 1 ] ) ;
  23. // Читаем параметры данного объекта, нас интересует только текстовые
  24. // данные, поэтому делаем минимальные отсечения, чтобы ускорить
  25. // выполнения
  26. $options = getObjectOptions ( $currentObject ) ;
  27. if ( ! ( empty ( $options [ «Length1» ] ) && empty ( $options [ «Type» ] ) && empty ( $options [ «Subtype» ] ) ) )
  28. continue ;
  29. // Итак, перед нами «возможно» текст, расшифровываем его из бинарного
  30. // представления. После этого действия мы имеем дело только с plain text.
  31. $data = getDecodedStream ( $stream , $options ) ;
  32. if ( strlen ( $data ) ) <
  33. // Итак, нам нужно найти контейнер текста в текущем потоке.
  34. // В случае успеха найденный «грязный» текст отправится к остальным
  35. // найденным до этого
  36. if ( preg_match_all ( «#BT(.*)ET#ismU» , $data , $textContainers ) ) <
  37. $textContainers = @ $textContainers [ 1 ] ;
  38. getDirtyTexts ( $texts , $textContainers ) ;
  39. // В противном случае, пытаемся найти символьные трансформации,
  40. // которые будем использовать во втором шаге.
  41. > else
  42. getCharTransformations ( $transformations , $data ) ;
  43. >
  44. >
  45. >
  46. // По окончанию первичного парсинга pdf-документа, начинаем разбор полученных
  47. // текстовых блоков с учётом символьных трансформаций. По окончанию, возвращаем
  48. // полученный результат.
  49. return getTextUsingTransformations ( $texts , $transformations ) ;
  50. >

Код с комментариями вы можете получить на GitHub’е.

Заключение

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

Этот код не работает с индивидуальным позиционированием символов. Задача посильная и не сложная, я возлагаю её решение на плечи читателя.

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

Стоит заметить, что никто не отменял $content = shell_exec(‘/usr/local/bin/pdftotext ‘.$filename.’ -‘); . Но в данном случае стояла задача чтения PDF под любой платформой и на любой площадке.

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

В зависимости от активности и интереса к проблеме, я либо продолжу рассказ о PDF (внутреннее устройство документа, позиционирование, шрифты, внутренние ссылки), либо вернусь к теме «Текст любой ценой» на примере RTF. Спасибо за внимание!

Бесплатно Создать Штрихкоды Онлайн

Линейные Штрихкоды, 2D Коды, GS1 DataBar, Почтовые Штрихкоды и многие другие!

Данный онлайн генератор штрихкодов демонстрирует возможности ® Control, Barcode .NET Control и Barcode DLL.» >программных компонентов приложения TBarCode SDK. TBarCode упрощает создание штрихкодов в Ваших приложениях, например в C# .NET, VB .NET, Microsoft ® ASP.NET, ASP, PHP, Delphi и многих других языках программирования. Вы можете протестировать этот онлайн генератор штрихкодов без установки дополнительного программного обеспечения (Условия Предоставления Услуг). На данной странице Вы можете сгенерировать такие штрихкоды, как EAN, UPC, GS1 DataBar, Code-128, QR Code, Data Matrix, PDF417, Почтовые Штрихкоды, ISBN и многие другие.

Этот веб-сервис не хранит данные пользователя. Данные входа обрабатываются только провайдером входа. Пожалуйста, ознакомьтесь с нашими условиями использования и политикой конфиденциальности.

Ваша выгода

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

Оставайтесь с нами, пожалуйста, свяжитесь с нами для получения дополнительной информации.

Scan-IT to Office

Приложение Scan-IT to Office (для Android, iOS) отправляет удаленно собранные данные и штрихкоды в реальном времени в Excel, Word, Google Таблицы, базы данных или любые другие приложения для ПК или Mac.

Онлайн генератор этикеток

Создавайте этикетки со штрих-кодом и отраслевые этикетки и формы этикетки VDA 4902, AIAG, MAT и т.д. Попробуйте бесплатную демо-версию Онлайн-генератора этикеток со штрихкодом для моментальной печати нужных Вам этикеток.

Онлайн-генератор QR-кодов

Используйте созданные QR-коды для перехода на веб-страницы, ввода телефонных номеров, сообщений, отправки твитов, передачи контактных данных, подключения к Wi-Fi сетям и т.д. Просто попробуйте!

Данный генератор штрихкодов является бесплатным

Вы можете использовать данный генератор штрих-кодов как часть Вашего некоммерческого веб-приложения или веб-сайта для создания динамических штрих-кодов с Вашими собственными данными. В ответ мы просим Вас разместить на Вашем сайте обратную ссылку с текстом «Генератор штрихкодов от TEC-IT». Использование логотипов TEC-IT опционально. Пожалуйста, свяжитесь с нами, если Вы хотите использовать данный сервис в коммерческих целях.

Для размещения обратной ссылки используйте подготовленный HTML-код.

cpdf_rlineto

(PHP 3>= 3.0.9, PHP 4)

cpdf_rlineto — рисует линию.

Описание

void cpdf_rlineto (int pdf document, float x-coor, float y-coor [, int mode])

Функция cpdf_rlineto() рисует линию из текущей точки в точку с относительными координатами ( x-coor , y-coor ).

Необязательный параметр mode определяет единицы измерения. Если он равен 0 или отсутствует, по умолчанию используются единицы, установленные для страницы. Иначе координаты измеряются в пунктах postscript без учёта текущих единиц.

Илон Маск рекомендует:  Что такое код asp authbasic
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL