Исходные коды (WM) ( удаление водяного знака в pdf-файле )

Вернуться назад
Используемые bat-файлы Размер (байт)
_clean.bat 603
1_remove-wm.bat 6576
getcode.bat 1715
newpdfs.bat 1368
pdfs2tifs.bat 1414
removew.bat 1386
replace.bat 806
splitin.bat 1074
tif-1-pdf.bat 413
Используемые exe-файлы Размер (байт)
BeCyPDFMetaEdit.com 49152
BeCyPDFMetaEdit.exe 659456
clipin.exe 88064
cmp.exe 69120
convert.exe (portable ImageMagick 6.9.2-4) 12828160
cpdf.exe 3414127
gswin32.exe (portable Ghostscript 9.18) 151552
i_view32.exe 598160
identify.exe (portable ImageMagick 6.9.2-4)
12745728
ls.exe 57856
nircmd.exe 36864
paste.exe 20992
pdftk.exe 5875200
qpdf.exe 77838
sed.exe 146944
Tiff2Pdf.exe 59392
Wbox.exe 30208
Используемые dll-библиотеки и др.
Размер (байт)
BitMiracle.LibTiff.NET.dll 609280
gsdll32.dll (portable Ghostscript 9.18)
14127104
libgcc_s_dw2-1.dll 118784
libiconv2.dll 978432
libintl3.dll 103424
libstdc++-6.dll 979982
qpdf13.dll 855566
Russian.dll (IrfanView) 51200
IP_Russian.lng 14934

Коды «основных» bat-файлов

_clean.bat (Предварительная очистка папок)

@Echo off
cls
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Предварительная очистка папок                            "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
if exist part\*.pdf del /Q part\*.pdf
if exist pdfs\*.pdf del /Q pdfs\*.pdf
if exist tif1\*.tif del /Q tif1\*.tif
if exist tif2\*.tif del /Q tif2\*.tif
@rem
if exist temp\*.* del /Q temp\*.*
@rem
if exist pdf_sample.tif del /Q pdf_sample.tif
if exist wm_sample.tif del /Q wm_sample.tif
@rem
@rem ----------------------------------------------------------
:END
1_remove-wm.bat (Удаление водяного знака в pdf-файле)

@Echo off
cls
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Удаление водяного знака в pdf-файле                      "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
@rem
@rem "Вход:  'pdf_in.pdf'"
@rem "Выход: 'pdf_out.pdf'"
@rem
@rem
if exist pdf_out.pdf del /Q pdf_out.pdf
@rem
@rem "========================================================="
@rem "ШАГ 1. Удаление ограничений на редактирование pdf-файла  "
@rem "========================================================="
@rem
@rem "Вход:  'pdf_in.pdf'"
@rem "Выход: 'temp\pdf_no_restrictions.pdf'"
@rem
@rem "Используется бесплатная утилита 'qpdf.exe'"
@rem
@rem "Используемые файлы:"
@rem qpdf.exe
@rem
@rem libgcc_s_dw2-1.dll
@rem libstdc++-6.dll
@rem qpdf13.dll
@rem zlib-flate.exe
@rem
@rem "Снятие ограничений с pdf-файла 'pdf_in.pdf'"
qpdf --decrypt pdf_in.pdf temp\pdf_no_restrictions.pdf
@rem
@rem
@rem
@rem "========================================================="
@rem "ШАГ 2. Разбиваем pdf-файл 'temp\pdf_no_restrictions.pdf' "
@rem "на отдельные страницы"
@rem "========================================================="
@rem
@rem "Вход:  'temp\pdf_no_restrictions.pdf'"
@rem "Выход: файлы 'part\pg_*.pdf' (pg_0001.pdf ... pg_0003.pdf)"
@rem
CALL splitin.bat
@rem
@rem
@rem "========================================================="
@rem "ШАГ 3. Преобразуем pdf-страницы в tif-файлы"
@rem "========================================================="
@rem
@rem "Пример преобразования 'part\pg_0001.pdf' в 'tif1\pg_0001.tif'"
@rem gswin32.exe -dNOPAUSE -sDEVICE=tiff24nc -sCompression=lzw -r300x300 -dNOPAUSE -sOutputFile=tif1\pg_0001.tif part\pg_0001.pdf -c quit
@rem
CALL pdfs2tifs.bat
@rem
@rem
@rem "========================================================="
@rem "ШАГ 4. Формирование образца фрагмента водяного знака     "
@rem "========================================================="
@rem
@rem "Формируем окно с надписью"
@rem "НЕОБХОДИМО из файла 'pdf_sample.tif' сформировать фрагмент изображения с водяным знаком!"
@rem "и записать его в формате tif в файл 'wm_sample.tif'"
@rem
@rem "Окно с предупреждением закроется автоматически через 3 секунды"
@rem
wbox /WW=250 /TM=2 /TL=3 /FS=8 "Ќ Ї®¬Ё­ ­ЁҐ" "Ќ…ЋЃ•Ћ„€ЊЋ Ё§ д ©«  'pdf_sample.tif' бд®а¬Ёа®ў вм да Ј¬Ґ­в Ё§®Ўа ¦Ґ­Ёп б ў®¤п­л¬ §­ Є®¬!" "OK"
@rem
@rem "Формируем 'пустой' файл-заготовку 'wm_sample.tif'"
echo.>wm_sample.tif
@rem
@rem
@rem "Копируем 'пустой' tif-файл 'auxs\empty.tif' в качестве 'wm_sample.tif'"
copy auxs\empty.tif wm_sample.tif >null
@rem
@rem "Копируем в буфер памяти 'пустой' tif-файл 'auxs\empty.tif'"
clipin auxs\empty.tif
@rem
@rem "Преобразуем содержимое памяти в файл 'wm_sample.tif'"
i_view32.exe /clippaste /convert=wm_sample.tif
@rem
@rem ----------------------------------------------------------
@rem "Открываем файл 'pdf_sample.tif'"
i_view32.exe pdf_sample.tif
@rem
@rem "ЦИКЛ ожидания копирования фрагмента"
:Metka1
echo  .
@rem
@rem "Пауза 0,5 секунды"
nircmd wait 500
@rem
@rem "Преобразуем содержимое памяти в файл 'wm_sample.tif'"
i_view32.exe /clippaste /convert=wm_sample.tif
@rem
@rem "Проверяем не изменился ли размер файла 'wm_sample.tif'"
cmp auxs\empty.tif wm_sample.tif >temp\comp
@rem
@rem "Пытаемся удалить файл 'temp\comp', если он меньше 40 байт"
@rem "The files are the same."
@rem
set Size=40
set Files=temp\comp
for %%F in (%Files%) do if /i %%~zF LSS %Size% del /f %%F
@rem
@rem "Если файла нет, то 'wm_sample.tif' НЕ изменился"
@rem "т.е. образец с водяным знаком НЕ скопирован в память"
if not exist temp\comp goto Metka1
@rem
@rem ----------------------------------------------------------
@rem "Пытаемся удалить файл 'wm_sample.tif', если он меньше 400 байт"
@rem "т.е. тогда, когда фрагмент не выделен, либо из 'IrfanView'"
@rem "вышли без копирования фрагмента с водяным знаком"
@rem
set Size=400
set Files=wm_sample.tif
for %%F in (%Files%) do if /i %%~zF LSS %Size% del /f %%F
@rem
@rem
if exist temp\comp del /Q temp\comp
@rem
@rem "Проверяем наличие файла 'wm_sample.tif'"
@rem "Если файла НЕТ, то выходим из обработки"
if not exist wm_sample.tif goto ERROR
@rem
@rem
@rem "========================================================="
@rem "ШАГ 6. Формируем код 'серого' цвета водяного знака       "
@rem "========================================================="
@rem
@rem "Вход:    файл 'wm_sample.tif'"
@rem "Выход 1: файл 'temp\_RGB-unique"
@rem "Выход 2: файл 'temp\_gray_codes_list.txt'"
@rem
CALL getcode.bat
@rem
@rem
@rem
@rem "========================================================="
@rem "ШАГ 7. УДАЛЕНИЕ 'серого' водяного знака в tif-файлах     "
@rem "========================================================="
@rem
@rem "Вход:  файлы 'tif1\*.tif'"
@rem "Выход: файлы 'tif2\*.tif'"
@rem
CALL removew.bat
@rem
@rem
@rem "========================================================="
@rem "ШАГ 8. ПРЕОБРАЗОВАНИЕ 'очищенных' *.tif в pdf-файлы      "
@rem "========================================================="
@rem
@rem "Вход:  файлы 'tif2\*.tif'"
@rem "Выход: файлы 'pdfs\*.pdf'"
@rem
CALL newpdfs.bat
@rem
@rem
@rem "========================================================="
@rem "ШАГ 9. ОБЪЕДИНЕНИЕ всех pdf-файлов в один                "
@rem "========================================================="
@rem
@rem "Вход:  файлы 'pdfs\*.pdf'"
@rem "Выход: файл 'pdf_out.pdf'"
@rem
pdftk pdfs\*.pdf cat output pdf_out.pdf
@rem
@rem
@rem "========================================================="
@rem "ШАГ 10. НОРМАЛИЗАЦИЯ объединённого pdf-файла             "
@rem "========================================================="
@rem
BeCyPDFMetaEdit pdf_out.pdf -PL 1 -PM 3 -T "Removed watermark" -S "" -A "V.I. Karnyshev"
@rem
@rem "Обходим обработку ОШИБКИ"
goto METKA2
@rem ----------------------------------------------------------
@rem
:ERROR
@rem "Формируем окно с надписью"
@rem "ОШИБКА! Файл 'wm_sample.tif' НЕ СФОРМИРОВАН!"
@rem
@rem "Окно закрывается автоматически через 4 секунды"
@rem
wbox /WW=200 /TM=4 /TL=2 /FS=8 /CR=^ "€­д®а¬ жЁп" "Ћ˜€ЃЉЂ! ” ©« 'wm_sample.tif' Ќ… ‘”ЋђЊ€ђЋ‚ЂЌ!" "OK"
goto END
@rem
:METKA2
@rem
@rem ----------------------------------------------------------
@rem "ОЧИСТКА"
if exist pdfs\*.pdf del /Q pdfs\*.pdf
if exist temp\*.* del /Q temp\*.*
@rem
@rem ----------------------------------------------------------
:END

Коды «вспомогательных» bat-файлов

splitin.bat (Постраничное разбиение pdf-файла)

@Echo off
@rem
cls
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Постраничное разбиение pdf-файла                         "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
@rem "Вариант постраничного разбиения pdf-файла"
@rem "для общего случая, когда команда"
@rem "pdftk pdf_no_restrictions.pdf burst"
@rem "НЕ срабатывает"
@rem
@rem "Вход:  файл 'temp\pdf_no_restrictions.pdf'"
@rem "Выход: файлы 'part\pg_*.pdf'"
@rem
@rem ----------------------------------------------------------
@rem "Очищаем папку 'part'"
if exist part\*.pdf del /Q part\*.pdf
@rem
@rem ----------------------------------------------------------
@rem "Извлекаем pdf-страницы"
echo  €§ў«ҐЄ Ґ¬ pdf-бва ­Ёжл:
cpdf -split temp\pdf_no_restrictions.pdf -o part\pg_%%%%%%%%.pdf
@rem
@rem ----------------------------------------------------------
@rem "ОЧИСТКА"
@rem
if exist temp\pdf_no_restrictions.pdf del /Q temp\pdf_no_restrictions.pdf
@rem
@rem ----------------------------------------------------------
:END
pdfs2tifs.bat (Постраничное преобразование pdf-страниц в tif-файлы)

@Echo off
@rem
cls
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Постраничное преобразование pdf-страниц в tif-файлы      "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
@rem
@rem
@rem "Составляем список pdf-страниц в папке 'part'"
ls part\pg*.pdf >temp\zut01
@rem
@rem "Формируем bat-файл 'ztemp3.bat' для поточного преобразования"
@rem
sed "s/part/tif1/;s/pdf/tif/" <temp\zut01 >temp\zut02
paste temp\zut02 temp\zut01 >temp\zut03
@rem
sed "s/^/gswin32.exe -dNOPAUSE -dQUIET -dNOPROMPT -sDEVICE=tiffgray -sCompression=lzw -r300x300 -dNOPAUSE -sOutputFile=/" <temp\zut03 >temp\zut04
sed "s/\t/ /" <temp\zut04 >temp\zut05
sed "s/$/ -c quit\r\ncls/" <temp\zut05 >temp\zut06
sed "1i@Echo off\r\ncls\r\n@rem" <temp\zut06 >temp\zut07
sed "s/$/\r/" <temp\zut07 >ztemp3.bat
@rem
@rem "Очищаем папку 'tif1'"
if exist tif1\*.tif del /Q tif1\*.tif
@rem
@rem "Преобразуем pdf в tif"
CALL ztemp3.bat
@rem
@rem "Формируем 'образцовую' страницу 'pdf_sample.tif' с водяным знаком"
copy tif1\pg_0001.tif pdf_sample.tif >null
@rem
@rem ----------------------------------------------------------
@rem "ОЧИСТКА"
if exist null del /Q null
if exist part\*.pdf del /Q part\*.pdf
if exist ztemp3.bat del /Q ztemp3.bat
if exist temp\zut* del /Q temp\zut*
@rem
@rem ----------------------------------------------------------
:END
getcode.bat (Формирование кода (кодов) «серого» цвета водяного знака)

@Echo off
@rem
cls
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Формирование кода (кодов) 'серого' цвета водяного знака  "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
@rem "Вход:    файл 'wm_sample.tif'"
@rem "Выход 1: файл 'temp\_RGB-unique"
@rem "Выход 2: файл 'temp\_gray_codes_list.txt'"
@rem
@rem
@rem "Используется утилита 'identify.exe' программы 'ImageMagick'"
@rem http://www.imagemagick.org/script/identify.php
@rem
@rem "Предварительная очистка"
if exist temp\_gray_codes_list.txt del /Q temp\_gray_codes_list.txt
@rem
@rem "Выводим число уникальных цветов в изображении"
identify -quiet -format %%k wm_sample.tif >temp\_RGB-unique
cls
@rem
@rem "Выводим коды уникальных цветов в изображении"
identify -verbose wm_sample.tif >temp\zuu01
cls
sed "$s/$/\r\n=====/" <temp\zuu01 >temp\zuu02
sed "/Colormap/,/=====/d" <temp\zuu02 >temp\zuu03
sed "/(.*).*#/!d" <temp\zuu03 >temp\zuu04
@rem
@rem "Удаляем строку с 'белым' цветом"
sed "/#FFFFFF/d" <temp\zuu04 >temp\zuu05
@rem
@rem "Удаляем строку с 'чёрным' цветом"
sed "/#000000/d" <temp\zuu05 >temp\zuu06
@rem
@rem "Выводим строки с кодами 'серого' цвета"
sed "/#...... /!d" <temp\zuu06 >temp\zuu07
sed "s/^.*\(#......\) .*$/\1\r/" <temp\zuu07 >temp\zuu08
sed "/^#[ABCDE]/!d" <temp\zuu08 >temp\zuu09
sed "s/$/\r/" <temp\zuu09 >temp\_gray_codes_list.txt
@rem
@rem ----------------------------------------------------------
@rem "ОЧИСТКА"
@rem
if exist pdf_sample.tif del /Q pdf_sample.tif
if exist wm_sample.tif del /Q wm_sample.tif
if exist temp\zuu* del temp\zuu*
@rem
@rem ----------------------------------------------------------
:END
removew.bat (Удаление «серого» водяного знака в tif-файлах)

@Echo off
@rem
cls
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Удаление 'серого' водяного знака в tif-файлах            "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
@rem "Вход:  tif-файлы в папке 'tif1'"
@rem "Выход: tif-файлы в папке 'tif2'"
@rem
@rem "Формируем поточный bat-файл 'ztemp4.bat' со строками вида"
@rem copy tif1\pg_0001.tif temp\temp.tif
@rem CALL replace-g.bat
@rem copy temp\temp.tif tif2\pg_0001.tif
@rem ...
@rem
@rem
ls tif1\*.tif >temp\zuw01
sed "s/tif1/tif2/" <temp\zuw01 >temp\zuw02
paste temp\zuw01 temp\zuw02 >temp\zuw03
sed "s/^/copy /" <temp\zuw03 >temp\zuw04
sed "s/\t/ temp\\temp\.tif >null#CALL replace\.bat#copy temp\\temp\.tif /" <temp\zuw04 >temp\zuw05
sed "s/$/ >null\r/" <temp\zuw05 >temp\zuw06
sed "s/#/\r\n/g" <temp\zuw06 >ztemp4.bat
@rem
@rem "Предварительная очистка папки 'tif2'"
if exist tif2\*.tif del /Q tif2\*.tif
@rem
@rem "Поточное удаление водяного знака во всех tif-файлах"
CALL ztemp4.bat
@rem
@rem ----------------------------------------------------------
@rem "ОЧИСТКА"
if exist null del /Q null
if exist ztemp4.bat del /Q ztemp4.bat
if exist tif1\*.tif del /Q tif1\*.tif
if exist temp\zuw* del /Q temp\zuw*
if exist temp\temp.tif del /Q temp\temp.tif
@rem
@rem ----------------------------------------------------------
:END
replace.bat (Удаление серых цветов из файла temp.tif)
@Echo off
@rem
cls
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Удаление серых цветов ('watermark') из 'temp\temp.tif'&nbsp;&nbsp; "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
@rem convert temp\temp.tif -fill white -opaque #D9D9D9 temp\temp.tif
@rem convert temp\temp.tif -fill white -opaque #D5D5D5 temp\temp.tif
@rem ...
@rem
sed "s/^/convert temp\\temp\.tif -fill white -opaque /" <temp\_gray_codes_list.txt >temp\zuc01
sed "s/$/ temp\\temp\.tif\r/" <temp\zuc01 >ztemp5.bat
@rem
CALL ztemp5.bat
echo  ...done
@rem
@rem ----------------------------------------------------------
if exist ztemp5.bat del /Q ztemp5.bat
if exist temp\zuc* del /Q temp\zuc*
@rem
@rem ----------------------------------------------------------
:END
newpdfs.bat (Преобразование «очищенных» *.tif в pdf-файлы)

@Echo off
@rem
cls
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование 'очищенных' *.tif в pdf-файлы             "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
@rem "Вход:  tif-файлы в папке 'tif2'"
@rem "Выход: pdf-файлы в папке 'pdfs'"
@rem
@rem "Формируем поточный bat-файл 'ztemp6.bat' со строками вида"
@rem
@rem ----------------------------------------------------------
@rem "Составляем список *.tif файлов"
ls tif2\*.tif >temp\zuq01
@rem
@rem "Организуем ЦИКЛ преобразования tif в pdf"
@rem
FOR /F "delims=" %%i IN (temp\zuq01) DO (
echo  ...done
echo %%i >temp\zuq02
sed "s/^/copy /" <temp\zuq02 >temp\zuq03
sed "s/$/current\.tif >null\r/" <temp\zuq03 >ztemp5.bat
CALL ztemp5.bat
sed "s/tif2/pdfs/;s/tif/pdf >null/" <temp\zuq02 >temp\zuq05
sed "s/^/copy current\.pdf /" <temp\zuq05 >temp\zuq06
sed "s/$/\r/" <temp\zuq06 >ztemp6.bat
CALL tif-1-pdf.bat
CALL ztemp6.bat
)
@rem
@rem ----------------------------------------------------------
@rem "ОЧИСТКА"
if exist current.pdf del /Q current.pdf
if exist current.tif del /Q current.tif
if exist null del /Q null
if exist ztemp*.bat del /Q ztemp*.bat
if exist tif2\*.tif del /Q tif2\*.tif
if exist temp\zuq* del /Q temp\zuq*
@rem
@rem ----------------------------------------------------------
:END
tif-1-pdf.bat (Преобразование одиночного tif-файла в pdf-файл)
@Echo off
cls
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem "Преобразование одиночного tif-файла в pdf-файл           "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
@rem "Вход:  файл 'current.tif'"
@rem "Выход: файл 'current.pdf'"
@rem
@rem "Преобразуем 'current.tif' в 'current.pdf'"
Tiff2Pdf -z -o current.pdf current.tif
@rem
@rem
:END