![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
業務用の作業効率アップのために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の適切なページ区切り情報をご存知の方はおられないでしょうか。
乱文申し訳ないです。。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
直接の答えじゃないけども
http://www.adobe.com/devnet/acrobat/
みたいなAdobeの公開している技術情報は探してみましたか?
PDFは内部に画像としてPDFを埋め込んだりできるので
単純にMediaBoxでは取得できないように思います.
PSだったら,DSCコメントとEPSにかかってる制限が
手がかりになるんですけどねえ.
開発者向け資料が公開されていることは知っていましたが、基本的には
業務の合間を縫ってこのマクロを作成していたので、英語を翻訳しながら目的の情報を見つけるのは正直あきらめていました。
運がよければ同じような経験がある方からアドバイスをいただけると考えたんですが、せっかくなので上記のAdobeのサイトから少しだけ探してみたところ「PDF Reference」という資料がすぐに都合よく見つかりました。
翻訳しながらすこしずつ読んだのですが、結論としてはMediabox以外にTypeがPageになっており、且つParentを持っていればページオブジェクトと見なして問題なさそうですね。
これから空いた時間でちょこちょこ修正していくつもりです。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数ページあるPDFファイル内の文字列等の情報をキーにPDFをグループ分け分割したい。 2 2022/06/25 09:51
- Visual Basic(VBA) VBAでPDFのアクティブページ番号取得 1 2023/05/25 12:41
- PDF PDFの出力時のファイル名を消したい 3 2022/09/05 01:16
- HTML・CSS (Javascript)印刷するファイルに応じて印刷プレビュー画面で用紙を自動的に切り替えたい!! 2 2022/04/11 12:04
- WordPress(ワードプレス) WordPressのサイトにPDFをアップロードした際にGoogleなどの検索結果に出ないでほしい 1 2022/08/03 10:44
- PDF PDFファイルを分割するマクロの作り方を教えてください。 2 2022/06/24 11:09
- プリンタ・スキャナー 印刷枚数を減らしたいです。 印刷用紙1枚が4等分になるように、pdfになってる楽譜4ページ分をはめ込 1 2022/08/01 00:58
- PDF AutoCAD図面をPDF fileに変換した際、画像情報やブロック名はわかるのでしょうか。 1 2022/06/03 09:42
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- PDF EXCEL ページを指定してPDF出力するVBAを教えてください。 2 2023/02/09 10:27
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
adobeソフトのシリアル番号の申...
-
AsusEEEPC_IEGD_8_0_Windows_V1...
-
「ご処理進めて頂きますようお...
-
CloseとDisposeの違い
-
エクセルで、日付を入力すると...
-
「PC Helpsoft Driver Updated...
-
エクセルVBAで、MsgBox やInput...
-
Excelシート上のマクロを登録し...
-
アクセスVBAのMe!と[ ]
-
Excelで、ボタンにコメントをつ...
-
エクセルの画面にユーザーフォ...
-
VBA エンターキーでイベントに...
-
VBAにてメッセージボックスを最...
-
コンボボックスにキー入力をさ...
-
エクセルで、オプションボタン...
-
C# 超初心者です。 this.Refres...
-
UPS警告音を止めたい
-
フォーム上のすべてのTextBoxを...
-
UWSCで指定箇所のみループ
-
文字列で小数点以下の0を削除し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
music center for pc以外のフリ...
-
AsusEEEPC_IEGD_8_0_Windows_V1...
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
CloseとDisposeの違い
-
VBAでループ内で使う変数名を可...
-
Excelシート上のマクロを登録し...
-
エクセルVBAで、MsgBox やInput...
-
switch の範囲指定
-
メルカリのメルカードで買い物...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
EXCEL VBA マクロ 実行する度に...
-
アクセスVBAのMe!と[ ]
-
「PC Helpsoft Driver Updated...
-
VBA エンターキーでイベントに...
-
ImageMagickでgif画像の一部が...
-
VBの質問#if 0 then ってどう...
-
VBAにてメッセージボックスを最...
-
Do~Loopした回数をカウントしたい
おすすめ情報