PDFBoxを使って制限を設定する

AccessPermissionでいろいろと設定した後にStandardProtectionPolicyでOwnerパスワードを設定して、PDDocumentに渡せば良い。

        try (PDDocument document = PDDocument.load(new File("input.pdf"))) {
            AccessPermission ap = new AccessPermission();
            ap.setCanAssembleDocument(false);
            ap.setCanExtractContent(false);
            ap.setCanExtractForAccessibility(false);
            ap.setCanFillInForm(false);
            ap.setCanModify(false);
            ap.setCanModifyAnnotations(false);
            ap.setCanPrint(false);
            ap.setCanPrintDegraded(false);
            // ap.setReadOnly();
            StandardProtectionPolicy spp = new StandardProtectionPolicy("12345", "", ap);
            spp.setEncryptionKeyLength(128);
            document.protect(spp);
            document.save(new File("output.pdf"));
        } catch (IOException e) {
            logger.error("Failed to write info.", e);
        }