PDFファイルの構造について
2021年06月07日
あんまり実りがなかったけど、備忘のために投稿。
専用アプリで作ったデータを更新日時順にPDF保存している。
元データを更新してPDF化すると、新旧のデータが存在してしまうので、
旧データを消したい。
ファイルの更新有無だったら、ハッシュ値!
PDFファイルからハッシュ値を出してって、ハッシュ値じゃファイルが一致していることを簡単に確認できるけど、更新は判断ができないので断念。
じゃあPDFファイルを直接比べたらどうか?ってことで調べてみた。
今まで知らなかったけど、PDFファイルってテキストエディタで開けるのね。
1.ヘッダ
2.本体
3.xref:相互参照テーブル(オブジェクトの位置を一覧化)
4.trailer:トレーラー(相互参照テーブルの位置が書いてある)
の構成になっている。
最初にヘッダ2行を読んで、次に最後のトレーラを読みに行くらしい。驚き。
トレーラーから相互参照テーブルの位置を割り出して、
本体の各オブジェクトに一発アクセスができる仕組みになっている。
参考サイト
https://techracho.bpsinc.jp/west/2018_12_07/65062
https://itchyny.hatenablog.com/entry/2015/09/16/100000
じゃあ、元ファイルの更新前後で専用アプリから作られるPDFファイルが
どう変化するか調べるべく、元データを覗いてみた。
。。。
図面データが全ページ差し替えって、そらどうにもならんわ!!!
今回はテキストエディタでPDFを開けるってのが大きな収穫。
本体部分は文字化けしててあんまり使えないけど、
そのほかの部分はGrep検索に使えるかも。
以下、適当なファイルのPDFソース
専用アプリで作ったデータを更新日時順にPDF保存している。
元データを更新してPDF化すると、新旧のデータが存在してしまうので、
旧データを消したい。
ファイルの更新有無だったら、ハッシュ値!
PDFファイルからハッシュ値を出してって、ハッシュ値じゃファイルが一致していることを簡単に確認できるけど、更新は判断ができないので断念。
じゃあPDFファイルを直接比べたらどうか?ってことで調べてみた。
今まで知らなかったけど、PDFファイルってテキストエディタで開けるのね。
1.ヘッダ
2.本体
3.xref:相互参照テーブル(オブジェクトの位置を一覧化)
4.trailer:トレーラー(相互参照テーブルの位置が書いてある)
の構成になっている。
最初にヘッダ2行を読んで、次に最後のトレーラを読みに行くらしい。驚き。
トレーラーから相互参照テーブルの位置を割り出して、
本体の各オブジェクトに一発アクセスができる仕組みになっている。
参考サイト
https://techracho.bpsinc.jp/west/2018_12_07/65062
https://itchyny.hatenablog.com/entry/2015/09/16/100000
じゃあ、元ファイルの更新前後で専用アプリから作られるPDFファイルが
どう変化するか調べるべく、元データを覗いてみた。
。。。
図面データが全ページ差し替えって、そらどうにもならんわ!!!
今回はテキストエディタでPDFを開けるってのが大きな収穫。
本体部分は文字化けしててあんまり使えないけど、
そのほかの部分はGrep検索に使えるかも。
以下、適当なファイルのPDFソース
PR
フォルダ内再帰検索するマクロ
2021年05月26日
フォルダ内のCSVファイルについて、サブフォルダを含めて全部中身を書き出したい。
ということで、ネットで調べて再帰検索するマクロを移植。
'http://blog.jmiri.net/?p=1763
シート選択で動かすと確かにシンプルになるものの、
処理速度が圧倒的に不利。
できれば直したいけど、一発ものだから様子見。
ファイルサイズと更新日時は、ファイル名に環境依存文字があると動かないので
FSOで取得するように改良。
全フォルダをなめる処理は完成。
過去に作った再帰なしのファイルの中身を書き出すマクロと
がっちゃんこして完成かな。
以下、ソース(途中)
ということで、ネットで調べて再帰検索するマクロを移植。
'http://blog.jmiri.net/?p=1763
シート選択で動かすと確かにシンプルになるものの、
処理速度が圧倒的に不利。
できれば直したいけど、一発ものだから様子見。
ファイルサイズと更新日時は、ファイル名に環境依存文字があると動かないので
FSOで取得するように改良。
全フォルダをなめる処理は完成。
過去に作った再帰なしのファイルの中身を書き出すマクロと
がっちゃんこして完成かな。
以下、ソース(途中)
テキストファイルの文字列を置換して上書きするVBScript
2021年05月21日
2022/7/7追記
より汎用性の高いソースができたので、ご紹介。
指定したテキストファイルの文字列を置換して、別名保存(上書き)するVBScript
SQLを操作できるフリーソフト「CSE」を使ってSELECT結果をCSV出力すると、
ダブルコーテーション「"」が付いてしまう。
ダブルコーテーションが付いていると既存のツールが動作しないので、
テキストファイルのダブルコーテーションを削除するVBScriptを作ってみた。
また、SELECT結果をエクセルに張り付けるため、
カンマをTABに置換するVBScriptも作った。
ソースは同じで置換する文字が違うだけなので、片方のみソースを掲載。
さんざん使いまわしているファイルをドラッグドロップで動く処理が長いが、
実際の処理はあんまり長くない。
ファイルを編集して上書き保存のやり方がわからず、
テキスト出力して名前を付けて保存の処理にした。
以下、ソース。
より汎用性の高いソースができたので、ご紹介。
指定したテキストファイルの文字列を置換して、別名保存(上書き)するVBScript
SQLを操作できるフリーソフト「CSE」を使ってSELECT結果をCSV出力すると、
ダブルコーテーション「"」が付いてしまう。
ダブルコーテーションが付いていると既存のツールが動作しないので、
テキストファイルのダブルコーテーションを削除するVBScriptを作ってみた。
また、SELECT結果をエクセルに張り付けるため、
カンマをTABに置換するVBScriptも作った。
ソースは同じで置換する文字が違うだけなので、片方のみソースを掲載。
さんざん使いまわしているファイルをドラッグドロップで動く処理が長いが、
実際の処理はあんまり長くない。
ファイルを編集して上書き保存のやり方がわからず、
テキスト出力して名前を付けて保存の処理にした。
以下、ソース。
日付のフォルダを作るVBscript2
2021年05月21日
だいぶ前に日付のフォルダを作るVBScriptを作った。
https://aki.p-kin.net/Entry/24/
業務ではちょいちょい使っていて、思うことがある。
フォルダ作ったんなら開いてよ!!
てなわけで、改良してみた。
参考になったのがこのサイト
'https://rakugakiman.com/archives/2258
フォルダを開く処理って1行で表現できるのね。
使いやすさを考えて、1行表現ではなくモジュールに飛ばすことにした。
以下、ソース。
https://aki.p-kin.net/Entry/24/
業務ではちょいちょい使っていて、思うことがある。
フォルダ作ったんなら開いてよ!!
てなわけで、改良してみた。
参考になったのがこのサイト
'https://rakugakiman.com/archives/2258
フォルダを開く処理って1行で表現できるのね。
使いやすさを考えて、1行表現ではなくモジュールに飛ばすことにした。
以下、ソース。
はちみつレモンサワーを作ってみた
2021年05月13日
ほろ酔いのはちみつレモンサワーが気に入ってて、
今日も近所のドラッグストアで買おうと手に取って思いとどまった。
家にはちみつもレモン汁もあるから作ればいいじゃん。
220円で小さい焼酎を買って、家で成分を確認。
ほろ酔いはちみつレモンサワー
アルコール・・・3%
果汁・・・2%
糖質・・・約9g/100ml
材料(200ml分)
焼酎(20%)・・・200×3%÷20%=30ml(大さじ2)
ポッカレモン(100%)・・・200×2%÷100%=4ml(小さじ1)
はちみつ・・・200ml×9g÷100ml÷1.5=12ml(小さじ2)
料理をするときって結構算数の計算力を問われるね。
はちみつは、グラニュー糖の1.5倍の糖質のようなので、
最後に1.5で割る必要がある。
はちみつをお湯で溶かして、ポッカレモンと焼酎を入れて氷で冷やす。
ミネラルウォーターで量を調整して完成。
思った以上においしくできた。
けど、何か違う。。。
炭酸わすれてるじゃんか!
今日も近所のドラッグストアで買おうと手に取って思いとどまった。
家にはちみつもレモン汁もあるから作ればいいじゃん。
220円で小さい焼酎を買って、家で成分を確認。
ほろ酔いはちみつレモンサワー
アルコール・・・3%
果汁・・・2%
糖質・・・約9g/100ml
材料(200ml分)
焼酎(20%)・・・200×3%÷20%=30ml(大さじ2)
ポッカレモン(100%)・・・200×2%÷100%=4ml(小さじ1)
はちみつ・・・200ml×9g÷100ml÷1.5=12ml(小さじ2)
料理をするときって結構算数の計算力を問われるね。
はちみつは、グラニュー糖の1.5倍の糖質のようなので、
最後に1.5で割る必要がある。
はちみつをお湯で溶かして、ポッカレモンと焼酎を入れて氷で冷やす。
ミネラルウォーターで量を調整して完成。
思った以上においしくできた。
けど、何か違う。。。
炭酸わすれてるじゃんか!