Как сохранить документ в формате PDF/A с разными уровнями соответствия в C# и .NET


Стандарт ISO 19005 (PDF/A) определяет требования к созданию документов, пригодных для архивации, на основе широко доступного формата PDF. В стандарте подробно указано, какое содержимое разрешено, а какое нет. Эти и другие технические характеристики предназначены для обеспечения долговременной читаемости документов независимо от того, в каком прикладном программном обеспечении и операционной системе они были первоначально созданы.

В файл должна быть встроена вся информация, необходимая для того, чтобы документ отображался каждый раз без изменений. Сюда входит все содержимое документа: текст, растровые изображения и векторная графика, шрифты, информация о цвете и т.д.

    Ограничения для PDF/A-1, PDF/A-2, PDF/A-3 включают:
  • Аудио- и видеоконтент запрещен. Также запрещено использование 3D-изображений.
  • Все шрифты должны быть встроены, а также должны быть легально доступны для неограниченного универсального рендеринга.
  • Цветовые пространства должны задаваться независимо от устройства.
  • Аудио- и видеоконтент запрещен. Также запрещено использование 3D-изображений.
  • Запуск Javascript и исполняемых файлов запрещен.
  • Шифрование запрещено.
  • Использование метаданных, основанных на стандартах, является обязательным.

Различные стандарты PDF/A.

PDF/A-1. Первый стандарт PDF/A (ISO 19005-1:2005) был основан на PDF версии 1.4 и опубликован в 2005 году. Отсутствующие функции: сжатие в формате JPEG 2000, прозрачность, слои и вложения.

PDF/A-1a: уровень А – удовлетворяет всем требованиям спецификации. Содержимое должно быть помечено древовидной структурой, что означает, что такие элементы, как порядок чтения, рисунки и таблицы, явно идентифицируются с помощью метаданных.

PDF/A-1b: уровень В – это более низкий уровень соответствия, охватывающий требования данной части стандарта ISO 19005, касающиеся внешнего вида электронных документов, но не их структурных или семантических свойств. ни требование, чтобы весь текст соответствовал кодировке в Юникоде. Это предпочтительно для отсканированных документов.

PDF/A-2. Стандарт (ISO 19005-2:2011). Основан на PDF 1.7 (ISO 32000-1:2008). Содержит несколько функции, недоступные в PDF версии 1.4. Это обеспечивает ряд полезных технических нововведений: высокоэффективное сжатие в формате JPEG 2000, поддержка эффектов прозрачности и слоев, а также встраивание шрифтов OpenType, а также возможности цифровой печати. подписи в соответствии со стандартом PAdES (PDF Advanced Electronic Signatures). Он также предлагает возможность встраивать Файлы PDF/A в формате PDF/A-2, позволяющие архивировать наборы документов как отдельные документы в одном файл.

PDF/A-2a: указывает на полное соответствие требованиям стандарта ISO 19005-2, в том числе относящимся к структурным и семантическим свойствам документов. Допустимый PDF/A уровня a будет содержать текст, который можно надежно найти и скопировать.

PDF/A-2b: уровень в – более низкий уровень соответствия, в рамках требований эта часть стандарта ISO 19005 что касается визуального оформления электронных документов, а не их структурные и семантические свойства.

PDF/A-2u:соответствие уровню U представляет собой соответствие уровню B с дополнительными требование, чтобы весь текст в документе соответствовал кодировке Unicode. Таким образом, соответствие требованиям u-уровня будет содержать текст, который может быть надежно произведен поиск и копирование, но порядок чтения не гарантируется.

PDF/A-3. Стандарт (ISO 19005-3:2012). Основан на PDF 1.7 (ISO 32000-1:2008). В PDF/A-3 добавлен единый и очень важная особенность спецификации (ISO 19005-2), которая позволяет встраивать файлы в формате PDF/A или файлы в любом другом формате, а не только в другие файлы PDF/A (как разрешено в PDF/A-2). Файлы, соответствующие этим требованиям , называются “ассоциированными” файлами; между каждым внедренным файлом и содержащим его PDF-файлом, объектом или структура (например, изображение, страница или логический раздел) в формате PDF.

Однако программа просмотра PDF/A не обязана выполнять какие-либо дополнительные действия с этими вложенными файлами помимо обеспечения их надлежащего извлечения. Таким образом, стандарт не может гарантировать, что вы будете иметь возможность читать или иным образом использовать эти файлы в будущем.

PDF/A-3a: указывает на полное соответствие требованиям стандарта ISO 19005-3, в том числе относящимся к структурным и семантическим свойствам документов. Допустимый PDF/A уровня a будет содержать текст, который можно надежно найти и скопировать.

PDF/A-3b: уровень B - это более низкий уровень соответствия, удовлетворяющий требованиям, которые должны быть минимально необходимыми для обеспечения визуального оформления соответствующего файла. может храниться в течение длительного времени. В спецификации отмечается, что файлы, соответствующие уровню B, могут иметь недостаточно богатый внутренний информация, позволяющая сохранить логическую структуру документа и содержание текста передается в естественном порядке чтения, что является обеспечивается соответствием уровню А.

PDF/A-3u:соответствие уровню U представляет собой соответствие уровню B с дополнительными требование, чтобы весь текст в документе соответствовал кодировке Unicode. Таким образом, соответствие требованиям u-уровня будет содержать текст, который может быть надежно произведен поиск и копирование, но порядок чтения не гарантируется.м

Итак, если вам нужно сохранить документ в формате PDF с уровнем соответствия PDF/A-1b, просто введите несколько строк кода.


          DocumentCore dc = DocumentCore.Load(@"d:\input.docx");
            dc.Save(@"d:\output.pdf", new PdfSaveOptions()
            {
            Compliance = PdfCompliance.PDF_A1b,
            });
                    

Приведенный ниже фрагмент кода показывает, как вы можете создать новый документ, содержащий текст, и сохранить этот документ в формате PDF/A-2a.


          DocumentCore dc = new DocumentCore();
            DocumentBuilder db = new DocumentBuilder(dc);
            db.CharacterFormat.FontName = "Times New Roman";
            db.CharacterFormat.Size = 24;
            db.Writeln("Hello World!");
            dc.Save(@"d:\output.pdf", new PdfSaveOptions()
            {
                Compliance = PdfCompliance.PDF_A2a,
            });
                    

По каждому конкретному документу, формат которого заявлен как PDF/A, заранее сказать невозможно что это действительно так. Требуется валидация для соответствия требованиям к формату каждого конкретного документа.

Если вы хотите проверить свои PDF/A файлы на достоверность, ознакомьтесь со ссылками на бесплатные онлайн-сервисы ниже.

Полные примеры кода и дополнительную информацию о работе с PDF/A смотрите в разделе:www.sautinsoft.com/products/document/examples/create-and-save-document-in-pdf-a-format-net-csharp-vb.php

Спасибо вам за то, что уделили мне время.


Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.ru или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже:



Вопросы и предложения всегда приветствуются!

Мы разрабатываем компоненты .Net с 2002 года. Мы знаем форматы PDF, DOCX, RTF, HTML, XLSX и Images. Если вам нужна помощь в создании, изменении или преобразовании документов в различных форматах, мы можем вам помочь. Мы напишем для вас любой пример кода абсолютно бесплатно.