Q1: Normally you would use "feature flags". This can be a boolean that is true or false per tenant. You have two options for this. Either storing this in the database or in some config file. With feature flags, you can develop features that are not public right away. So you can easily test for one client or a few clients.
You can also solve this on authorization level, but if a feature if complex because different roles are involved, you need to do a lot more checks to get this working. With the feature flag, you just test against one thing.
Also, you can cache the result of the feature flag until the next deployment. This way it's really fast in calculation this :)
Q2: You can do this in a few ways. Either have this logic in your controller and based on a config or feature flag return the pdf or send the email. The other solution is using something like a decision tree of an adapter. You basically will have service class that should decide based on the customer which other action to trigger to make this work. Your controller should not be responsible for this, but a different class.