/// <summary>Open a PDF/A document in stamping mode.</summary> /// <param name="reader">PDF reader.</param> /// <param name="writer">PDF writer.</param> /// <param name="properties">properties of the stamping process</param> public PdfADocument(PdfReader reader, PdfWriter writer, StampingProperties properties) : base(reader, writer, properties) { byte[] existingXmpMetadata = GetXmpMetadata(); if (existingXmpMetadata == null) { throw new PdfAConformanceException(PdfAConformanceException.DOCUMENT_TO_READ_FROM_SHALL_BE_A_PDFA_CONFORMANT_FILE_WITH_VALID_XMP_METADATA ); } XMPMeta meta; try { meta = XMPMetaFactory.ParseFromBuffer(existingXmpMetadata); } catch (XMPException) { throw new PdfAConformanceException(PdfAConformanceException.DOCUMENT_TO_READ_FROM_SHALL_BE_A_PDFA_CONFORMANT_FILE_WITH_VALID_XMP_METADATA ); } PdfAConformanceLevel conformanceLevel = PdfAConformanceLevel.GetConformanceLevel(meta); if (conformanceLevel == null) { throw new PdfAConformanceException(PdfAConformanceException.DOCUMENT_TO_READ_FROM_SHALL_BE_A_PDFA_CONFORMANT_FILE_WITH_VALID_XMP_METADATA ); } SetChecker(conformanceLevel); }
public PdfADocument(PdfReader reader, PdfWriter writer, StampingProperties properties) : base(reader, writer, properties) { byte[] existingXmpMetadata = GetXmpMetadata(); if (existingXmpMetadata == null) { throw new PdfAConformanceException(PdfAConformanceException.DocumentToReadFromShallBeAPdfAConformantFileWithValidXmpMetadata ); } XMPMeta meta; try { meta = XMPMetaFactory.ParseFromBuffer(existingXmpMetadata); } catch (XMPException) { throw new PdfAConformanceException(PdfAConformanceException.DocumentToReadFromShallBeAPdfAConformantFileWithValidXmpMetadata ); } PdfAConformanceLevel conformanceLevel = PdfAConformanceLevel.GetConformanceLevel(meta); if (conformanceLevel == null) { throw new PdfAConformanceException(PdfAConformanceException.DocumentToReadFromShallBeAPdfAConformantFileWithValidXmpMetadata ); } SetChecker(conformanceLevel); }
public async Task ShouldConvertToPdfA2B(string level, string part, string conformance) { var path = $"/pdfa"; var fixture = $"{Program.TestProjectPath}/Fixtures/dummy.pdf"; var pdfFile = await File.ReadAllBytesAsync(fixture); var formData = new PdfFormData().WithConformanceLevel(level).Upload(pdfFile); var response = await _client.PostAsync(path, formData); var stream = await response.Content.ReadAsStreamAsync(); var pdfa = new PdfADocument(new PdfReader(stream), new PdfWriter(new MemoryStream())); var xmpMetadataBytes = pdfa.GetXmpMetadata(); var xmpMetadata = XMPMetaFactory.ParseFromBuffer(xmpMetadataBytes); var conformanceLevel = PdfAConformanceLevel.GetConformanceLevel(xmpMetadata); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(part, conformanceLevel.GetPart()); Assert.Equal(conformance, conformanceLevel.GetConformance()); }