1

タスクは、スクリーン リーダーがテキストを読み上げるように、PDF ドキュメント内の画像に「代替」テキストを追加することです。

現在、私の PDF ドキュメントには構造ツリーが定義されていません。

ドキュメント全体の構造要素階層全体を定義する必要なく、そのようなテキストを画像に追加できますか? PDF ドキュメントに最小限の変更で Alt テキストを追加したいと考えています。PDF を生成するために使用しているツールは、構造要素の生成があまり得意ではありません。したがって、構造を定義する必要をまったく避けたいと思います。

私が探しているのは、Alt テキストが画像タグにローカルに追加され、他の場所を変更する必要がない、HTML のような動作です。

PDF 1.6 仕様では、PDF 1.5 以降では、Alt テキストを次の目的で追加できると記載されています。

(PDF 1.5) マークされたコンテンツ シーケンス (セクション 10.5「マークされたコンテンツ」を参照)。Span タグでマークされたコンテンツ シーケンスにアタッチされたプロパティ リストの Alt エントリを使用します。

構造要素を追加せずに、そのようなスパンを追加できますか?

私のテストは「いいえ」を示していますが、私のテストは堅牢ではないかもしれません。テストはこれを生成します:

ET
/Span <</Alt(This is alternate text.)>> BDC
q 180 0 0 15.84 36 747 cm /img0 Do Q
EMC
BT

PDF 1.4 ドキュメントで。ドキュメントには構造ツリーが定義されていません:

16 0 obj<</Type/Catalog/Pages 14 0 R>>

次に、最初の行をハックして、PDF バージョンを 1.4 から 1.5 に変更します。最終的に、Alt テキストは Adob​​e Reader 10 で読み取られません。

4

2 に答える 2

0

私は iPDFdev が一般的に正しいとは思っていませんが、次の PDF コードは、Adobe Reader 9 で開かれた PDF 1.4 ドキュメントで、構造ツリーがないにもかかわらず、コンテンツ ストリームの任意の部分を置き換えて、 NVDAに任意のテキストを読み取らせます。

/Span <</ActualText (Alt Text Here!) >> BDC
...
EMC

まったく同じタスクに使用しなければならなかったツールはPDFClown 0.1.1で、構造要素を生成できるとは思えないため、Span 要素も試しました。機能する代替テキストを生成するために使用した Java コードは次のとおりです。

PdfDictionary dict = new PdfDictionary();
dict.put(new PdfName("ActualText",false),new PdfString("Alt Text Here!"));
primitiveComposer.begin(new MarkedContent(new BeginMarkedContent(new PdfName("Span"), dict)));

// (do content stream stuff here)

primitiveComposer.end();

これらのプログラムの知識が豊富な人は、一見 PDF 仕様に従っていないにもかかわらず、なぜこれが機能するのかを説明する必要がありますが、このタスクを割り当てられた他の人にとって、これが依然として役立つことを願っています.

于 2012-02-24T00:10:36.173 に答える
0

Alt テキストを機能させるには、構造ツリーを定義する必要があります。これは、PDF 仕様で要求されています。構造ツリーを使用せずに上記の方法で Alt テキストを定義できますが、これは非標準であり、機能する場合と機能しない場合があります。

于 2011-08-25T13:45:05.973 に答える