在 adobe acrobat xi 中插入文本对象,当它在 adobe reader 10 中打开时,它可以正常打开。但是在 adobe reader 11 中,当我单击该 pdf 文件时,文本对象被删除。为什么会发生这种情况?如何解决?源pdf文件点击这里
在adobe reader 11中双击pdf文件时出现问题。 点击这里
简而言之:
您尝试通过更改其正常外观流来更改自由文本注释的内容。
这还不够:兼容的 PDF 查看器可能会忽略此条目并提供自己的外观。因此,较旧的 Adobe Reader 版本选择不忽略您的更改只是运气。
因此,您还需要更改 PDF 查看器应该创建自己的外观的信息,即最重要的RC的富文本值(在自由文本注释字典中)将用于生成注释的外观,以及还有Contents值,它是应为注释显示的文本。
此外,您的 PDF 中存在缺陷:
详细地:
你的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-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 应为 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 查看器知道它最终将不得不创建一个新外观,除非当前外观与它本来会创建它一样,否则观众可能更喜欢从富文本甚至内容值派生的外观开始重新开始。