You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
509 lines
12 KiB
509 lines
12 KiB
%%
|
|
%% 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: 2016/05/16 v1.1
|
|
%%
|
|
%% Copyright (C)
|
|
%% 2001, 2006, 2007 Heiko Oberdiek
|
|
%% 2016-2019 Oberdiek Package Support Group
|
|
%%
|
|
%% 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
|
|
%% https://www.latex-project.org/lppl/lppl-1-3c.txt
|
|
%% and the latest version of this license is in
|
|
%% https://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".
|
|
%%
|
|
%% The Current Maintainers of this work are
|
|
%% Heiko Oberdiek and the Oberdiek Package Support Group
|
|
%% https://github.com/ho-tex/oberdiek/issues
|
|
%%
|
|
%%
|
|
%% 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}%
|
|
[2016/05/16 v1.1 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'.
|
|
|