Если защищаемся от чайников, то берём любой фронтовый просмотрщик pdf, типа PDF.js, и настраиваем его так, чтобы кнопки скачивания из интерфейса исчезли. Более сложный вариант - это на бэкенде читать pdf'ку постранично, рендерить в html и отдавать на фронт. Можно ещё добавить задержку между отображением страниц и блокировку слишком частых запросов, чтобы усложнить жизнь пытающемуся сграбить контент.