0

在 adobe acrobat xi 中插入文本对象,当它在 adobe reader 10 中打开时,它可以正常打开。但是在 adobe reader 11 中,当我单击该 pdf 文件时,文本对象被删除。为什么会发生这种情况?如何解决?源pdf文件点击这里

在adobe reader 11中双击pdf文件时出现问题。 点击这里

4

1 回答 1

1

简而言之:

您尝试通过更改其正常外观流来更改自由文本注释的内容。

这还不够:兼容的 PDF 查看器可能会忽略此条目并提供自己的外观。因此,较旧的 Adob​​e Reader 版本选择不忽略您的更改只是运气。

因此,您还需要更改 PDF 查看器应该创建自己的外观的信息,即最重要的RC的富文本值(在自由文本注释字典中)将用于生成注释的外观,以及还有Contents值,它是应为注释显示的文本。

此外,您的 PDF 中存在缺陷:

  • 您第一次尝试 result.pdf 中的交叉引用表已损坏;
  • 源文件中自由文本注释的意图(IT值)拼写错误。

详细地:

你的result.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-1Count

作为页面树中此节点后代的叶节点(页面对象)的数量。

此外,附加修订的交叉引用流被破坏。

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 应为 2 个字符的行尾序列

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 

Preflight 表示对这条线路不满意/IT /FreeTextTypewriter。再次查看 PDF 规范会发现带有 的注释,/Subtype /FreeText第 12.5.6.6 节中指定的自由文本注释:

IT 名称 (可选;PDF 1.6)描述自由文本注释意图的名称(另请参见表 170 中的 IT 条目)。以下值应有效:

FreeText注释旨在用作纯自由文本注释。纯自由文本注释也称为文本框注释。

FreeTextCallout该注释旨在用作标注。标注通过 CL 中指定的标注线与页面上的区域相关联。

FreeTextTypeWriter该注释旨在用作单击输入或打字机对象,并且不绘制标注线。

默认值:自由文本

因此,您的值FreeTextTypewriter无效(请记住,PDF 名称区分大小写!)。因此,注释(轻微)损坏,可能已经导致各种问题。

但是这里还有其他重要条目,以了解您的问题:您在附加更改中所做的只是/AP <</N 107 0 R >>用不同的注释替换此注释的对象 107(根据 )中的外观流。但是这个注解也包含一个RC值,根据规范

用于生成注释外观的富文本字符串(参见 12.7.3.4,“富文本字符串”)。

因此,任何 PDF 查看器都可以从该富文本描述中重新生成外观,特别是如第 12.5.2 节中关于AP字典内容的规范所述

单个注释处理程序可能会忽略此条目并提供自己的外观。

因此,简单地替换正常外观流并不足以永久更改该注释的外观,您必须更改外观字典并至少删除外观的任何替代来源。

此外,该条目/Contents (wwww)也不会被您附加的更改所取代。因此,试图决定是否使用外观流的 PDF 查看器会很想以某种方式创建新外观,因为您的外观流绝不代表该值。

尤其是在开始操作自由文本时(例如,在您的情况下单击 PDF 时),PDF 查看器知道它最终将不得不创建一个新外观,除非当前外观与它本来会创建它一样,否则观众可能更喜欢从富文本甚至内容值派生的外观开始重新开始。

于 2013-02-26T09:19:51.307 回答