Implements the print permission

This commit is contained in:
vyv03354 2013-02-08 23:23:01 +09:00
parent 51c81a1d01
commit 729b82359a
4 changed files with 23 additions and 0 deletions

View File

@ -542,6 +542,7 @@ var PDFDocument = (function PDFDocumentClosure() {
var docInfo = {
PDFFormatVersion: this.pdfFormatVersion,
IsTextCopyDisabled: encrypt ? encrypt.disableTextCopy : false,
IsPrintDisabled: encrypt ? encrypt.disablePrint : false,
IsAcroFormPresent: !!this.acroForm
};
if (this.xref.trailer.has('Info')) {

View File

@ -562,6 +562,7 @@ var CipherTransformFactory = (function CipherTransformFactoryClosure() {
var userPassword = stringToBytes(dict.get('U'));
var flags = dict.get('P');
this.disableTextCopy = !(flags & 16);
this.disablePrint = !(flags & 4);
var revision = dict.get('R');
var encryptMetadata = algorithm == 4 && // meaningful when V is 4
dict.get('EncryptMetadata') !== false; // makes true as default value

View File

@ -1358,6 +1358,10 @@ canvas {
margin: 0;
}
#viewerContainer.print-protection {
display: none;
}
.page {
float: left;
display: none;

View File

@ -1360,6 +1360,20 @@ var PDFView = {
document.getElementById('viewerContainer').classList
.remove('copy-protection');
}
if (info.IsPrintDisabled) {
if (PDFView.supportsPrinting) {
document.getElementById('print').classList.add('hidden');
}
document.getElementById('viewerContainer').classList
.add('print-protection');
} else {
if (PDFView.supportsPrinting) {
document.getElementById('print').classList.remove('hidden');
}
document.getElementById('viewerContainer').classList
.remove('print-protection');
}
});
},
@ -1626,6 +1640,9 @@ var PDFView = {
},
beforePrint: function pdfViewSetupBeforePrint() {
if (this.documentInfo.IsPrintDisabled) {
return;
}
if (!this.supportsPrinting) {
var printMessage = mozL10n.get('printing_not_supported', null,
'Warning: Printing is not fully supported by this browser.');