リンクをクリップボードにコピー
コピー完了
フォーラムの皆さま
PDF規格の勉強も兼ねて、個人でPDF処理ツールを作成している者です。
PDFファイルを読み取って出力する機能を開発したのですが、一部の出力ファイルをAdobe Acrobat Proで開けない事象が発生しています。
ファイルを開こうとすると、
「この文書を開くときにエラーが発生しました。文書を読み取り中に問題が発生しました(14)。」
というエラーが出ます。
このエラーについて調べると、Ctrlキーを押しながらOKボタンをクリックすることで追加の説明を出すことができるというコメントをインターネット上で見つけたため試してみると
「dictオブジェクトを指定してください。」
というメッセージでした。
Acrobat Proでは開けないのですが、Chrome・EdgeのPDF表示機能ではエラーなく表示されており、作成したツールに重大な誤りがあるわけではないと考えています。
このようなエラーについて、何かご存知のことがありましたら指摘いただけると助かります。
リンクをクリップボードにコピー
コピー完了
追記です。
以前投稿したものは長すぎたのかスパム判定を受けてしまい、上の投稿は内容を簡略化しています。
以下が書ききれなかった詳細です。
ツールに入力するPDFファイルを変えるとAcrobat Proで開ける場合もあります。
出力されたファイルをテキストエディタで開いて比べてみたのですが、違いとして見つけられたのはファイルの最初に現れるオブジェクトがDictionary(この場合はOK)であるかStream(この場合はダメ)であるかというものでした。
「dictオブジェクトを指定してください。」というメッセージに関連していそうな違いだと思います。
ただ、Linearized PDFの場合最初のオブジェクトはLinearization parameter dictionaryになるということは把握しているのですが、出力ファイルはLinearized PDFではないため最初のオブジェクトは何でも構わないのでは?とも思います。
(開ける場合のPDFファイルも、最初のDictionaryはLinearization parameter dictionaryではないです。)
リンクをクリップボードにコピー
コピー完了
なにかSDKを使っているのかすべて自分で作っているのかわかりませんが
SDKなどを使っているならその関係フォーラムやサポートに聞いた方がよいかと思います。
ブラウザだと問題ないということなので
ブラウザでは無視される機能の部分に問題があるかもしれないので
出力されるPDF のデータをすこしずつ増やしてみる形で
チェックしてみるのはどうでしょうか。
(注釈を出力しない場合はどうか、しおりを出力しない場合はどうかなど)
リンクをクリップボードにコピー
コピー完了
まつしゅん様
アドバイスありがとうございました。
出力方法を変えて、エラーになるかどうかを検証してみます。
補足ですが、特にSDKは使用せず自分で素のコードを書いています。
PDF規格(ISO32000-1)を読みながらその通りに出力されるよう設計しているつもりですが、このようにエラーとなるので何か読み落としがあるのかもと思っています。
ですので、規格自体に詳しい方がいらっしゃればアドバイスを頂きたいという次第です。
リンクをクリップボードにコピー
コピー完了
一般論レベルの話でしか行えませんが、AcrobatはPDF構造を結構厳格に見ているはずなので、構造として何かしらの不足をしている可能性が高いです。
他の互換PDFビューワーその判定が甘いことがあるようで、結果として、構造に問題があっても閲覧できてしまうことはあります。
(逆にAdobeエンジンで生成するPDF/X-4や透明を含むPDFなどは互換ビューワーでは正常に表示できないことはあったりします)