- 締切済み
PDFファイル構造について
業務用の作業効率アップのためにExcelVBAを利用して、複数のPDFファイルのページ数と各ページの用紙サイズを取得(アルゴリズムとしては、用紙サイズはmediaboxの情報から、ページ数はmediabox自体の数から取得しています。)、その情報を元に印刷サイズを自動で切り替えて印刷するマクロを作成し、順調に使えていたのですが、昨日PDF情報取得時に、Adobe Readerで読み込んだ場合と異なったページ数・用紙サイズの情報が取得されるPDFファイルがありました。 具体的にはA1サイズで1ページのみのPDFだったのですが、上記のマクロから取得した情報は1ページ目:A4、2ページ目:A1 の計2ページとなっていました。 原因を調べる為テキストエディタでそのPDFを開くと、mediaboxは確かに2つ存在し、その情報も1つ目:[0 0 595 842]、2つ目:A1[0 0 2396 1698]となっているのですが、AdobeReaderでは1つ目のmediaboxの情報は、ページとして扱っていないようです。 恐らくmediaboxの前後の情報も併せて初めてページオブジェクトとして扱われるのでしょうが、恥ずかしながら私ではその当たりの的確な情報を集められませんでした。 どなたかPDFの適切なページ区切り情報をご存知の方はおられないでしょうか。 乱文申し訳ないです。。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kabaokaba
- ベストアンサー率51% (724/1416)
直接の答えじゃないけども http://www.adobe.com/devnet/acrobat/ みたいなAdobeの公開している技術情報は探してみましたか? PDFは内部に画像としてPDFを埋め込んだりできるので 単純にMediaBoxでは取得できないように思います. PSだったら,DSCコメントとEPSにかかってる制限が 手がかりになるんですけどねえ.
お礼
開発者向け資料が公開されていることは知っていましたが、基本的には 業務の合間を縫ってこのマクロを作成していたので、英語を翻訳しながら目的の情報を見つけるのは正直あきらめていました。 運がよければ同じような経験がある方からアドバイスをいただけると考えたんですが、せっかくなので上記のAdobeのサイトから少しだけ探してみたところ「PDF Reference」という資料がすぐに都合よく見つかりました。 翻訳しながらすこしずつ読んだのですが、結論としてはMediabox以外にTypeがPageになっており、且つParentを持っていればページオブジェクトと見なして問題なさそうですね。 これから空いた時間でちょこちょこ修正していくつもりです。 どうもありがとうございました。