Библиотека 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#