%% %% This is file `pdfcrypt.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% pdfcrypt.dtx (with options: `package') %% %% This is a generated file. %% %% Project: pdfcrypt %% Version: 2007/04/26 v1.0 %% %% Copyright (C) 2001, 2006, 2007 by %% Heiko Oberdiek %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either %% version 1.3c of this license or (at your option) any later %% version. This version of this license is in %% http://www.latex-project.org/lppl/lppl-1-3c.txt %% and the latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of %% LaTeX version 2005/12/01 or later. %% %% This work has the LPPL maintenance status "maintained". %% %% This Current Maintainer of this work is Heiko Oberdiek. %% %% The Base Interpreter refers to any `TeX-Format', %% because some files are installed in TDS:tex/generic//. %% %% This work consists of the main source file pdfcrypt.dtx %% and the derived files %% pdfcrypt.sty, pdfcrypt.pdf, pdfcrypt.ins, pdfcrypt.drv. %% \expandafter\edef\csname pc@endinput\endcsname{% \catcode`\noexpand\@=\the\catcode`\@\relax \noexpand\endinput } \catcode`\@=11 % \expandafter\ifx\csname @firstoftwo\endcsname\relax \long\def\@firstoftwo#1#2{#1}% \fi \expandafter\ifx\csname @secondoftwo\endcsname\relax \long\def\@secondoftwo#1#2{#2}% \fi \expandafter\ifx\csname @ifundefined\endcsname\relax \def\@ifundefined#1{% \expandafter\ifx\csname #1\endcsname\relax \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi }% \fi \@ifundefined{@ifnextchar}{% \long\def\@ifnextchar#1#2#3{% \let\reserved@d=#1% \def\reserved@a{#2}% \def\reserved@b{#3}% \futurelet\@let@token\@ifnch }% \def\@ifnch{% \ifx\@let@token\@sptoken \let\reserved@c\@xifnch \else \ifx\@let@token\reserved@d \let\reserved@c\reserved@a \else \let\reserved@c\reserved@b \fi \fi \reserved@c }% \begingroup \def\:{\global\let\@sptoken= }% \: % \def\:{\@xifnch}% \expandafter\gdef\: {\futurelet\@let@token\@ifnch}% \endgroup }{} \@ifundefined{ProvidesPackage}{% \def\ProvidesPackage#1{% \@ifnextchar[{\pc@ProvidesPackage{#1}}% {\pc@ProvidesPackage{#1}[]}% }% \def\pc@ProvidesPackage#1[#2]{% \immediate\write-1{Package: #1 #2}% }% }{} \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname RequirePackage\endcsname\relax \input infwarerr.sty\relax \else \RequirePackage{infwarerr}% \fi \@ifundefined{@gobble}{% \long\def\@gobble#1{}% }{} \@ifundefined{@empty}{% \def\@empty{}% }{} \ProvidesPackage{pdfcrypt}% [2007/04/26 v1.0 Allows the setting of PDF encryption (HO)]% \@ifundefined{pdfcryptsetup}{% \let\pdfcryptsetup\@gobble }{% \@PackageWarningNoLine{pdfcrypt}{Package pdfcrypt is already loaded}% \pc@endinput } \newif\ifpc@nopdfcrypt \ifx Y\nopdfcrypt \@PackageWarningNoLine{pdfcrypt}{% Encryption disabled by \string \nopdfcrypt\space request% }% \global\pc@nopdfcrypttrue \fi \let\pc@driver\@empty \begingroup % pdfTeX detection \@ifundefined{pdfoutput}{% }{% \ifcase\pdfoutput \else \@ifundefined{pdfcrypt}{% \@PackageError{pdfcrypt}{% PDF encryption is not supported with this pdfTeX% }{% Encryption support was added in 0.14h (2001/03/10)\MessageBreak and removed in 1.10a (2003/01/16).% }% \endgroup \pc@endinput }{% \gdef\pc@driver{pdftex}% }% \fi }% % VTeX detection \@ifundefined{OpMode}{% }{% \ifnum\OpMode=1 % \ifnum\@ifundefined{VTeXversion}0\VTeXversion<735 % \@PackageError{pdfcrypt}{% PDF encryption is not supported with this VTeX% }{% You need VTeX 7.35 or higher.% }% \endgroup \pc@endinput \else \gdef\pc@driver{vtex}% \fi \fi }% \endgroup \@ifundefined{@makeother}{% \def\@makeother#1{\catcode`#1=12\relax}% }{} \@ifundefined{g@addto@macro}{% \long\def\g@addto@macro#1#2{% \begingroup \toks@\expandafter{#1#2}% \xdef#1{\the\toks@}% \endgroup }% }{} \@ifundefined{@namedef}{% \def\@namedef#1{\expandafter\def\csname#1\endcsname}% }{} \@ifundefined{@nameuse}{% \def\@nameuse#1{\csname #1\endcsname}% }{} \def\pc@KeyvalRestore{% \let\pc@KeyvalRestore\@undefined } \let\pcOrg@NeedsTeXFormat\NeedsTeXFormat \@ifundefined{NeedsTeXFormat}{% \def\NeedsTeXFormat#1{}% \g@addto@macro\pc@KeyvalRestore{% \let\NeedsTeXFormat\pcOrg@NeedsTeXFormat }% }{} \let\pcOrg@DeclareOption\DeclareOption \@ifundefined{DeclareOption}{% \def\DeclareOption#1#2{#2}% \g@addto@macro\pc@KeyvalRestore{% \let\DeclareOption\pcOrg@DeclareOption }% }{} \let\pcOrg@ExecuteOptions\ExecuteOptions \@ifundefined{ExecuteOptions}{% \def\ExecuteOptions#1{}% \g@addto@macro\pc@KeyvalRestore{% \let\ExecuteOptions\pcOrg@ExecuteOptions }% }{} \let\pcOrg@ProcessOptions\ProcessOptions \@ifundefined{ProcessOptions}{% \def\ProcessOptions{}% \g@addto@macro\pc@KeyvalRestore{% \let\ProcessOptions\pcOrg@ProcessOptions }% }{}% \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname RequirePackage\endcsname\relax \input keyval.sty\relax \else \RequirePackage{keyval}% \fi \pc@KeyvalRestore \@ifundefined{@dblarg}{% \long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}}% \long\def\@xdblarg#1#2{#1[{#2}]{#2}}% }{} \newif\ifpc@set \newif\ifpc@print \newif\ifpc@copy \newif\ifpc@edit \newif\ifpc@annotate \newif\ifpc@debug \let\pc@owner\@empty \let\pc@user\@empty \pc@printtrue \pc@copytrue \pc@edittrue \pc@annotatetrue \edef\pc@temp{\catcode`\noexpand\"=\the\catcode`\"\relax} \@makeother\" \def\pc@set{% \@PackageInfo{pdfcrypt}{% \ifpc@debug \ifx\pc@owner\@empty No owner password% \else Owner password: `\pc@owner'% \fi \MessageBreak \ifx\pc@user\@empty No user password% \else User password: `\pc@user'% \fi \MessageBreak Flags: % \ifpc@print \else no\fi print, % \ifpc@copy \else no\fi copy, % \ifpc@edit \else no\fi edit, % \ifpc@annotate\else no\fi annotate% \MessageBreak \fi \ifpc@nopdfcrypt Encryption is disabled by `\string\nopdfcrypt'% \else Encryption is set for `\pc@driver'% \fi }% \ifpc@nopdfcrypt \else \@ifundefined{pc@set@\pc@driver}{% \ifx\pc@driver\@empty \@PackageError{pdfcrypt}{No driver for encryption % support found}\@ehc \else \@PackageError{pdfcrypt}{Cannot set encryption for % unknown driver `\pc@driver'}\@ehc \fi }{% \@nameuse{pc@set@\pc@driver}% }% \fi } \def\pc@set@pdftex{% \ifnum\pdftexversion<100 % \pc@set@pdftexold \else \pc@set@pdftexnew \fi } \def\pc@set@pdftexold{% \pdfcrypt{% owner "\pc@owner" % user "\pc@user" % \ifpc@print \else no\fi print % \ifpc@copy \else no\fi copy % \ifpc@edit \else no\fi edit % \ifpc@annotate\else no\fi annotate% }% } \def\pc@set@pdftexnew{% \pdfcrypt owner{\pc@owner}% user{\pc@user}% \ifpc@print \else no\fi print % \ifpc@copy \else no\fi copy % \ifpc@edit \else no\fi edit % \ifpc@annotate\else no\fi annotate% \relax } \def\pc@set@vtex{% \immediate\special{!security % O=\pc@MakeVTeXString\pc@owner,% U=\pc@MakeVTeXString\pc@user,% P\ifpc@print +\else -\fi,% C\ifpc@copy +\else -\fi,% M\ifpc@edit +\else -\fi,% A\ifpc@annotate +\else -\fi }% } \def\pc@MakeVTeXString#1{% "\expandafter\pc@@MakeVTeXString#1"\@nil"% } \def\pc@@MakeVTeXString#1"#2\@nil{% #1% \ifx\\#2\\% \else ""% \@ReturnAfterFi{% \pc@@MakeVTeXString#2\@nil }% \fi } \long\def\@ReturnAfterFi#1\fi{\fi#1} \pc@temp \begingroup \catcode`\ =12 \gdef\pc@spaceother{ }\catcode`\ =10\relax \catcode`\|=0 % \catcode`\\=12 % |gdef|pc@DefString#1#2{% |def#1{#2}% |edef#1{|expandafter|strip@prefix|meaning#1}% |edef#1{|expandafter|pc@SpaceToOther#1 |@nil}% |edef#1{|expandafter|pc@EscapeRemove#1|@empty\|@empty|@nil}% }% |gdef|pc@EscapeRemove#1\#2#3|@nil{% #1#2% |ifx|\#3|\%% |else |@ReturnAfterFi{% |pc@EscapeRemove#3|@nil }% |fi }% |endgroup \def\pc@SpaceToOther#1 #2\@nil{% #1% \ifx\\#2\\% \else \pc@spaceother \@ReturnAfterFi{% \pc@SpaceToOther#2\@nil }% \fi } \def\pc@boolkey{\@dblarg\pc@@boolkey} \def\pc@@boolkey[#1]#2#3{% \lowercase{\def\pc@temp{#3}}% \ifx\pc@temp\@empty \let\pc@temp\pc@true \fi \ifx\pc@temp\pc@true \else \ifx\pc@temp\pc@false \else \let\pc@temp\relax \fi \fi \ifx\pc@temp\relax \@PackageWarning{pdfcrypt}{% Unexpected value \string`#3\string' of % option \string`#2\string'\MessageBreak instead of % \string`true\string' or \string`false\string'% }% \else \csname pc@#2\pc@temp\endcsname \fi } \def\pc@true{true} \def\pc@false{false} \define@key{pc}{set}[true]{% \pc@boolkey{set}{#1}% } \define@key{pc}{pdftex}[]{% \def\pc@driver{pdftex}% } \define@key{pc}{vtex}[]{% \def\pc@driver{vtex}% } \define@key{pc}{print}[true]{% \pc@boolkey{print}{#1}% } \define@key{pc}{copy}[true]{% \pc@boolkey{copy}{#1}% } \define@key{pc}{edit}[true]{% \pc@boolkey{edit}{#1}% } \define@key{pc}{annotate}[true]{% \pc@boolkey{annotate}{#1}% } \define@key{pc}{all}[]{% \pc@boolkey{print}{true}% \pc@boolkey{copy}{true}% \pc@boolkey{edit}{true}% \pc@boolkey{annotate}{true}% } \define@key{pc}{none}[]{% \pc@boolkey{print}{false}% \pc@boolkey{copy}{false}% \pc@boolkey{edit}{false}% \pc@boolkey{annotate}{false}% } \define@key{pc}{owner}{% \pc@DefString\pc@owner{#1}% } \define@key{pc}{user}{% \pc@DefString\pc@user{#1}% } \define@key{pc}{debug}[true]{% \pc@boolkey{debug}{#1}% } \def\pdfcryptsetup#1{% \setkeys{pc}{#1}% \ifpc@set \pc@set \global\let\pc@set\relax \gdef\pdfcryptsetup##1{% \@PackageWarning{pdfcrypt}{% Encryption options are already set\MessageBreak new values are ignored% }% }% \fi } \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname @onlypreamble\endcsname\relax \else \@onlypreamble\pdfcryptsetup \fi \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname InputIfFileExists\endcsname\relax \@PackageInfo{pdfcrypt}{% Configuration file pdfcrypt.cfg not supported.% }% \else \let\pc@ExecuteOptions\ExecuteOptions \InputIfFileExists{pdfcrypt.cfg}{}{}% \let\ExecuteOptions\pc@ExecuteOptions \fi \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname @classoptionslist\endcsname\relax \expandafter\pc@endinput \fi \def\pc@ProcessOptionsWithKV{% \let\pc@temp\@empty \@for\CurrentOption:=\@classoptionslist\do{% \@ifundefined{KV@pc@\CurrentOption}{}{% \edef\pc@temp{\pc@temp,\CurrentOption,}% \@expandtwoargs\@removeelement\CurrentOption \@unusedoptionlist\@unusedoptionlist }% }% \edef\pc@temp{% \noexpand\pdfcryptsetup{% \pc@temp\@ptionlist{\@currname.\@currext}% }% }% \pc@temp } \pc@ProcessOptionsWithKV \AtEndOfPackage{\let\@unprocessedoptions\relax} \AtBeginDocument{\pc@set} \pc@endinput \endinput %% %% End of file `pdfcrypt.sty'.