Большинство других ответов, кажется, упустили из виду, что в вашем вопросе отсутствует одна важная часть информации - вы не сказали нам, связаны ли и каким образом документы, которые вы собираетесь читать и писать!
Ваше приложение имеет что-то вроде «объекта документа» и сначала записывает это в файл PDF, а затем снова считывает тот же файл в похожий объект документа? Или наоборот, он считывает PDF-документы в документ, вносит в него некоторые изменения и снова сохраняет этот же документ в новый PDF-файл? Тогда чтение и письмо должны рассматриваться как одна обязанность. Это может быть в том случае, если ваше приложение содержит или содержит что-то вроде компонента «Редактор PDF» или «Инструментарий для манипулирования PDF».
Однако, если одна часть вашего приложения создает некоторые файлы PDF, например, в компоненте отчетов, а другая не связанная с этим часть вашего приложения считывает разные PDF-файлы (например, оценщик вложений в почту для поисковой системы) и внутреннее представление эти последние PDF-файлы не имеют ничего общего с первым вариантом использования, тогда эти задачи - это разные обязанности.
Специально для PDF этот второй вариант использования является случаем, который я видел гораздо чаще в различных приложениях. Существует намного больше библиотек / компонентов, которые просто поддерживают создание PDF, и только гораздо меньшее количество, которые поддерживают также чтение PDF. Если вы собираетесь использовать одну библиотеку для создания PDF-файлов и совершенно другую для чтения PDF-файлов, то должно быть очевидно, что чтение и запись PDF-файлов будут отдельными обязанностями.