Текстовый объект удаляется в Adobe Reader 11

В Adobe Acrobat XI вставлял текстовые объекты, и когда он открывался в Adobe Reader 10, он открывался правильно. Но в Adobe Reader 11, когда я нажимаю на этот PDF-файл, текстовые объекты удаляются. Почему это происходит? Как это решить? Исходный pdf файл нажмите здесь

PDF-файл, который имеет проблемы при двойном щелчке по нему в Adobe Reader 11. Нажмите здесь

1 ответ

В двух словах:

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

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

Таким образом, вам также необходимо изменить информацию, из которой программа просмотра PDF должна создавать свой собственный вид, то есть, прежде всего, значение расширенного текста RC (в словаре аннотаций свободного текста), которое должно использоваться для создания внешнего вида аннотации, и также значение Contents, которое является текстом, который должен отображаться для аннотации.

Кроме того, в ваших PDF есть дефекты:

  • таблица перекрестных ссылок в вашей первой попытке result.pdf была сломана;
  • цель (значениеИТ) аннотации произвольного текста в исходных файлах написана неправильно.

В деталях:

Ваш результат. PDF не работает. Различные программы просмотра PDF могут по-разному отображать испорченные файлы PDF.

Некоторые детали:

Он был создан на основе вашего Src.pdf в режиме добавления, но дополнительно в его объект / Pages было внесено следующее изменение в оригинальной ревизии:

В источнике:

6 0 obj
<</Count 6
/Type /Pages
/Kids [ 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R ]
>>
endobj

В результате:

6 0 obj
<</Count 3
/Type /Pages
/Kids [ 7 0 R 8 0 R 9 0 R 12 0 R 11 0 R 10 0 R ]
>>
endobj

Таким образом, порядок последних трех страниц был изменен (и это нормально), а / Count был уменьшен с 6 до 3. Это противоречиво, так как все еще есть 6 дочерних объектов, но согласно спецификации PDF ISO 32000-1, Count является

Количество листовых узлов (объектов страницы), которые являются потомками этого узла в дереве страниц.

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

xref
0 1
0000000000 65535 f
24 1
0001465240 00000 n
57 1
0001466075 00000 n
66 1
0001466909 00000 n
73 1
0001467744 00000 n
93 1
0001473484 00000 n
131 1
0001478703 00000 n 

Записи имеют длину 19 байт, включая их соответственно завершающий однобайтовый символ новой строки. Однако согласно спецификации,

Каждая запись должна быть ровно 20 байтов, включая маркер конца строки.

Формат используемой записи должен быть следующим: nnnnnnnnnn ggggg n eol

где [...] eol должен быть двухсимвольной последовательностью конца строки

В PDF может быть больше ошибок, но вы можете начать исправлять их.

РЕДАКТИРОВАТЬ

Теперь с новым PDF Pay-in.pdf с соответствующей перекрестной ссылкой, давайте рассмотрим его более подробно.

Adobe Preflight жалуется на множество случаев:

[...]
An unexpected value is associated with the key
    Key: IT
    Value: /FreeTextTypewriter
    Type: CosName
    Formal Representation: Annot.AnnotFreeText
    Cos ID: 86
    Traversal Path: ->Pages->Kids->[0]->Annots->[13]
[...]

Хорошо, давайте посмотрим на этот объект 86:

86 0 obj
<<  /P 8 0 R
    /Type /Annot
    /CreationDate (D:20130219194939+05'30')
    /T (winman)
    /NM (0f202782-2274-44b8-9081-af4010be86d4)
    /Subj (Typewritten Text)
    /M (D:20130219195100+05'30')
    /F 4
    /Rect [ 53.2308 33.488 552.088 826.019 ]
    /DS (font: Helv 12.0pt;font-stretch:Normal; text-align:left; color:#000000 )
    /AP <</N 107 0 R >>
    /Contents (wwww)
    /IT /FreeTextTypewriter
    /BS 108 0 R
    /Subtype /FreeText
    /Rotate 90
    /DA (16.25 TL /Cour 12 Tf)
    /RC (<?xml version="1.0"?>
         <body xmlns="http://www.w3.org/1999/xhtml"
               xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/"
               xfa:APIVersion="Acrobat:10.0.0"
               xfa:spec="2.0.2"
               style="font-size:12.0pt;text-align:left;color:#000000;font-weight:normal;
                      font-style:normal;font-family:Helv;font-stretch:normal">
           <p dir="ltr">
             <span style="line-height:16.3pt;font-family:Helvetica">wwww</span>
           </p>
         </body>)
>>
endobj 

Предварительная проверка заявила, что недовольна линией /IT /FreeTextTypewriter, Просмотр спецификации PDF снова открывает аннотации с /Subtype /FreeTextт. е. аннотации произвольного текста, указанные в разделе 12.5.6.6:

Имя ИТ (необязательно; PDF 1.6) Имя, описывающее назначение свободной текстовой аннотации (см. Также запись ИТ в таблице 170). Следующие значения должны быть действительными:

FreeText Аннотация предназначена для работы в виде простой текстовой аннотации. Простая текстовая аннотация также известна как текстовое поле комментария.

FreeTextCallout Аннотация предназначена для использования в качестве выноски. Выноска связана с областью на странице через строку выноски, указанную в CL.

FreeTextTypeWriter Аннотация предназначена для работы в качестве объекта типа "нажми и печатай" или пишущей машинки, и линия выноски не рисуется.

Значение по умолчанию: FreeText

Таким образом, ваше значение FreeTextTypewriter недопустимо (помните, что имена PDF чувствительны к регистру!). Следовательно, аннотация (немного) нарушена, что может привести к возникновению всевозможных проблем.

Но здесь есть и другие важные записи, чтобы понять вашу проблему: все, что вы делаете в своих добавленных изменениях, это заменяете поток внешнего вида в объекте 107 (согласно /AP <</N 107 0 R >>) этой аннотации другой. Но эта аннотация также содержит значение RC, которое согласно спецификации

Текстовая строка (см. 12.7.3.4, "Текстовые строки"), которая должна использоваться для создания внешнего вида аннотации.

Таким образом, любой просмотрщик PDF может восстановить внешний вид из этого расширенного текстового описания, особенно, как указано в разделе 12.5.2, о содержании словаря AP.

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

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

Кроме того, запись /Contents (wwww) не заменяются вашими добавленными изменениями. Поэтому средство просмотра PDF, пытающееся решить, использовать поток внешнего вида или нет, будет испытывать искушение каким-то образом создать новый внешний вид, поскольку поток внешнего вида никоим образом не представляет эту ценность.

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

Другие вопросы по тегам