Zabezpieczenia pliku PDF i drukowanie kilku stron na jednej

16 komentarzy

Jak wiadomo, pliki PDF można zabezpieczać na różnych poziomach, np. przed edycją, drukiem itp. Odbezpieczyć można je w Acrobacie, gdy zna się hasło.

Nasz Profesor od baz danych ma zawsze dobrze przygotowane folie do wykładów, które potem publikuje w Internecie. Niestety, wrzuca dwie folie na stronę A4 + jakiś nagłówek do tego (typu „wykłady z baz danych, semestr zimowy 2006/2007”), co powoduje, że jeden wykład zajmuje 19 (!!!) stron A4. Wykłady mamy dwa razy w tygodniu. Folie są kolorowe. To sobie pomnóżcie jeszcze przez cenę tuszu do drukarki i wyjdzie. O!

Folie do pierwszego wykładu wycięłam w Acrobacie (tak, tak, Acrobat Prof.), tak, że były pojedynczo, potem można z nimi robić, co się żywnie podoba. Ale stwierdziłam, że zaryzykuję i napisałam do Profesora, czy by mógł może udostępnić te folie pojedynczo. Ale on tylko odpisał „sorry, ale nie będę spełniał pojedynczych życzeń każdego studenta”. Trudno.

Tylko, że o ile pierwszy wykład nie zawierał żadnej wiedzy, były to sprawy czysto organizacyjne, o tyle następne miały już znaczenie i — chyba w związku z tym — zostały przez Profesora zabezpieczone przed edycją. Nie cierpię, jak oni to robią. Przecież jesteśmy studentami informatyki. Ci, którzy lubią czytać prosto z monitora (ja do nich nie należę), robią sobie notatki bezpośrednio na foliach PDF. Ale z zabezpieczeniami nie można.

Z pomocą przychodzi LaTeX. Nie wiem, czy to bug czy feature, ale się przydaje:

\documentclass[a4paper]{article}

\usepackage{pdfpages}
\usepackage[%
left=0pt,right=0pt,top=0pt,bottom=0pt]{geometry}

\begin{document}
\includepdf[pages=-]{zabezpieczonyplikpdf}
\end{document}

Efekt jest taki, że kompilując ten pliczek pdflatex-em otrzymuje się plik niezabezpieczony [przed] niczym. Wprawdzie na razie nie odkryłam jeszcze, jak zautomatyzować to wycinanie folii, ale nie jest to aż takie ciężkie, 10–15 minut i po robocie. A potem tylko:

\documentclass[twoside,a4paper]{scrartcl}

\usepackage{pdfpages}
\usepackage[%
left=12mm,top=3mm,textheight=293mm,textwidth=195mm%
]{geometry}

\begin{document}
\includepdfmerge[%
nup=2x4,turn=false,delta=2mm 2mm]{plik1,-,plik2,-}
%\includepdf[pages=-,nup=2x4,turn=false]{plik1} % lub tak, jeśli każdy plik na nowej str.
\end{document}

I otrzymujemy piękny plik pdf z ośmioma foliami na jednej pionowej stronie A4 w dwóch rzędach.

Nie wiem, czy wolno łamać takie zabezpieczenia, ale ostatecznie mam czyste sumienie, bo robię to tylko dla siebie, nie rozpowszechniam tych plików i nie zmieniam treści wykładów.


Komentarze do notki “Zabezpieczenia pliku PDF i drukowanie kilku stron na jednej”

  1. Koval 

    lol. gratuluję. może się kiedyś przyda

  2. Medra 

    (Komentarz zmodyfikowany 01.11.2006 o 12:48)

    gratulacje i ode mnie :) i nie czuj się źle, to na Twój użytek, więc jeśli masz ochote mogłabyś sobie [coś ładnego ;) — wyedytowane przez Ja-Joanna] na marginesie narysować :D

  3. smk 

    Z "zabezpieczeniami" PDF jest tak jak z DRM - jak tu dać content użytkownikowi, a jednocześnie go nie dać?

  4. Jajcuś 

    Zabezpieczenia PDF to jest DRM.

  5. Ja-Joanna 

    Ano właśnie.

  6. jpc 

    Proponuje alternatywnie coś takiego (w ~/Library/Scripts/Preview)
    #v+
    #!/bin/sh

    GS="/usr/local/bin/gs"

    INFILE="`osascript - <<EOF
    tell application "System Events"
    tell process "Preview"
    tell window 1
    get value of attribute "AXDocument"
    end tell
    end tell
    end tell
    EOF`"
    INFILE="`echo \"$INFILE\"|~/.bin/url2path`"
    OUTFILE="`echo \"$INFILE\"|sed -e 's/\.\([^.]\{1,\}\)$/.clean.\1/'`"

    GSOPTS="\
    -q -dBATCH -dNOPAUSE -dSAFER \
    -sDEVICE=pdfwrite \
    -c .setpdfwrite"

    $GS -sOutputFile="$OUTFILE" $GSOPTS -f "$INFILE"

    open "$OUTFILE"
    #v-

    i jeszcze pomocnik (w ~/.bin/url2path):
    #v+
    #!/usr/bin/python
    import urllib
    import sys

    def convert (items):
    PREFIX='file://localhost'

    for line in items:
    if line.startswith (PREFIX):
    line = line [len (PREFIX):]
    else:
    return 1
    print urllib.unquote (line)

    return 0

    if len (sys.argv) == 1:
    sys.exit (convert (sys.stdin.readlines ()))
    else:
    sys.exit (convert (sys.argv [1:]))
    #v-

    Jak do tego dodać FastScripts Lite, to mamy ⌘E jako skrót do odbezpieczania PDFów prosto z Preview.

  7. Ja 

    i takie rozwiązanie czasem bywa przydatne :) <brawo>

  8. Eluś 

    Z tego co zauważyłem by wyżej wspomniana metoda działała zabezpieczony dokument musi mieć allow DegradedPrinting albo chociaż allow DegradedPrinting.

  9. Joanna Ludmiła 

    A jaka jest różnica między allow Degraded Printing a allow DegradedPrinting i co to w ogóle jest? :)

  10. Eluś 

    * miało być
    "[...] allow Printing albo chociaż allow DegradedPrinting."

  11. Eluś 

    To jest poziom zabezpieczeń dokumentu pdf.

    Chciałem przetestować Twoją metodę, a że nie miałem pod ręką żadnego zabezpieczonego dokumentu sam sobie "zabezpieczyłem" za pomocą pdftk. Za pomocą tego sprytnego pakietu można zakodować dokument "z siłą" 40 lub 128 bitów, określić hasło dla oglądającego i dla właściciela dokumentu a także określić zbiór "zezwoleń" zabezpieczonego dokumentu. No i okazało się że Twoja metoda działa gdy dokument jest zakodowany z hasłem właściciela, może zabraniać prawie wszystkiego (edycji, kopiowania, czytania przez screen-readery), ale musi co najmniej pozwalać na "DegradedPrinting".

    "A jaka jest różnica między allow Degraded Printing a allow DegradedPrinting?"

    Z tego co dowiedziałem się z pomocy programu:

    "The permissions section may include one or more of the following features:

    Printing - Top Quality Printing
    DegradedPrinting - Lower Quality Printing"

    Jeśli zabezpieczony nie zezwala na żadną z tych opcji to potraktowany pdfLaTeX-em wywali błąd.

    Ale znalazłem obejście tego problemu. Zabezpieczony przed drukowaniem dokument najpierw traktujemy "pdftops" a następnie "pstopdf". Sprawdzałem na przykładowym dokumencie i działa. Oczywiście znikają z pdf-a ficzery np z takiego hyperref-a, ale poza tym dokument wygląda identycznie.

  12. jarhead 

    Witam! Też miałem problem z pdfami, ale takich komplikacji jak Wy to sobie nie stwarzałem ;] Polecam program PDF Password Remover v2.5! Idealny program do złamania np. zapomnianego przez hasła z własnych pdfów! ;]

    życzę owocnego łamania !

  13. cichy04 

    Witam.

    Moglibyscie mi dokladnie wytlumaczyc na czym polega ta metoda lamania plików pdf?
    Mozecie pisac na maila: cichy04@gmail.com

  14. dejf 

    yyyy a nie prościej pdf advanced password recovery

  15. Laeila 

    takie pytanie, czy da sie odbezpieczyć robienie komentarzy - mam problem nawet z wlasnymi plikami

  16. addemoloack 

    Why Barcelona won real?
    <a href= http://cheapedpills.org/ >buy generic v i a g r a</a>

Zostaw odpowiedź