mirror of
				https://github.com/Frooodle/Stirling-PDF.git
				synced 2025-11-01 01:21:18 +01:00 
			
		
		
		
	Feature: Show permissions as a separate tab (#2396)
Show permissions as a separate tab - Move permissions code into a separate for better readability and maintainability. - Separate `Permissions` node from `Encryption` so that it would be displayed in the frontend as a separate tab. - Use more user friendly permission labels such as replacing `canModify` with `Modifying` and values such as `Allowed` and `Not Allowed` instead of `true`, `false`. - Show permissions regardless of the encryption state.
This commit is contained in:
		
							parent
							
								
									f6a2d4784b
								
							
						
					
					
						commit
						f8f137a30a
					
				@ -322,27 +322,14 @@ public class GetInfoOnPDF {
 | 
			
		||||
                PDEncryption pdfEncryption = pdfBoxDoc.getEncryption();
 | 
			
		||||
                encryption.put("EncryptionAlgorithm", pdfEncryption.getFilter());
 | 
			
		||||
                encryption.put("KeyLength", pdfEncryption.getLength());
 | 
			
		||||
                AccessPermission ap = pdfBoxDoc.getCurrentAccessPermission();
 | 
			
		||||
                if (ap != null) {
 | 
			
		||||
                    ObjectNode permissionsNode = objectMapper.createObjectNode();
 | 
			
		||||
 | 
			
		||||
                    permissionsNode.put("CanAssembleDocument", ap.canAssembleDocument());
 | 
			
		||||
                    permissionsNode.put("CanExtractContent", ap.canExtractContent());
 | 
			
		||||
                    permissionsNode.put(
 | 
			
		||||
                            "CanExtractForAccessibility", ap.canExtractForAccessibility());
 | 
			
		||||
                    permissionsNode.put("CanFillInForm", ap.canFillInForm());
 | 
			
		||||
                    permissionsNode.put("CanModify", ap.canModify());
 | 
			
		||||
                    permissionsNode.put("CanModifyAnnotations", ap.canModifyAnnotations());
 | 
			
		||||
                    permissionsNode.put("CanPrint", ap.canPrint());
 | 
			
		||||
 | 
			
		||||
                    encryption.set(
 | 
			
		||||
                            "Permissions", permissionsNode); // set the node under "Permissions"
 | 
			
		||||
                }
 | 
			
		||||
                // Add other encryption-related properties as needed
 | 
			
		||||
            } else {
 | 
			
		||||
                encryption.put("IsEncrypted", false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            ObjectNode permissionsNode = objectMapper.createObjectNode();
 | 
			
		||||
            setNodePermissions(pdfBoxDoc, permissionsNode);
 | 
			
		||||
 | 
			
		||||
            ObjectNode pageInfoParent = objectMapper.createObjectNode();
 | 
			
		||||
            for (int pageNum = 0; pageNum < pdfBoxDoc.getNumberOfPages(); pageNum++) {
 | 
			
		||||
                ObjectNode pageInfo = objectMapper.createObjectNode();
 | 
			
		||||
@ -584,6 +571,7 @@ public class GetInfoOnPDF {
 | 
			
		||||
            jsonOutput.set("DocumentInfo", docInfoNode);
 | 
			
		||||
            jsonOutput.set("Compliancy", compliancy);
 | 
			
		||||
            jsonOutput.set("Encryption", encryption);
 | 
			
		||||
            jsonOutput.set("Permissions", permissionsNode); // set the node under "Permissions"
 | 
			
		||||
            jsonOutput.set("Other", other);
 | 
			
		||||
            jsonOutput.set("PerPageInfo", pageInfoParent);
 | 
			
		||||
 | 
			
		||||
@ -602,6 +590,22 @@ public class GetInfoOnPDF {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void setNodePermissions(PDDocument pdfBoxDoc, ObjectNode permissionsNode) {
 | 
			
		||||
        AccessPermission ap = pdfBoxDoc.getCurrentAccessPermission();
 | 
			
		||||
 | 
			
		||||
        permissionsNode.put("Document Assembly", getPermissionState(ap.canAssembleDocument()));
 | 
			
		||||
        permissionsNode.put("Extracting Content", getPermissionState(ap.canExtractContent()));
 | 
			
		||||
        permissionsNode.put("Extracting for accessibility", getPermissionState(ap.canExtractForAccessibility()));
 | 
			
		||||
        permissionsNode.put("Form Filling", getPermissionState(ap.canFillInForm()));
 | 
			
		||||
        permissionsNode.put("Modifying", getPermissionState(ap.canModify()));
 | 
			
		||||
        permissionsNode.put("Modifying annotations", getPermissionState(ap.canModifyAnnotations()));
 | 
			
		||||
        permissionsNode.put("Printing", getPermissionState(ap.canPrint()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private String getPermissionState(boolean state) {
 | 
			
		||||
        return state ? "Allowed" : "Not Allowed";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static void addOutlinesToArray(PDOutlineItem outline, ArrayNode arrayNode) {
 | 
			
		||||
        if (outline == null) return;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user