Browse Source

Implements the print permission

vyv03354 12 years ago
parent
commit
729b82359a
  1. 1
      src/core.js
  2. 1
      src/crypto.js
  3. 4
      web/viewer.css
  4. 17
      web/viewer.js

1
src/core.js

@ -542,6 +542,7 @@ var PDFDocument = (function PDFDocumentClosure() { @@ -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')) {

1
src/crypto.js

@ -562,6 +562,7 @@ var CipherTransformFactory = (function CipherTransformFactoryClosure() { @@ -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

4
web/viewer.css

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

17
web/viewer.js

@ -1360,6 +1360,20 @@ var PDFView = { @@ -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 = { @@ -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.');

Loading…
Cancel
Save