mirror of
https://github.com/qpdf/qpdf.git
synced 2025-01-31 02:48:31 +00:00
add methods for getting encryption data
git-svn-id: svn+q:///qpdf/trunk@733 71b93d88-0707-0410-a8cf-f5a4172ac649
This commit is contained in:
parent
40f4b1ef52
commit
8d7bb3ff50
@ -1,5 +1,9 @@
|
||||
2009-09-27 Jay Berkenbilt <ejb@ql.org>
|
||||
|
||||
* Add several methods to query permissions controlled by the
|
||||
encryption dictionary. Note that qpdf does not enforce these
|
||||
permissions even though it allows the user to query them.
|
||||
|
||||
* The function QPDF::getUserPassword returned the user password
|
||||
with the required padding as specified by the PDF specification.
|
||||
This is seldom useful to users. This function has been replaced
|
||||
|
2
TODO
2
TODO
@ -12,8 +12,6 @@
|
||||
Stefan Heinsen <stefan.heinsen@gmx.de> in August, 2009. He seems
|
||||
to like to send encrypted mail. (key 01FCC336)
|
||||
|
||||
* Translate the encryption dictionary data to human-readable form
|
||||
|
||||
* Improve the error message generated when processing the broken
|
||||
files...ideally we should provide the object number currently being
|
||||
read
|
||||
|
@ -128,6 +128,29 @@ class QPDF
|
||||
DLL_EXPORT
|
||||
bool isEncrypted() const;
|
||||
|
||||
DLL_EXPORT
|
||||
bool isEncrypted(int& R, int& P);
|
||||
|
||||
// Encryption permissions -- not enforced by QPDF
|
||||
DLL_EXPORT
|
||||
bool allowAccessibility();
|
||||
DLL_EXPORT
|
||||
bool allowExtractAll();
|
||||
DLL_EXPORT
|
||||
bool allowPrintLowRes();
|
||||
DLL_EXPORT
|
||||
bool allowPrintHighRes();
|
||||
DLL_EXPORT
|
||||
bool allowModifyAssembly();
|
||||
DLL_EXPORT
|
||||
bool allowModifyForm();
|
||||
DLL_EXPORT
|
||||
bool allowModifyAnnotation();
|
||||
DLL_EXPORT
|
||||
bool allowModifyOther();
|
||||
DLL_EXPORT
|
||||
bool allowModifyAll();
|
||||
|
||||
// Helper function to trim padding from user password. Calling
|
||||
// trim_user_password on the result of getPaddedUserPassword gives
|
||||
// getTrimmedUserPassword's result.
|
||||
|
@ -161,6 +161,25 @@ extern "C" {
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_is_encrypted(qpdf_data qpdf);
|
||||
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_accessibility(qpdf_data qpdf);
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_extract_all(qpdf_data qpdf);
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_print_low_res(qpdf_data qpdf);
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_print_high_res(qpdf_data qpdf);
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_modify_assembly(qpdf_data qpdf);
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_modify_form(qpdf_data qpdf);
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_modify_annotation(qpdf_data qpdf);
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_modify_other(qpdf_data qpdf);
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_modify_all(qpdf_data qpdf);
|
||||
|
||||
/* WRITE FUNCTIONS */
|
||||
|
||||
/* Set up for writing. No writing is actually performed until the
|
||||
|
@ -463,3 +463,185 @@ QPDF::isEncrypted() const
|
||||
{
|
||||
return this->encrypted;
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
bool
|
||||
QPDF::isEncrypted(int& R, int& P)
|
||||
{
|
||||
if (this->encrypted)
|
||||
{
|
||||
QPDFObjectHandle trailer = getTrailer();
|
||||
QPDFObjectHandle encrypt = trailer.getKey("/Encrypt");
|
||||
QPDFObjectHandle Pkey = encrypt.getKey("/P");
|
||||
QPDFObjectHandle Rkey = encrypt.getKey("/R");
|
||||
P = Pkey.getIntValue();
|
||||
R = Rkey.getIntValue();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static bool
|
||||
is_bit_set(int P, int bit)
|
||||
{
|
||||
// Bits in P are numbered from 1 in the spec
|
||||
return (P & (1 << (bit - 1)));
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
bool
|
||||
QPDF::allowAccessibility()
|
||||
{
|
||||
int R = 0;
|
||||
int P = 0;
|
||||
bool status = true;
|
||||
if (isEncrypted(R, P))
|
||||
{
|
||||
if (R < 3)
|
||||
{
|
||||
status = is_bit_set(P, 5);
|
||||
}
|
||||
else
|
||||
{
|
||||
status = is_bit_set(P, 10);
|
||||
}
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
bool
|
||||
QPDF::allowExtractAll()
|
||||
{
|
||||
int R = 0;
|
||||
int P = 0;
|
||||
bool status = true;
|
||||
if (isEncrypted(R, P))
|
||||
{
|
||||
status = is_bit_set(P, 5);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
bool
|
||||
QPDF::allowPrintLowRes()
|
||||
{
|
||||
int R = 0;
|
||||
int P = 0;
|
||||
bool status = true;
|
||||
if (isEncrypted(R, P))
|
||||
{
|
||||
status = is_bit_set(P, 3);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
bool
|
||||
QPDF::allowPrintHighRes()
|
||||
{
|
||||
int R = 0;
|
||||
int P = 0;
|
||||
bool status = true;
|
||||
if (isEncrypted(R, P))
|
||||
{
|
||||
status = is_bit_set(P, 3);
|
||||
if ((R >= 3) && (! is_bit_set(P, 12)))
|
||||
{
|
||||
status = false;
|
||||
}
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
bool
|
||||
QPDF::allowModifyAssembly()
|
||||
{
|
||||
int R = 0;
|
||||
int P = 0;
|
||||
bool status = true;
|
||||
if (isEncrypted(R, P))
|
||||
{
|
||||
if (R < 3)
|
||||
{
|
||||
status = is_bit_set(P, 4);
|
||||
}
|
||||
else
|
||||
{
|
||||
status = is_bit_set(P, 11);
|
||||
}
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
bool
|
||||
QPDF::allowModifyForm()
|
||||
{
|
||||
int R = 0;
|
||||
int P = 0;
|
||||
bool status = true;
|
||||
if (isEncrypted(R, P))
|
||||
{
|
||||
if (R < 3)
|
||||
{
|
||||
status = is_bit_set(P, 6);
|
||||
}
|
||||
else
|
||||
{
|
||||
status = is_bit_set(P, 9);
|
||||
}
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
bool
|
||||
QPDF::allowModifyAnnotation()
|
||||
{
|
||||
int R = 0;
|
||||
int P = 0;
|
||||
bool status = true;
|
||||
if (isEncrypted(R, P))
|
||||
{
|
||||
status = is_bit_set(P, 6);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
bool
|
||||
QPDF::allowModifyOther()
|
||||
{
|
||||
int R = 0;
|
||||
int P = 0;
|
||||
bool status = true;
|
||||
if (isEncrypted(R, P))
|
||||
{
|
||||
status = is_bit_set(P, 4);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
bool
|
||||
QPDF::allowModifyAll()
|
||||
{
|
||||
int R = 0;
|
||||
int P = 0;
|
||||
bool status = true;
|
||||
if (isEncrypted(R, P))
|
||||
{
|
||||
status = (is_bit_set(P, 4) && is_bit_set(P, 6));
|
||||
if (R >= 3)
|
||||
{
|
||||
status = status && (is_bit_set(P, 9) && is_bit_set(P, 11));
|
||||
}
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
@ -185,6 +185,69 @@ QPDF_BOOL qpdf_is_encrypted(qpdf_data qpdf)
|
||||
return (qpdf->qpdf->isEncrypted() ? QPDF_TRUE : QPDF_FALSE);
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_accessibility(qpdf_data qpdf)
|
||||
{
|
||||
QTC::TC("qpdf", "qpdf-c called qpdf_allow_accessibility");
|
||||
return qpdf->qpdf->allowAccessibility();
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_extract_all(qpdf_data qpdf)
|
||||
{
|
||||
QTC::TC("qpdf", "qpdf-c called qpdf_allow_extract_all");
|
||||
return qpdf->qpdf->allowExtractAll();
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_print_low_res(qpdf_data qpdf)
|
||||
{
|
||||
QTC::TC("qpdf", "qpdf-c called qpdf_allow_print_low_res");
|
||||
return qpdf->qpdf->allowPrintLowRes();
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_print_high_res(qpdf_data qpdf)
|
||||
{
|
||||
QTC::TC("qpdf", "qpdf-c called qpdf_allow_print_high_res");
|
||||
return qpdf->qpdf->allowPrintHighRes();
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_modify_assembly(qpdf_data qpdf)
|
||||
{
|
||||
QTC::TC("qpdf", "qpdf-c called qpdf_allow_modify_assembly");
|
||||
return qpdf->qpdf->allowModifyAssembly();
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_modify_form(qpdf_data qpdf)
|
||||
{
|
||||
QTC::TC("qpdf", "qpdf-c called qpdf_allow_modify_form");
|
||||
return qpdf->qpdf->allowModifyForm();
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_modify_annotation(qpdf_data qpdf)
|
||||
{
|
||||
QTC::TC("qpdf", "qpdf-c called qpdf_allow_modify_annotation");
|
||||
return qpdf->qpdf->allowModifyAnnotation();
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_modify_other(qpdf_data qpdf)
|
||||
{
|
||||
QTC::TC("qpdf", "qpdf-c called qpdf_allow_modify_other");
|
||||
return qpdf->qpdf->allowModifyOther();
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
QPDF_BOOL qpdf_allow_modify_all(qpdf_data qpdf)
|
||||
{
|
||||
QTC::TC("qpdf", "qpdf-c called qpdf_allow_modify_all");
|
||||
return qpdf->qpdf->allowModifyAll();
|
||||
}
|
||||
|
||||
DLL_EXPORT
|
||||
QPDF_ERROR_CODE qpdf_init_write(qpdf_data qpdf, char const* filename)
|
||||
{
|
||||
|
@ -29,6 +29,24 @@ static void test01(char const* infile,
|
||||
if (qpdf_is_encrypted(qpdf))
|
||||
{
|
||||
printf("user password: %s\n", qpdf_get_user_password(qpdf));
|
||||
printf("extract for accessibility: %d\n",
|
||||
qpdf_allow_accessibility(qpdf));
|
||||
printf("extract for any purpose: %d\n",
|
||||
qpdf_allow_extract_all(qpdf));
|
||||
printf("print low resolution: %d\n",
|
||||
qpdf_allow_print_low_res(qpdf));
|
||||
printf("print high resolution: %d\n",
|
||||
qpdf_allow_print_high_res(qpdf));
|
||||
printf("modify document assembly: %d\n",
|
||||
qpdf_allow_modify_assembly(qpdf));
|
||||
printf("modify forms: %d\n",
|
||||
qpdf_allow_modify_form(qpdf));
|
||||
printf("modify annotations: %d\n",
|
||||
qpdf_allow_modify_annotation(qpdf));
|
||||
printf("modify other: %d\n",
|
||||
qpdf_allow_modify_other(qpdf));
|
||||
printf("modify anything: %d\n",
|
||||
qpdf_allow_modify_all(qpdf));
|
||||
}
|
||||
report_errors();
|
||||
}
|
||||
|
33
qpdf/qpdf.cc
33
qpdf/qpdf.cc
@ -165,21 +165,44 @@ void usage(std::string const& msg)
|
||||
exit(EXIT_ERROR);
|
||||
}
|
||||
|
||||
static std::string show_bool(bool v)
|
||||
{
|
||||
return v ? "allowed" : "not allowed";
|
||||
}
|
||||
|
||||
static void show_encryption(QPDF& pdf)
|
||||
{
|
||||
// Extract /P from /Encrypt
|
||||
if (! pdf.isEncrypted())
|
||||
int R = 0;
|
||||
int P = 0;
|
||||
if (! pdf.isEncrypted(R, P))
|
||||
{
|
||||
std::cout << "File is not encrypted" << std::endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
QPDFObjectHandle trailer = pdf.getTrailer();
|
||||
QPDFObjectHandle encrypt = trailer.getKey("/Encrypt");
|
||||
QPDFObjectHandle P = encrypt.getKey("/P");
|
||||
std::cout << "P = " << P.getIntValue() << std::endl;
|
||||
std::cout << "R = " << R << std::endl;
|
||||
std::cout << "P = " << P << std::endl;
|
||||
std::string user_password = pdf.getTrimmedUserPassword();
|
||||
std::cout << "User password = " << user_password << std::endl;
|
||||
std::cout << "extract for accessibility: "
|
||||
<< show_bool(pdf.allowAccessibility()) << std::endl;
|
||||
std::cout << "extract for any purpose: "
|
||||
<< show_bool(pdf.allowExtractAll()) << std::endl;
|
||||
std::cout << "print low resolution: "
|
||||
<< show_bool(pdf.allowPrintLowRes()) << std::endl;
|
||||
std::cout << "print high resolution: "
|
||||
<< show_bool(pdf.allowPrintHighRes()) << std::endl;
|
||||
std::cout << "modify document assembly: "
|
||||
<< show_bool(pdf.allowModifyAssembly()) << std::endl;
|
||||
std::cout << "modify forms: "
|
||||
<< show_bool(pdf.allowModifyForm()) << std::endl;
|
||||
std::cout << "modify annotations: "
|
||||
<< show_bool(pdf.allowModifyAnnotation()) << std::endl;
|
||||
std::cout << "modify other: "
|
||||
<< show_bool(pdf.allowModifyOther()) << std::endl;
|
||||
std::cout << "modify anything: "
|
||||
<< show_bool(pdf.allowModifyAll()) << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -144,3 +144,12 @@ qpdf-c called qpdf_set_r2_encryption_parameters 0
|
||||
qpdf-c called qpdf_set_r3_encryption_parameters 0
|
||||
qpdf-c called qpdf_set_linearization 0
|
||||
qpdf-c called qpdf_write 3
|
||||
qpdf-c called qpdf_allow_accessibility 0
|
||||
qpdf-c called qpdf_allow_extract_all 0
|
||||
qpdf-c called qpdf_allow_print_low_res 0
|
||||
qpdf-c called qpdf_allow_print_high_res 0
|
||||
qpdf-c called qpdf_allow_modify_assembly 0
|
||||
qpdf-c called qpdf_allow_modify_form 0
|
||||
qpdf-c called qpdf_allow_modify_annotation 0
|
||||
qpdf-c called qpdf_allow_modify_other 0
|
||||
qpdf-c called qpdf_allow_modify_all 0
|
||||
|
@ -683,33 +683,48 @@ $td->notify("--- Encryption Tests ---");
|
||||
# resulting files were saved and manually checked with Acrobat 5.0 to
|
||||
# ensure that the security settings were as intended.
|
||||
|
||||
# Values: basename, password, encryption flags, /P Encrypt key.
|
||||
# Values: basename, password, encryption flags, /P Encrypt key,
|
||||
# extract-for-accessibility, extract-for-any-purpose,
|
||||
# print-low-res, print-high-res, modify-assembly, modify-forms,
|
||||
# modify-annotate, modify-other, modify-all
|
||||
my @encrypted_files =
|
||||
(['base', ''],
|
||||
['R3,V2', '',
|
||||
'-accessibility=n -extract=n -print=full -modify=all', -532],
|
||||
'-accessibility=n -extract=n -print=full -modify=all', -532,
|
||||
0, 0, 1, 1, 1, 1, 1, 1, 1],
|
||||
['R3,V2,U=view', 'view',
|
||||
'-accessibility=y -extract=n -print=none -modify=none', -3392],
|
||||
'-accessibility=y -extract=n -print=none -modify=none', -3392,
|
||||
1, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
['R3,V2,O=master', 'master',
|
||||
'-accessibility=n -extract=y -print=none -modify=annotate', -2576],
|
||||
'-accessibility=n -extract=y -print=none -modify=annotate', -2576,
|
||||
0, 1, 0, 0, 1, 1, 1, 0, 0],
|
||||
['R3,V2,O=master', '',
|
||||
'-accessibility=n -extract=n -print=none -modify=form', -2624],
|
||||
'-accessibility=n -extract=n -print=none -modify=form', -2624,
|
||||
0, 0, 0, 0, 1, 1, 0, 0, 0],
|
||||
['R3,V2,U=view,O=master', 'view',
|
||||
'-accessibility=n -extract=n -print=none -modify=assembly', -2880],
|
||||
'-accessibility=n -extract=n -print=none -modify=assembly', -2880,
|
||||
0, 0, 0, 0, 1, 0, 0, 0, 0],
|
||||
['R3,V2,U=view,O=master', 'master',
|
||||
'-accessibility=n -print=low', -2564],
|
||||
'-accessibility=n -print=low', -2564,
|
||||
0, 1, 1, 0, 1, 1, 1, 1, 1],
|
||||
['R2,V1', '',
|
||||
'-print=n -modify=n -extract=n -annotate=n', -64],
|
||||
'-print=n -modify=n -extract=n -annotate=n', -64,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||
['R2,V1,U=view', 'view',
|
||||
'-print=y -modify=n -extract=n -annotate=n', -60],
|
||||
'-print=y -modify=n -extract=n -annotate=n', -60,
|
||||
0, 0, 1, 1, 0, 0, 0, 0, 0],
|
||||
['R2,V1,O=master', 'master',
|
||||
'-print=n -modify=y -extract=n -annotate=n', -56],
|
||||
'-print=n -modify=y -extract=n -annotate=n', -56,
|
||||
0, 0, 0, 0, 1, 0, 0, 1, 0],
|
||||
['R2,V1,O=master', '',
|
||||
'-print=n -modify=n -extract=y -annotate=n', -48],
|
||||
'-print=n -modify=n -extract=y -annotate=n', -48,
|
||||
1, 1, 0, 0, 0, 0, 0, 0, 0],
|
||||
['R2,V1,U=view,O=master', 'view',
|
||||
'-print=n -modify=n -extract=n -annotate=y', -32],
|
||||
'-print=n -modify=n -extract=n -annotate=y', -32,
|
||||
0, 0, 0, 0, 0, 1, 1, 0, 0],
|
||||
['R2,V1,U=view,O=master', 'master',
|
||||
'', -4],
|
||||
'', -4,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
['long-password', 'asdf asdf asdf asdf asdf asdf qwer'],
|
||||
['long-password', 'asdf asdf asdf asdf asdf asdf qw']);
|
||||
|
||||
@ -732,7 +747,23 @@ $td->runtest("recheck encrypted file",
|
||||
|
||||
foreach my $d (@encrypted_files)
|
||||
{
|
||||
my ($file, $pass, $xeflags, $P) = @$d;
|
||||
my ($file, $pass, $xeflags, $P,
|
||||
$accessible, $extract, $printlow, $printhigh,
|
||||
$modifyassembly, $modifyform, $modifyannot,
|
||||
$modifyother, $modifyall) = @$d;
|
||||
|
||||
my $f = sub { $_[0] ? "allowed" : "not allowed" };
|
||||
my $enc_details =
|
||||
"extract for accessibility: " . &$f($accessible) . "\n" .
|
||||
"extract for any purpose: " . &$f($extract) . "\n" .
|
||||
"print low resolution: " . &$f($printlow) . "\n" .
|
||||
"print high resolution: " . &$f($printhigh) . "\n" .
|
||||
"modify document assembly: " . &$f($modifyassembly) . "\n" .
|
||||
"modify forms: " . &$f($modifyform) . "\n" .
|
||||
"modify annotations: " . &$f($modifyannot) . "\n" .
|
||||
"modify other: " . &$f($modifyother) . "\n" .
|
||||
"modify anything: " . &$f($modifyall) . "\n";
|
||||
|
||||
# Test writing to stdout
|
||||
$td->runtest("decrypt $file",
|
||||
{$td->COMMAND =>
|
||||
@ -776,8 +807,9 @@ foreach my $d (@encrypted_files)
|
||||
{$td->COMMAND =>
|
||||
"qpdf --show-encryption --password=\"$pass\"" .
|
||||
" $file.enc2"},
|
||||
{$td->STRING => "P = $P\nUser password = $upass\n",
|
||||
$td->EXIT_STATUS => 0},
|
||||
{$td->STRING => "R = $R\nP = $P\n" .
|
||||
"User password = $upass\n$enc_details",
|
||||
$td->EXIT_STATUS => 0},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
$td->runtest("decrypt again",
|
||||
{$td->COMMAND =>
|
||||
@ -799,8 +831,9 @@ foreach my $d (@encrypted_files)
|
||||
{$td->COMMAND =>
|
||||
"qpdf --show-encryption --password=\"$pass\"" .
|
||||
" $file.enc4"},
|
||||
{$td->STRING => "P = $P\nUser password = $upass\n",
|
||||
$td->EXIT_STATUS => 0},
|
||||
{$td->STRING => "R = $R\nP = $P\n" .
|
||||
"User password = $upass\n$enc_details",
|
||||
$td->EXIT_STATUS => 0},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
}
|
||||
}
|
||||
@ -828,8 +861,9 @@ $td->runtest("linearize encrypted file",
|
||||
{$td->STRING => "",
|
||||
$td->EXIT_STATUS => 0});
|
||||
$td->runtest("check encryption",
|
||||
{$td->COMMAND => "qpdf --show-encryption a.pdf"},
|
||||
{$td->STRING => "P = -60\nUser password = \n",
|
||||
{$td->COMMAND => "qpdf --show-encryption a.pdf",
|
||||
$td->FILTER => "grep -v allowed"},
|
||||
{$td->STRING => "R = 2\nP = -60\nUser password = \n",
|
||||
$td->EXIT_STATUS => 0},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
$td->runtest("check linearization",
|
||||
@ -844,8 +878,9 @@ $td->runtest("linearize and encrypt file",
|
||||
{$td->STRING => "",
|
||||
$td->EXIT_STATUS => 0});
|
||||
$td->runtest("check encryption",
|
||||
{$td->COMMAND => "qpdf --show-encryption --password=owner a.pdf"},
|
||||
{$td->STRING => "P = -4\nUser password = user\n",
|
||||
{$td->COMMAND => "qpdf --show-encryption --password=owner a.pdf",
|
||||
$td->FILTER => "grep -v allowed"},
|
||||
{$td->STRING => "R = 3\nP = -4\nUser password = user\n",
|
||||
$td->EXIT_STATUS => 0},
|
||||
$td->NORMALIZE_NEWLINES);
|
||||
$td->runtest("check linearization",
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.4
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.4
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.4
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.4
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 0
|
||||
extract for any purpose: 0
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 0
|
||||
modify forms: 0
|
||||
modify annotations: 0
|
||||
modify other: 0
|
||||
modify anything: 0
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 2
|
||||
P = -60
|
||||
User password =
|
||||
extract for accessibility: not allowed
|
||||
extract for any purpose: not allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: not allowed
|
||||
modify forms: not allowed
|
||||
modify annotations: not allowed
|
||||
modify other: not allowed
|
||||
modify anything: not allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.3
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 0
|
||||
extract for any purpose: 0
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 0
|
||||
modify forms: 0
|
||||
modify annotations: 0
|
||||
modify other: 0
|
||||
modify anything: 0
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.3
|
||||
R = 2
|
||||
P = -60
|
||||
User password =
|
||||
extract for accessibility: not allowed
|
||||
extract for any purpose: not allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: not allowed
|
||||
modify forms: not allowed
|
||||
modify annotations: not allowed
|
||||
modify other: not allowed
|
||||
modify anything: not allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 0
|
||||
extract for any purpose: 0
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 0
|
||||
modify forms: 0
|
||||
modify annotations: 0
|
||||
modify other: 0
|
||||
modify anything: 0
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 2
|
||||
P = -60
|
||||
User password =
|
||||
extract for accessibility: not allowed
|
||||
extract for any purpose: not allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: not allowed
|
||||
modify forms: not allowed
|
||||
modify annotations: not allowed
|
||||
modify other: not allowed
|
||||
modify anything: not allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.3
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 0
|
||||
extract for any purpose: 0
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 0
|
||||
modify forms: 0
|
||||
modify annotations: 0
|
||||
modify other: 0
|
||||
modify anything: 0
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.3
|
||||
R = 2
|
||||
P = -60
|
||||
User password =
|
||||
extract for accessibility: not allowed
|
||||
extract for any purpose: not allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: not allowed
|
||||
modify forms: not allowed
|
||||
modify annotations: not allowed
|
||||
modify other: not allowed
|
||||
modify anything: not allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.4
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.4
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.4
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.4
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.4
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.4
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.4
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.4
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 0
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is not linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
@ -2,3 +2,12 @@ version: 1.5
|
||||
linearized: 1
|
||||
encrypted: 1
|
||||
user password:
|
||||
extract for accessibility: 1
|
||||
extract for any purpose: 1
|
||||
print low resolution: 1
|
||||
print high resolution: 1
|
||||
modify document assembly: 1
|
||||
modify forms: 1
|
||||
modify annotations: 1
|
||||
modify other: 1
|
||||
modify anything: 1
|
||||
|
@ -1,6 +1,16 @@
|
||||
checking a.pdf
|
||||
PDF Version: 1.5
|
||||
R = 3
|
||||
P = -4
|
||||
User password =
|
||||
extract for accessibility: allowed
|
||||
extract for any purpose: allowed
|
||||
print low resolution: allowed
|
||||
print high resolution: allowed
|
||||
modify document assembly: allowed
|
||||
modify forms: allowed
|
||||
modify annotations: allowed
|
||||
modify other: allowed
|
||||
modify anything: allowed
|
||||
File is linearized
|
||||
No errors found
|
||||
|
Loading…
x
Reference in New Issue
Block a user