終了

InDesign, InDesignServerのスクリプトでPDFのバイナリデータを取得

New Here ,
May 30, 2023 May 30, 2023

件名にある通り、スクリプト(Javascript)でPDFを読み込み、document情報を取得したと考えております。

以下PDFのバイナリデータの例です。

 

%PDF-1.6

1 0 obj

<< /Type /Pages /Count 1 /Kids [2 0 R] >>

endobj

2 0 obj

<< /Type /Page /MediaBox [0 0 612 792] /Resources 3 0 R /Parent 1 0 R /Contents [4 0 R] >>

endobj

3 0 obj

<< /Font << /F0 << /Type /Font /BaseFont /Times-Italic /Subtype /Type1 >> >> >>

endobj

4 0 obj

<< >>

stream 1. 0. 0. 1. 50. 700. cm

BT

/F0 36. Tf (Hello, World!) Tj

ET

endstream

endobj

5 0 obj << /Type /Catalog /Pages 1 0 R >>

endobj

xref

0 6

trailer

<< /Size 6 /Root 5 0 R >>

startxref

0

%%EOF

 

上記のPDFバイナリデータから例えば、objの数やフォントのタイプなどjavascriptで取得できる方法があるのなら教えていただけますでしょうか。

キーワード
SDK , スクリプティング , パフォーマンス , 手順
750
翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
May 30, 2023 May 30, 2023

PDFってのはテキストで記述されているものです。基本的に単純に検索して数えれば含まれるエレメントの数は計算できますが、圧縮ストリームが含まれていると解析難易度が跳ね上がりますとりあえずはAdobeがリリースしているPDFリファレンスを読んで見ることです。データ構造と何を検索すれば良いかは少し読めば目星はつくかと思います。

また、過去にわたしが書いた記事も理解の助けになるでしょう。

 

https://ten-artai.com/2021/08/3535/

 

JavaScriptでの処理を難しくしているのはPDFのデータがAscii85とFlate圧縮の複合ストリームとなっているケースが多いことなんですが、これもExtendScriptで書けなくもないです。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
メンター ,
May 30, 2023 May 30, 2023

どの部分にどんな内容が書いてあるかは、PDFの仕様書に書いてありますので、それを入手して読まれるのが最善の方法だと思います。

 

JavaScriptと書かれていますが、これはExtendScriptのことですよね。ExtendScriptでバイナリファイルを扱うことはできるので、検索対象がわかれば取得することはできます。

 

(かぶっちゃったのでTen Aさんの方だけ見てください^^;

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Jun 04, 2023 Jun 04, 2023

有識者の方々にお聞きしたいのですが、Ascii85とFlate圧縮の複合ストリームのデータのPDFとはどういったPDFなのでしょうか。

また、extendscriptでバイナリファイルを扱う方法も教えていただけないでしょうか。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
New Here ,
Jun 04, 2023 Jun 04, 2023

有識者の方々にお聞きしたいのですが、Ascii85とFlate圧縮の複合ストリームのデータのPDFとはどういったPDFなのでしょうか。

 

また、extendscriptでバイナリファイルを扱う方法も教えていただけないでしょうか。

何か関数のようなものがあるのでしょうか。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Jun 04, 2023 Jun 04, 2023
PDFの構造については先に挙げたリンクと、そこに連なるページを読めば理解できるでしょう。ExtendScriptのでバイナリを読み込むにはファイルからreadchメソッドを利用して読み込んだ後文字コードを取り出せば1バイト取得できます。
しかし、Ascii85やFlateと出てきて検索しながらでも実装できない場合、ちょっと難しいかもしれません。バックグランドになる知識量が絶対的に不足しています。実際に組むとかなりの規模のコーディングになりますし、フリーで流せるようなものではありません。
翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Jun 04, 2023 Jun 04, 2023
最新

質問内容としては別ですが目的は一貫しているため、スレッドを統合させていただきました。

もとより有識者が回答してくださっているので、このまま進めてください。

翻訳
レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines