pdfimages является одной программой для извлечения изображений:
NAME
pdfimages - Portable Document Format (PDF) image extractor (version 3.00)
SYNOPSIS
pdfimages [options] PDF-file image-root
DESCRIPTION
Pdfimages saves images from a Portable Document Format (PDF) file as Portable Pixmap (PPM), Portable Bitmap (PBM), or JPEG files.
Pdfimages reads the PDF file PDF-file, scans one or more pages, and writes one PPM, PBM, or JPEG file for each image, image-root-
nnn.xxx, where nnn is the image number and xxx is the image type (.ppm, .pbm, .jpg).
pdfimages --help
pdfimages version 0.12.4
Copyright 2005-2009 The Poppler Developers - http://poppler.freedesktop.org
Copyright 1996-2004 Glyph & Cog, LLC
Usage: pdfimages [options] <PDF-file> <image-root>
-f <int> : first page to convert
-l <int> : last page to convert
-j : write JPEG images as JPEG files
-opw <string> : owner password (for encrypted files)
-upw <string> : user password (for encrypted files)
-q : don't print any messages or errors
-v : print copyright and version info
-h : print usage information
-help : print usage information
--help : print usage information
-? : print usage information
pdftoppm - другой:
NAME
pdftoppm - Portable Document Format (PDF) to Portable Pixmap (PPM) converter (version 3.00)
SYNOPSIS
pdftoppm [options] PDF-file PPM-root
DESCRIPTION
Pdftoppm converts Portable Document Format (PDF) files to color image files in Portable Pixmap (PPM) format, grayscale image
files in Portable Graymap (PGM) format, or monochrome image files in Portable Bitmap (PBM) format.
Pdftoppm reads the PDF file, PDF-file, and writes one PPM file for each page, PPM-root-nnnnnn.ppm, where nnnnnn is the page num‐
ber.
Как уже упомянуто, можно попытаться открыть PDF с графическим программным обеспечением управления.
Как длятся нейтрализацию, можно отобразить PDF, сделать снимок экрана и работать над этим.
Тестирование с этим файлом:
$ echo hello world > test.txt
$ echo -n $'\x1b\x1f' >> test.txt
$ echo whatever >> test.txt
$ hexdump -C test.txt
00000000 68 65 6c 6c 6f 20 77 6f 72 6c 64 0a 1b 1f 77 68 |hello world...wh|
00000010 61 74 65 76 65 72 0a |atever.|
$ grep -a -b --only-matching $'\x1b\x1f' test.txt
12:
Так в этом случае 1B 1F
в положении 12
.
Преобразуйте в целое число (существует, вероятно, более легкий путь),
$ echo 'ibase=16; '`xxd -u -ps -l 2 -s 12 test.txt` | bc
6943
И реверс:
$ printf '%04X' 6943 | xxd -r -ps | hexdump -C
00000000 1b 1f |..|
$ printf '%04X' 4242 | xxd -r -ps | hexdump -C
00000000 10 92 |..|
И откладывание его в файле:
$ printf '%04X' 4242 | xxd -r -ps | dd of=test.txt bs=1 count=2 seek=12 conv=notrunc
2+0 records in
2+0 records out
2 bytes (2 B) copied, 5.0241e-05 s, 39.8 kB/s
Результат:
$ hexdump -C test.txt
00000000 68 65 6c 6c 6f 20 77 6f 72 6c 64 0a 10 92 77 68 |hello world...wh|
00000010 61 74 65 76 65 72 0a |atever.|
О, извините. Этот ответ является устаревшим, потому что я думал, что Вам записали шестнадцатеричные значения как ASCII в Вашем файле.
Можно преобразовать шестнадцатеричные числа в десятичную систему счисления через printf "%d" 0x1B1F
.
Если Вы сохранили байты в переменной BYTES=1B1F
затем Вы получаете результат с printf "%d" 0x$BYTES
.
Так, если Вы хотите увеличить число, делают
$ echo $(($(printf "%d" 0x$BYTES) +1))
6944
Затем преобразуйте его назад
printf '%X' $(($(printf "%d" 0x$BYTES) +1))
1B20
\x
— в строке два из Вашего примера кода. Это должно бытьecho -n $'\x1b\x1f' >> test.txt
. – erik 30.08.2013, 23:07printf "%d" 0x1B1F
сделает задание очень хорошо для получения Вашего6943
результат; идя от этого, можно использовать значительно более умную строку какprintf "%d" $(xxd -u -ps -l 2 -s 12 test.txt)
вместо этого и Вам не будет нужноbc
больше. – syntaxerror 02.12.2014, 19:08