Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /bin/bash
- #######################################################
- #*****************************************************#
- #Skrypt dodający znak wodny do pdfa, oraz zabraniający#
- #edycji, druku itd. #
- #Wykorzystuje program pdftk #
- #Użyj --help, by dowiedzieć się więcej #
- #*****************************************************#
- #######################################################
- #######################################################
- #W tej sekcji możesz skonfigurować ustawienia domyślne.
- #Polecam jednak korzystać z --configure
- #Dopisek do pliku wyjściowego
- SUFIKS="_demo"
- #Hasło właściciela
- D_HASLO="CzyKotySniaOMysichOwcach"
- #Znak wodny (śc. bezwględna, D_ZNAK="0" oznacza jego brak)
- D_ZNAK="0"
- #Zezwolenia użytkownika (D_ZEZWOLENIA="0" - brak zezwoleń)
- D_ZEZWOLENIA="0"
- #######################################################
- #--ulubione_przez_M
- #######################################################
- #Deklaracje
- bold=`tput bold`
- normal=`tput sgr0`
- SKRYPT=$0
- #######################################################
- #Wypisywanie opcji
- skladnia()
- {
- echo "${bold}$0${normal} [plik_wejściowy] [OPCJE]
- ${bold}OPCJE${normal}
- Brak podania opcji powoduje, iż skrypt czyta z domyślnych ustawień. Można korzystać z dowolnych parametrów równocześnie.
- ${bold}--settings${normal} wypisuje ustawienia domyślnego.
- ${bold}--configure${normal} kreator ustawień domyślnych.
- ${bold}-o${normal} [plik-wyjsciowy] pozwala wybrać plik wyjściowy.
- ${bold}-b${normal} [plik-tła] umożliwia ustawienie znaku wodnego. Musi to być również plik PDF. Przy różnych rozmiarach stron zostanie on przeskalowany.
- ${bold}-p${normal} [hasło] ustalenie hasła właściciela dla pliku wyjściowego.
- ${bold}-a${normal} [nazwy-uprawnień] zwiększa uprawnienia użytkownika końcowego ponad uprawnienia domyślne. Nazwy uprawnień rozdzielone powinny być spacjami.
- ${bold}--help${normal} pomoc.
- "
- }
- ######################################################
- #Funkcja pomocy
- pomoc()
- {
- echo $"
- ${bold}MAŁY PLIK POMOCY${normal}
- Skrypt ten ma na celu szybkie korzystanie z możliwości zabezpieczenia PDFów, poprzez własny znak wodny oraz uniemożliwienie wydruku, kopiowania zawartości etc. Wykorzystuje w tym celu program ${bold}pdftk${normal}. Musisz go mieć zainstalowanego na komputerze. Równocześnie wykorzystuje tylko niezwykle małą część możliwości programu ${bold}pdftk${normal}, jednakże w ściśle określonym celu. Aplikacja nie szyfruje hasła domyślnego!
- ${bold}SKŁADNIA${normal}"
- skladnia
- echo $"${bold}NAZWY UPRAWNIEŃ${normal}
- Skrypt obsługuje następujące uprawnienia dla użytkownika końcowego:
- ${bold}Printing${normal}
- Dokument można drukować w pełnej jakości.
- ${bold}DegradedPrinting${normal}
- Dokument można drukować tylko w obniżonej jakości.
- ${bold}ModifyContents${normal}
- Można modyfikować zawartość dokumentu.
- ${bold}Assembly${normal}
- Dokument PDF można łączyć z innymi dokumentami PDF.
- ${bold}CopyContents${normal}
- Tekst i obrazy dokumentu mogą być kopiowane za pośrednictwem schowka.
- ${bold}ModifyAnnotations${normal}
- Można modyfikować i tworzyć komentarze.
- ${bold}Fillln${normal}
- Można wypełniać formularze w dokumencie PDF.
- ${bold}AllFeatures${normal}
- Wszystkie uprawnienia do dokumentu.
- ${bold}PRZYKŁADY UŻYCIA${normal}
- Dosłownie kilka, bo dużo więcej możliwości nie ma:
- ${bold}$0 ./plik.pdf${normal}
- W przypadku ustawień podstawowych programu otrzymujemy na wyjściu: ${bold}./plik_demo.pdf${normal} pozwalający użytkownikowi końcowemu jedynie na czytanie zawartości. Nie zawiera znaku wodnego.
- ${bold}$0 ./plik.pdf -o ./inny_plik.pdf ${normal}
- Otrzymujemy plik ${bold}$./inny_plik.pdf${normal}
- ${bold}$0 ~/plik.pdf -o ~/Dokumenty/inny_plik.pdf -b ~/Obrazy/znak.pdf -a DegradedPrinting${normal}
- Po działaniu skryptu uzyskujemy ${bold}inny_plik.pdf${normal} w katalogu Dokumenty w folderze domowym. Ponadto w tle dokumentu będzie nasz znak wodny z pliku ${bold}znak.pdf${normal} znajdującego się w katalogu Obrazy. Użytkownik końcowy może wydrukować tak stworzony PDF jedynie w gorszej jakości.
- ${bold}NOTA KOŃCOWA${normal}
- A kopiujcie sobie jak chcecie :)
- P. S.
- --kotek
- "
- }
- ######################################################
- #Wypisywanie ustawień domyślnych --settings
- domyslne()
- {
- echo $"
- Aktualna konfiguracja domyślna:
- ${bold}Sufiks:${normal} $SUFIKS
- ${bold}Hasło:${normal} $D_HASLO
- ${bold}Znak wodny:${normal} $D_ZNAK
- ${bold}Uprawnienia:${normal} $D_ZEZWOLENIA
- "
- }
- ######################################################
- #Konfiguracja ustawień domyślnych --configure
- konfiguruj()
- {
- domyslne
- PS3="Wybierz, które ustawienie domyślne chcesz zmodyfikować:"
- select DOM in "Dopisek do pliku wyjściowego" "Hasło właściciela" "Ścieżkę znaku wodnego" "Zezwolenia użytkownika końcowego" "Anuluj zmiany" "Zapisz zmiany"; do
- case $DOM in
- "Dopisek do pliku wyjściowego")
- echo " Podaj nowy przyrostek:"
- read N_SUFIKS
- while [ -z "$N_SUFIKS" ]; do
- echo "Przyrostek nie może być pusty, proszę podaj nowy:"
- read N_SUFIKS
- done
- ;;
- "Hasło właściciela")
- echo "Podaj nowe hasło:"
- read N_HASLO
- while [ -z "$N_HASLO" ]; do
- echo "Hasło nie może być puste, proszę podaj nowe:"
- read N_HASLO
- done
- ;;
- "Ścieżkę znaku wodnego")
- echo "Podaj proszę ścieżkę bezwzględną znaku wodnego. Puste pole lub 0 oznacza domyślny brak symbolu."
- read N_ZNAK
- while [ "${N_ZNAK:`expr ${#N_ZNAK} - 4`:${#N_ZNAK}}" != ".pdf" ] && [ -n "$N_ZNAK" ] && [ "$N_ZNAK" != 0 ]; do
- echo "Znak wodny musi być plikiem PDF, równy 0 lub pusty. Proszę wprowadź go ponownie:"
- read N_ZNAK
- done
- if [ -z "$N_ZNAK" ]
- then
- N_ZNAK="0"
- fi
- ;;
- "Zezwolenia użytkownika końcowego")
- echo $"Podaj wybrane zezwolenia. Puste pole lub 0 oznacza domyślny zezwolenie jedynie na otwieranie PDFa.
- Możliwe zezwolenia to: Printing DegradedPrinting ModifyContents Assembly CopyContents ModifyAnnotations Fillln AllFeatures"
- read N_ZEZWOLENIA
- NZ=`echo $N_ZEZWOLENIA | sed -e "s/[[:space:]]//;s/DegradedPrinting//;s/Printing//;s/ModifyContents//;s/Assembly//;s/CopyContents//;s/ModifyAnnotations//;s/Fillln//;s/AllFeatures//;s/0//"`
- echo $NZ
- while [ -n "$NZ" ];do
- echo "Podano złe zezwolenia, proszę spróbuj ponownie:"
- read N_ZEZWOLENIA
- NZ=`echo $N_ZEZWOLENIA | sed -e "s/[[:space:]]//;s/DegradedPrinting//;s/Printing//;s/ModifyContents//;s/Assembly//;s/CopyContents//;s/ModifyAnnotations//;s/Fillln//;s/AllFeatures//;s/0//"`
- done
- if [ -z "$N_ZEZWOLENIA" ]
- then
- N_ZEZWOLENIA="0"
- fi
- ;;
- "Anuluj zmiany")
- echo "Nie zapisano zmian!"
- exit 1
- ;;
- "Zapisz zmiany")
- if [ -n "$N_SUFIKS" ]
- then
- sed -i "/^SUFIKS=/ s+${SUFIKS}+${N_SUFIKS}+" $SKRYPT
- fi
- if [ -n "$N_HASLO" ]
- then
- sed -i "/^D_HASLO=/ s+${D_HASLO}+${N_HASLO}+" $SKRYPT
- fi
- if [ -n "$N_ZNAK" ]
- then
- sed -i "/^D_ZNAK=/ s+${D_ZNAK}+${N_ZNAK}+" $SKRYPT
- fi
- if [ -n "$N_ZEZWOLENIA" ]
- then
- sed -i "/^D_ZEZWOLENIA=/ s+${D_ZEZWOLENIA}+${N_ZEZWOLENIA}+" $SKRYPT
- fi
- sleep 1s
- echo "done"
- exit 1
- ;;
- *)
- echo "Nie zapisano zmian!"
- exit 1
- ;;
- esac
- done
- }
- #######################################################
- #Tu się zaczyna właściwy kod. Lepiej nie ruszać,drapie
- if [ "$1" = "--help" ]
- then
- pomoc | more
- elif [ "$1" = "--settings" ]
- then
- domyslne
- elif [ "$1" = "--configure" ]
- then
- konfiguruj
- else
- WEJSCIE=$1
- shift 1
- if [ -z "$WEJSCIE" ]
- then
- echo "Brak wejscia!"
- skladnia
- echo "Aby uzyskać większą pomoc użyj: ${bold}$0 --help${normal}"
- exit 1
- fi
- if [ "$WEJSCIE" != "--kotek" ] && [ "$WEJSCIE" != "--kotki" ]
- then
- if [ "${WEJSCIE:`expr ${#WEJSCIE} - 4`:${#WEJSCIE}}" != ".pdf" ]
- then
- echo "Plik na wejściu nie jest PDFem."
- exit 1
- fi
- if [ -z "$1" ]
- then
- echo "Wybrano ustawienia domyślne"
- fi
- while [ "$#" != "0" ] && [ "$#" != "1" ]; do
- if [ "$1" = '-p' ]
- then
- HASLO="$2"
- elif [ "$1" = '-o' ]
- then
- WYJSCIE="$2"
- elif [ "$1" = '-b' ]
- then
- ZNAK="$2"
- elif [ "$1" = '-a' ]
- then
- ZEZWOLENIA="$2"
- ZEZW=`echo $N_ZEZWOLENIA | sed -e "s/[[:space:]]//;s/DegradedPrinting//;s/Printing//;s/ModifyContents//;s/Assembly//;s/CopyContents//;s/ModifyAnnotations//;s/Fillln//;s/AllFeatures//;s/0//"`
- if [ -n "$NZ" ]
- then
- echo "Błędne zezwolenia"
- skladnia
- exit 1
- fi
- else
- echo "Błędna składnia!"
- skladnia
- exit 1
- fi
- shift 2
- done
- if [ -z "$WYJSCIE" ]
- then
- WYJSCIE="${WEJSCIE:0:`expr ${#WEJSCIE} - 4`}${SUFIKS}.pdf"
- fi
- if [ -z "$HASLO" ]
- then
- HASLO="$D_HASLO"
- fi
- echo $"
- ${bold}Wejscie:${normal} $WEJSCIE"
- echo "
- ${bold}Wyjście:${normal} $WYJSCIE"
- echo "
- ${bold}Hasło właściciela:${normal} $HASLO"
- if [ -e "$ZNAK" ]
- then
- echo "
- ${bold}Znak wodny:${normal} $ZNAK"
- TLO="background"
- else
- if [ -e "$D_ZNAK" ] && [ "$D_ZNAK" != "0" ]
- then
- ZNAK="$D_ZNAK"
- TLO="background"
- echo "
- ${bold}Znak wodny:${normal} $ZNAK"
- else
- TLO=""
- echo "
- ${bold}Bez znaku wodnego${normal}"
- fi
- fi
- if [ -z "$ZEZWOLENIA" ]
- then
- if [ "$D_ZEZWOLENIA" = "0" ]
- then
- echo "
- ${bold}Zezwolenie tylko na otwarcie${normal}"
- ZEZ=""
- else
- ZEZ="allow"
- ZEZWOLENIA="$D_ZEZWOLENIA"
- fi
- else
- ZEZ="allow"
- fi
- if [ "$ZEZ" = "allow" ]
- then
- echo "
- ${bold}Zezwolenia:${normal} $ZEZWOLENIA"
- fi
- # echo "$WEJSCIE" "$TLO" "$ZNAK" output "$WYJSCIE" owner_pw "$HASLO" "$ZEZ" "$ZEZWOLENIA"
- if [ -z "$TLO" ]
- then
- if [ -z "$ZEZ" ]
- then
- pdftk "$WEJSCIE" output "$WYJSCIE" owner_pw "$HASLO"
- else
- pdftk "$WEJSCIE" output "$WYJSCIE" owner_pw "$HASLO" "$ZEZ" "$ZEZWOLENIA"
- fi
- else
- if [ -z "$ZEZ" ]
- then
- pdftk "$WEJSCIE" "$TLO" "$ZNAK" output "$WYJSCIE" owner_pw "$HASLO"
- else
- pdftk "$WEJSCIE" "$TLO" "$ZNAK" output "$WYJSCIE" owner_pw "$HASLO" "$ZEZ" "$ZEZWOLENIA"
- fi
- fi
- echo "
- Done"
- else
- echo $"LabcdefghijklmnoAprstuwxyzabcdefghijklmnoLprstuwxyzabcdefBDCEKghijklmnoprstuwxyzabLcdefghijklmoprstJuwADEKxyzabcdefghijklmnLoprstuwxyzabcdeKfgHhDKiKjklmnoprstuwxyzaLbcdefghijklmnopHrAstuFwxByzabcdefghijklmLnoprstuwxyzabcdIeCDfAKghiDCEKAjklmnoprstLuwxyzabcdefghijDEKEFjklmnoprstDEKuwxyzabLdefghijklmnoprstuIwxyzabcDdefghijDKklmnoLprstuwxyzabcdefghHKijklmnoKprstuwxyBzabcLdefghijklmnoprstuKwBxyKzabHcdeKEFfghKijkLlmnoprstuwxyzabcdFefD+KIghIijFklmnopHrstLuwxyzabcdefghijklHmnFopGrstuIwxyzabcIEKdLefghijklmnoprstuwIxFyzaHbHDEHcdefgAKDChILijklmnoprstuwxKCFy/zaKCFbIcKCDEd+FefDCFgLhijklmnoprstuwDCECxyzDCECabDCECFcdefghij" | sed 's/[a-z]/ /g;s/A/_/g;s/B/\\/g;s/C/*/g;s/D/\`/g;s/E/-/g;s/F/F/g;s/G/|/g;s/H/:/g;s/I/;/g;s/J/)/g;s/K/./g;s/L/\n/g' | sed "s/F/'/g"
- fi
- fi
Advertisement
Add Comment
Please, Sign In to add comment