- PR -

PDFファイルのWeb表示用に最適化の値をIACで取得

1
投稿者投稿内容
う〜にん
会議室デビュー日: 2005/01/02
投稿数: 19
投稿日時: 2007-05-08 15:52
<環境>
Windows XP Professional
VS.NET 2005
.NET Framework 2.0
C#
参照設定:Adobe Acrobat 8.0 Type Library

<質問内容>
PDFファイルの"Web表示用に最適化"の値の取得方法をどなたかご教授頂けないでしょうか?

・エクスプローラの対象PDFファイルを右クリックし、プロパティを開く
・PDFタブを選択
ここにある Web 表示用に最適化 の値をSDKではなくIACで取得したいのです
※SDKは使用許可がありません

以降に示すPDF変換と同様に GetInfo で取得出来ると思ったのですが、
引数のKeyがわからず実現出来ておりません。

どうぞ宜しくお願い致します。

<Source>
Acrobat.AcroPDDoc x;
string f1;

f1 = @"C:\\aaa\\最適化.pdf";
x = new Acrobat.AcroPDDoc();
x.Open(f1);

MessageBox.Show("PDF変換 : " + x.GetInfo("Producer").ToString());

<表示内容>
PDF変換 : Adobe PDF library 7.77

<参考にしたサイト>
http://pdf-file.jugem.jp/?eid=7
http://www.planetpdf.com/forumarchive/131835.asp



未記入
大ベテラン
会議室デビュー日: 2006/12/15
投稿数: 157
投稿日時: 2007-05-08 17:10
PDF関連は扱ったことないけどLinearizedとかぢゃダメかね。

最終手段としてPDFヘッダ部をテキストで読み込むって手も・・・(オススメシマセン)
う〜にん
会議室デビュー日: 2005/01/02
投稿数: 19
投稿日時: 2007-05-08 19:26
早速のレスありがとうございます。

>PDF関連は扱ったことないけどLinearizedとかぢゃダメかね。
これの他にもそれらしいので実行したのですが、
catch に入ってこの様なエラーメッセージが出ます。
"オブジェクト参照がオブジェクト インスタンスに設定されていません。"

>最終手段としてPDFヘッダ部をテキストで読み込むって手も・・・(オススメシマセン)
すみません、理解出来ませんでした。

http://support.adobe.co.jp/faq/qadoc/spitz.nsf/e5b96c611b2e4b2849256d49000a9372/62ec70f457b2951049256e5f003ead32?OpenDocument

このあたりの事をおっしゃっているのでしょうか?
「PDTextSelect というオブジェクトがあります。
このオブジェクトは PDF ファイル内の指定のページ・指定のエリア内のテキストコンテンツを保持します。
このオブジェクトの GetText メソッドを利用すると、保持している文字列を取得できます。」

それでこの様にやりかけたのですが(インテリセンスは出るのに)、
Acrobat.AcroPDTextSelect y;
y = new Acrobat.AcroPDTextSelect();
2行目のところでエラーとなりました。
"'Acrobat.AcroPDTextSelectClass' のコンストラクタが定義されていません。"

http://homepage1.nifty.com/MADIA/vc/vc_bbs/200307/200307_03070047.html
もみてみたのですが、難しくて理解出来ませんでした。

宜しければもう少し教えて頂けないでしょうか?
宜しくお願いします。


未記入
大ベテラン
会議室デビュー日: 2006/12/15
投稿数: 157
投稿日時: 2007-05-09 15:11
>最終手段としてPDFヘッダ部〜
参考にしないほうがいいと思いますけど一応。
PDFのバージョンによりますけど、対応しているPDFをバイナリエディタでみると
1F辺りから[Linearized 1]ってのが見えるので、バージョンチェック後にStreamで
PDFのヘッダ部分を読み込んで判定すればいいのかなと思ったんです。

コード:
 ADDRESS   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F   0123456789ABCDEF 
------------------------------------------------------------------------------
 00000000  25 50 44 46 2D 31 2E 34 0D 25 E2 E3 CF D3 0D 0A   %PDF-1.4.%粤マモ.. 
 00000010  31 35 30 20 30 20 6F 62 6A 0D 3C 3C 20 0D 2F 4C   150 0 obj.<< ./L 
 00000020  69 6E 65 61 72 69 7A 65 64 20 31 20 0D 2F 4F 20   inearized 1 ./O  
 00000030  31 35 33 20 0D 2F 48 20 5B 20 31 31 31 38 20 36   153 ./H [ 1118 6 
 00000040  39 35 20 5D 20 0D 2F 4C 20 32 32 37 39 33 39 20   95 ] ./L 227939  
 00000050  0D 2F 45 20 32 30 30 36 30 20 0D 2F 4E 20 33 30   ./E 20060 ./N 30 
 00000060  20 0D 2F 54 20 32 32 34 38 32 30 20 0D 3E 3E 20    ./T 224820 .>>  
 00000070  0D 65 6E 64 6F 62 6A 0D 20 20 20 20 20 20 20 20   .endobj.         


>PDTextSelect
これはPDFのデータ部のテキストを読み込むメソッドだと思うので関係ないです。
ヘッダ部というのはPDF文書のヘッダのことではなく、PDFファイル形式の情報ヘッダのことです。
(自分で書いてて判りにくいですが)

重ねて言いますがPDFの仕様を無視したやりかたなのでオススメしません。
う〜にん
会議室デビュー日: 2005/01/02
投稿数: 19
投稿日時: 2007-05-10 10:16
示して頂いた内容を見てやっと理解できました。
ありがとうございます!
Stirling(初めて使いました)で開いて、見る事が出来ました。

プログラムの方はとりあえずわかれば良い程度ですが、これで確認出来ました。

byte[] buffer;
buffer = new byte[255];

FileStream fs = new FileStream("パス", FileMode.Open);
int FileSize = (int)fs.Length;
if (FileSize != 0)
{
fs.Read(buffer, 0, 255);
this.txt.Text = BitConverter.ToString(buffer);
}
fs.Close();

>重ねて言いますがPDFの仕様を無視したやりかたなのでオススメしません。
そうですね・・・
最終的な解決方法は再度検討する事にします。

取っ掛かりがわからなかったので、
自力だけだったら頭の中は???だったと思います。
大変助かりました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)