Created
July 29, 2019 10:00
-
-
Save cmplstofB/7f38411f0b6f69b632e6a220e7544046 to your computer and use it in GitHub Desktop.
PDFの分析(コマンドライン)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pdffile=main.pdf | |
startxref="$(dd if="$pdffile" bs=1 2> /dev/null | tr -d '\r' | (tail -n 2 | head -n 1))" | |
eval -- "$(printf 'dd if="$pdffile" bs=1 skip="$startxref" 2> /dev/null | tr -d \047\r\047 | awk \047NR==%d+3,NR==%d+2\047' $( | |
dd if="$pdffile" bs=1 skip="$startxref" 2> /dev/null | tr -d '\r' | (head -n 2 | tail -n 1)))" > xref.ssv | |
# trailerの/Rootの第1引数+1(例: /Root 13 0 R→14) | |
< xref.ssv sed -n -e '13{s/ .*//p}' | |
dd if="$pdffile" bs=1 skip="$(< xref.ssv sed -n -e '14{s/0*\([1-9][0-9]*\) .*/\1/p}')" 2> /dev/null | tr -d '\r' | | |
sed -n -e '1,/>>/p' | |
# ↑これで表示された/Pagesの第1引数+1 | |
dd if="$pdffile" bs=1 skip="$(< xref.ssv sed -n -e '12{s/0*\([1-9][0-9]*\) .*/\1/p}')" 2> /dev/null | tr -d '\r' | | |
sed -n -e '1,/>>/p' | |
# ↑これで表示された/Kidsの第1配列の第1引数+1 | |
dd if="$pdffile" bs=1 skip="$(< xref.ssv sed -n -e '10{s/0*\([1-9][0-9]*\) .*/\1/p}')" 2> /dev/null | tr -d '\r' | | |
sed -n -e '1,/>>/p' | |
# ↑これで表示された/Contentsの第1引数+1 | |
dd if="$pdffile" bs=1 skip="$(< xref.ssv sed -n -e '8{s/0*\([1-9][0-9]*\) .*/\1/p}')" 2> /dev/null | tr -d '\r' | | |
sed -n -e '1,/>>/p' | |
# /Lengthの値(例: 100) | |
dd if="$pdffile" bs=1 skip="$(< xref.ssv sed -n -e '8{s/0*\([1-9][0-9]*\) .*/\1/p}')" 2> /dev/null | tr -d '\r' | | |
sed -n -e '/stream/,${n;p}' | dd bs=1 count=100 2> /dev/null > stream.bin | |
<<. python3 - | |
import zlib | |
stream = open('stream.bin',mode='rb') | |
print(zlib.decompress(stream.read())) | |
stream.close() | |
. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment