ObjecTips

Swift & Objective-C で iOS とか macOS とか

iOS 13 Core Graphics で Tagged PDF の書き出しをサポート

CGPDF 周りの新APIを発見

func CGPDFContextBeginTag(_ context: CGContext, 
                        _ tagType: CGPDFTagType, 
                        _ tagProperties: CFDictionary)

CGPDFContextBeginTag(_:_:_:) - Core Graphics | Apple Developer Documentation

func CGPDFContextEndTag(_ context: CGContext)

CGPDFContextEndTag(_:) - Core Graphics | Apple Developer Documentation

enum CGPDFTagType : Int32

CGPDFTagType - Core Graphics | Apple Developer Documentation

相変わらずオンラインドキュメントが空なので Xcode でSwiftファイルを確認してみたところ以下のコメントの記載が!

/* Tagged PDF Authoring */

この後何十行とコメントが記載されており、PDF 1.7 の仕様で定義されている事やドキュメントのリンクも記載されているので詳細が気になる人はSwiftファイルのコメントや以下のリンクを参照。

http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf


Tagged PDF(タグ付きPDF) は Accessibility 対応のPDFで、PDFの中にコンテンツの構造をHTMLに類似したタグ(マークアップ)で示した付加データが入っている。

例えば通常 PDF で表示される文字の情報はフォント、フォントサイズ、描画位置、描画テキストなどの情報が記録されているが、一見1センテンスのまとまった文章に見えても文字毎にバラバラの順序でデータが入っている可能性もある(オーサリングソフトによる)。
また、フォントやフォントサイズの違いによる書類内での意味の違い、例えば表示されているボールド体の文字が文章内での強調なのか、文章の見出しなのか、フォントサイズの小さな文字が注釈なのか、ルビなのか、ページ番号なのかといった情報は記録されていないため、ビューア側でPDFをパースする際にコンテンツ内容をどの様に解釈するかというのはかなり難しくなってくる。

Tagged PDF では描画するコンテンツに意味付けがされるので、スクリーンリーダーでのコンテンツの読み上げ順序やコントロールが改善される。
Accessibility 対応だけではなく、独自ビューアの開発においても Tagged PDF のタグ情報がある事によって同様に読み上げやコントロールの改善が可能になる。

Tagged PDF のタグ情報の読み取りについては相変わらず自前でゴリゴリ実装するしかなさそうだが、PDF の書き出し時にタグ情報を追加できる様になっただけでも前進ではないだろうか。


参考

helpx.adobe.com

helpx.adobe.com