Создание документов PDF/A-4 для долгосрочного архивирования на C#

Библиотека Syncfusion .NET PDF Library позволяет создавать, редактировать и изменять документы PDF в приложениях .NET. Мы обеспечили поддержку уровня соответствия PDF/A-4 в выпуске 2022 Volume 2 (20.2.0.36).

В этой статье мы рассмотрим, как создавать документы PDF/A-4 с нуля и конвертировать существующие обычные документы PDF в формат PDF/A-4 с помощью библиотеки Syncfusion .NET PDF Library.

Соответствие PDF/A-4

PDF/A-4 (ISO 19005-4: 2020) основан на последнем стандарте PDF версии 2.0 (ISO 32000-2). Он является развитием PDF/A-3, который основан на ISO 32000-2 (PDF 1.7).

Основное отличие PDF/A-4 от предыдущего уровня соответствия заключается в том, что он упрощает стандарт PDF, удаляя такие уровни соответствия, как -a (доступность), -u (юникод) и -b (базовый). Таким образом, документы, соответствующие стандарту PDF/A-4, могут содержать или не содержать теги PDF.

PDF/A-4 поддерживает следующие два уровня соответствия:

  • PDF/A-4e : PDF/A-4e (engineering) предназначен для технических документов и заменяет формат PDF/E. Он поддерживает 3D-модели, мультимедиа, 3D-аннотации и встроенные файлы.
  • PDF/A-4f : PDF/A-4f позволяет встраивать любые файлы в PDF-документы в качестве вложений, аналогично уровню соответствия PDF/A-3.

Создание документа PDF/A-4

С помощью Syncfusion .NET PDF Library вы можете легко создавать PDF-документы с поддержкой соответствия PDF/A-4.

Для этого сначала установите пакет Syncfusion.Pdf.Net.Core NuGet в качестве ссылки на ваше приложение .NET из галереи NuGet.

Обратитесь к следующему изображению.

Для создания документа PDF/A-4 с помощью библиотеки Syncfusion .NET PDF Library обратитесь к следующему примеру кода.

using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;

//Create a new document with the PDF/A-4 standard.
PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4);

//Add a page to the document.
PdfPage page = document.Pages.Add();

//Create the PDF graphics for the page.
PdfGraphics graphics = page.Graphics;

//Load the TrueType font from the local file.
FileStream fontStream = new FileStream("../../../arial.ttf", FileMode.Open, FileAccess.Read);
PdfFont font = new PdfTrueTypeFont(fontStream, 14);

//Draw the text.
graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new Syncfusion.Drawing.PointF(0, 0));

//Create the stream object.
FileStream stream = new FileStream("output.pdf",FileMode.Create);

//Save the document into the memory stream.
document.Save(stream);

//Close the document.
document.Close(true);
Вход в полноэкранный режим Выход из полноэкранного режима

Выполнив предыдущий пример кода, мы получим PDF-документ, похожий на следующий снимок экрана.


Мы узнали, как создать документ, соответствующий стандарту PDF/A- 4. Давайте посмотрим, как создавать документы PDF/A-4e и 4f.

Создание PDF-документа PDF/A-4e

PDF/A-4e позволяет создавать PDF-документы с технической информацией, такой как планы строительства, технические 3D-чертежи и современные геопространственные данные. Вы также можете встраивать эти PDF-документы.

Он поддерживает аннотацию RichMedia, которая позволяет вставлять видео, аудио и 3D-модели в содержимое страницы.

Для создания документа PDF/A-4e с 3D-аннотацией см. следующий пример кода.

using Syncfusion.Pdf;
using Syncfusion.Pdf.Interactive;
using Syncfusion.Drawing;
using Syncfusion.Pdf.Graphics;

//Create a new PDF document. 
PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4E);

//Create a new page. 
PdfPage page = document.Pages.Add(); 
FileStream inputStream = new FileStream("../../../box.u3d", FileMode.Open, FileAccess.Read);

//Create a new PDF 3D annotation. 
Pdf3DAnnotation pdf3dAnnotation = new Pdf3DAnnotation(new RectangleF(10, 50, 300, 150), inputStream);

//Handle the activation of the 3D annotation. 
Pdf3DActivation activation = new Pdf3DActivation(); 
activation.ActivationMode = Pdf3DActivationMode.PageOpen; 
activation.ShowToolbar = true; 
pdf3dAnnotation.Activation = activation; 
pdf3dAnnotation.Appearance.Normal.Graphics.DrawRectangle(PdfBrushes.Red, new RectangleF(10, 50, 300, 150));

//Add annotation to page. 
page.Annotations.Add(pdf3dAnnotation);

//Save the document into the stream. 
FileStream stream = new FileStream("sample.pdf",FileMode.Create); 
document.Save(stream);

//Close the document. 
document.Close(true);
Вход в полноэкранный режим Выход из полноэкранного режима

Выполнив предыдущий пример кода, мы получим PDF-документ, похожий на следующий снимок экрана.

Создание PDF-документа PDF/A-4f

Благодаря соответствию стандарту PDF/A-4f вы можете даже вставлять в PDF-документ файлы, не относящиеся к PDF, в качестве вложений.

Для создания документа PDF/A-4f с вложением обратитесь к следующему примеру кода.

using Syncfusion.Pdf;
using Syncfusion.Pdf.Interactive;
using Syncfusion.Drawing;
using Syncfusion.Pdf.Graphics;

//Create a new PDF document. 
PdfDocument document = new PdfDocument(PdfConformanceLevel.Pdf_A4F);

//Create a new page. 
PdfPage page = document.Pages.Add(); 
page.Graphics.DrawRectangle(PdfBrushes.Red, new RectangleF(10, 50, 300, 150)); 
FileStream data = new FileStream("../../../input.txt", FileMode.Open);

//Create an attachment.
PdfAttachment attachment = new PdfAttachment(@"Input.txt", data); 
attachment.Relationship = PdfAttachmentRelationship.Alternative; 
attachment.ModificationDate = DateTime.Now; 
attachment.Description = "Input.txt"; 
attachment.MimeType = "application/txt";

//Add the attachment to the document. 
document.Attachments.Add(attachment);

//Save the document into the stream. 
FileStream stream = new FileStream("sample.pdf",FileMode.Create); 
document.Save(stream);

//Close the document. 
document.Close(true);
Вход в полноэкранный режим Выход из полноэкранного режима

Выполнив предыдущий пример кода, мы получим PDF-документ, похожий на следующий снимок экрана.

Преобразование PDF в документ PDF/A-4

С помощью .NET PDF Library от Syncfusion вы можете легко преобразовать существующий PDF в документ PDF/A-4 для архивирования и длительного хранения.

Согласно правилам соответствия PDF/A-4, все шрифты должны быть встроены в PDF-документ. Поэтому мы используем событие SubstituteFont, чтобы получить данные о шрифте из системы и внедрить их в PDF-документ. В следующем примере мы используем NuGet-пакет Skiasharp для получения данных о шрифтах.

Примечание: Чтобы преобразовать существующий PDF в документ, соответствующий стандарту PDF/A, необходимо добавить пакет Syncfusion.Pdf.Imaging.Net.Core NuGet в проект .NET Core.

Обратитесь к следующему примеру кода для преобразования существующего PDF в документ PDF/A-4.

using SkiaSharp;
using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Pdf.Parsing;

FileStream docStream = new FileStream(@"../../../invoice.pdf", FileMode.Open, FileAccess.Read);

PdfLoadedDocument loadedDocument = new PdfLoadedDocument(docStream);

//Sample level font event handling. 
loadedDocument.SubstituteFont += LoadedDocument_SubstituteFont;

//Convert the loaded document to PDF/A document. 
loadedDocument.ConvertToPDFA(PdfConformanceLevel.Pdf_A4E); 
FileStream stream = new FileStream("output.pdf",FileMode.Create);

//Save the document. 
loadedDocument.Save(stream);


//Close the document. 
loadedDocument.Close(true);


static void LoadedDocument_SubstituteFont(object sender, PdfFontEventArgs args)
{
  //Get the font name. 
  string fontName = args.FontName.Split(',')[0];

  //Get the font style. 
  PdfFontStyle fontStyle = args.FontStyle; 
  SKFontStyle sKFontStyle = SKFontStyle.Normal;

  if (fontStyle != PdfFontStyle.Regular)
  {
    if (fontStyle == PdfFontStyle.Bold)
    {
       sKFontStyle = SKFontStyle.Bold;
    }
    else if (fontStyle == PdfFontStyle.Italic)
    {
        sKFontStyle = SKFontStyle.Italic;
    }
    else if (fontStyle == (PdfFontStyle.Italic | PdfFontStyle.Bold))
    {
        sKFontStyle = SKFontStyle.BoldItalic;
    }
  }

  SKTypeface typeface = SKTypeface.FromFamilyName(fontName, sKFontStyle); 
  SKStreamAsset typeFaceStream = typeface.OpenStream(); 
  MemoryStream memoryStream = null;

  if (typeFaceStream != null && typeFaceStream.Length > 0)
  {
    //Create the fontData from the type face stream. 
    byte[] fontData = new byte[typeFaceStream.Length - 1]; 
    typeFaceStream.Read(fontData, typeFaceStream.Length); 
    typeFaceStream.Dispose();

    //Create the new memory stream from the font data. 
    memoryStream = new MemoryStream(fontData);
  }

  //Set the font stream to the event args. 
  args.FontStream = memoryStream;
}
Вход в полноэкранный режим Выход из полноэкранного режима

Выполнив предыдущий пример кода, мы получим PDF-документ, похожий на следующий снимок экрана.

Ссылка на GitHub

Для получения более подробной информации обратитесь к демонстрации создания документа, соответствующего стандарту PDF/4-A, с помощью Syncfusion .NET PDF Library на GitHub.

Заключение

Спасибо за чтение! В этой статье мы рассмотрели, как создавать документы PDF/A-4 и конвертировать существующие PDF-файлы в документы, соответствующие стандарту PDF/4-A, с помощью библиотеки Syncfusion .NET PDF Library. Попробуйте выполнить шаги, описанные в этой статье, и оставьте свой отзыв.

Уделите время изучению нашей документации по соответствию стандарту PDF/A- 4, где вы найдете другие опции и возможности, все с примерами кода.

Если у вас возникли вопросы, вы можете связаться с нами через форум поддержки, портал поддержки или портал отзывов. Мы всегда рады помочь вам!

Похожие блоги

  • Создание PDF упрощается с помощью библиотек обработки документов Syncfusion
  • Создание доступных PDF-документов с помощью C#
  • Добавление, удаление, извлечение и замена изображений в PDF с помощью C#
  • 6 простых способов разделить PDF-документ с помощью C#

Оцените статью
devanswers.ru
Добавить комментарий