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

そのため、最後の 3 ページの順序が変更され (これで問題ありません) /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 

エントリは、それぞれ末尾の 1 バイトの改行文字を含めて 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「リッチ テキスト文字列」を参照)。

したがって、特にセクション 12.5.2 の仕様でAPディクショナリのコンテンツについて述べられているように、どの PDF ビューアでもそのリッチ テキスト記述から外観を再生成できます。

個々の注釈ハンドラは、このエントリを無視して、独自の外観を提供できます。

したがって、通常の外観ストリームを単に置き換えるだけでは、その注釈の外観を永続的に変更するのに十分ではありません。外観辞書を変更し、少なくとも外観の代替ソースを削除する必要があります。

/Contents (wwww)さらに、追加した変更によってエントリが置き換えられることもありません。そのため、外観ストリームを使用するかどうかを決定しようとしている PDF ビューアーは、外観ストリームがその値を表すものではないため、何らかの形で新しい外観を作成したくなるでしょう。

特にフリー テキストの操作を開始するとき (たとえば、あなたの場合は PDF をクリックするとき)、PDF ビューアは最終的に新しい外観を作成する必要があることを認識しています。視聴者は、リッチ テキストまたはコンテンツ値から派生した外観から新たに開始することを好む場合があります。

于 2013-02-26T09:19:51.307 に答える