blob: a1925b0f49e254a24d92bec98cba053a697cc830 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* $Id$ */
package org.apache.fop.pdf;
/**
* This class holds the parameters for PDF encryption.
*/
public class PDFEncryptionParams {
private String userPassword = ""; //May not be null
private String ownerPassword = ""; //May not be null
private boolean allowPrint = true;
private boolean allowCopyContent = true;
private boolean allowEditContent = true;
private boolean allowEditAnnotations = true;
private boolean allowFillInForms = true;
private boolean allowAccessContent = true;
private boolean allowAssembleDocument = true;
private boolean allowPrintHq = true;
private boolean encryptMetadata = true;
private int encryptionLengthInBits = 128;
/**
* Creates a new instance.
* @param userPassword the user password
* @param ownerPassword the owner password
* @param allowPrint true if printing is allowed
* @param allowCopyContent true if copying content is allowed
* @param allowEditContent true if editing content is allowed
* @param allowEditAnnotations true if editing annotations is allowed
*/
public PDFEncryptionParams(String userPassword, String ownerPassword,
boolean allowPrint,
boolean allowCopyContent,
boolean allowEditContent,
boolean allowEditAnnotations,
boolean encryptMetadata) {
setUserPassword(userPassword);
setOwnerPassword(ownerPassword);
setAllowPrint(allowPrint);
setAllowCopyContent(allowCopyContent);
setAllowEditContent(allowEditContent);
setAllowEditAnnotations(allowEditAnnotations);
this.encryptMetadata = encryptMetadata;
}
/**
* Default constructor initializing to default values.
*/
public PDFEncryptionParams() {
//nop
}
/**
* Creates a copy of the given encryption parameters.
*
* @param source source encryption parameters
*/
public PDFEncryptionParams(PDFEncryptionParams source) {
setUserPassword(source.getUserPassword());
setOwnerPassword(source.getOwnerPassword());
setAllowPrint(source.isAllowPrint());
setAllowCopyContent(source.isAllowCopyContent());
setAllowEditContent(source.isAllowEditContent());
setAllowEditAnnotations(source.isAllowEditAnnotations());
setAllowAssembleDocument(source.isAllowAssembleDocument());
setAllowAccessContent(source.isAllowAccessContent());
setAllowFillInForms(source.isAllowFillInForms());
setAllowPrintHq(source.isAllowPrintHq());
setEncryptionLengthInBits(source.getEncryptionLengthInBits());
encryptMetadata = source.encryptMetadata();
}
/**
* Indicates whether copying content is allowed.
* @return true if copying is allowed
*/
public boolean isAllowCopyContent() {
return allowCopyContent;
}
/**
* Indicates whether editing annotations is allowed.
* @return true is editing annotations is allowed
*/
public boolean isAllowEditAnnotations() {
return allowEditAnnotations;
}
/**
* Indicates whether editing content is allowed.
* @return true if editing content is allowed
*/
public boolean isAllowEditContent() {
return allowEditContent;
}
/**
* Indicates whether printing is allowed.
* @return true if printing is allowed
*/
public boolean isAllowPrint() {
return allowPrint;
}
/**
* Indicates whether revision 3 filling in forms is allowed.
* @return true if revision 3 filling in forms is allowed
*/
public boolean isAllowFillInForms() {
return allowFillInForms;
}
/**
* Indicates whether revision 3 extracting text and graphics is allowed.
* @return true if revision 3 extracting text and graphics is allowed
*/
public boolean isAllowAccessContent() {
return allowAccessContent;
}
/**
* Indicates whether revision 3 assembling document is allowed.
* @return true if revision 3 assembling document is allowed
*/
public boolean isAllowAssembleDocument() {
return allowAssembleDocument;
}
/**
* Indicates whether revision 3 printing to high quality is allowed.
* @return true if revision 3 printing to high quality is allowed
*/
public boolean isAllowPrintHq() {
return allowPrintHq;
}
/**
* Indicates whether Metadata should be encrypted.
* @return true or false
*/
public boolean encryptMetadata() {
return encryptMetadata;
}
/**
* Returns the owner password.
* @return the owner password, an empty string if no password applies
*/
public String getOwnerPassword() {
return ownerPassword;
}
/**
* Returns the user password.
* @return the user password, an empty string if no password applies
*/
public String getUserPassword() {
return userPassword;
}
/**
* Sets the permission for copying content.
* @param allowCopyContent true if copying content is allowed
*/
public void setAllowCopyContent(boolean allowCopyContent) {
this.allowCopyContent = allowCopyContent;
}
/**
* Sets the permission for editing annotations.
* @param allowEditAnnotations true if editing annotations is allowed
*/
public void setAllowEditAnnotations(boolean allowEditAnnotations) {
this.allowEditAnnotations = allowEditAnnotations;
}
/**
* Sets the permission for editing content.
* @param allowEditContent true if editing annotations is allowed
*/
public void setAllowEditContent(boolean allowEditContent) {
this.allowEditContent = allowEditContent;
}
/**
* Sets the permission for printing.
* @param allowPrint true if printing is allowed
*/
public void setAllowPrint(boolean allowPrint) {
this.allowPrint = allowPrint;
}
/**
* Sets whether revision 3 filling in forms is allowed.
* @param allowFillInForms true if revision 3 filling in forms is allowed.
*/
public void setAllowFillInForms(boolean allowFillInForms) {
this.allowFillInForms = allowFillInForms;
}
/**
* Sets whether revision 3 extracting text and graphics is allowed.
* @param allowAccessContent true if revision 3 extracting text and graphics is allowed
*/
public void setAllowAccessContent(boolean allowAccessContent) {
this.allowAccessContent = allowAccessContent;
}
/**
* Sets whether revision 3 assembling document is allowed.
* @param allowAssembleDocument true if revision 3 assembling document is allowed
*/
public void setAllowAssembleDocument(boolean allowAssembleDocument) {
this.allowAssembleDocument = allowAssembleDocument;
}
/**
* Sets whether revision 3 printing to high quality is allowed.
* @param allowPrintHq true if revision 3 printing to high quality is allowed
*/
public void setAllowPrintHq(boolean allowPrintHq) {
this.allowPrintHq = allowPrintHq;
}
/**
* Whether the Metadata should be encrypted or not; default is true;
* @param encryptMetadata true or false
*/
public void setEncryptMetadata(boolean encryptMetadata) {
this.encryptMetadata = encryptMetadata;
}
/**
* Sets the owner password.
* @param ownerPassword The owner password to set, null or an empty String
* if no password is applicable
*/
public void setOwnerPassword(String ownerPassword) {
if (ownerPassword == null) {
this.ownerPassword = "";
} else {
this.ownerPassword = ownerPassword;
}
}
/**
* Sets the user password.
* @param userPassword The user password to set, null or an empty String
* if no password is applicable
*/
public void setUserPassword(String userPassword) {
if (userPassword == null) {
this.userPassword = "";
} else {
this.userPassword = userPassword;
}
}
/**
* Returns the encryption length.
* @return the encryption length
*/
public int getEncryptionLengthInBits() {
return encryptionLengthInBits;
}
/**
* Sets the encryption length.
*
* @param encryptionLength the encryption length
*/
public void setEncryptionLengthInBits(int encryptionLength) {
this.encryptionLengthInBits = encryptionLength;
}
public String toString() {
return "userPassword = " + userPassword + "\n"
+ "ownerPassword = " + ownerPassword + "\n"
+ "allowPrint = " + allowPrint + "\n"
+ "allowCopyContent = " + allowCopyContent + "\n"
+ "allowEditContent = " + allowEditContent + "\n"
+ "allowEditAnnotations = " + allowEditAnnotations + "\n"
+ "allowFillInForms = " + allowFillInForms + "\n"
+ "allowAccessContent = " + allowAccessContent + "\n"
+ "allowAssembleDocument = " + allowAssembleDocument + "\n"
+ "allowPrintHq = " + allowPrintHq + "\n"
+ "encryptMetadata = " + encryptMetadata;
}
}