ZugferdTests.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using QuestPDF.ConformanceTests.TestEngine;
  2. using QuestPDF.Fluent;
  3. using QuestPDF.Helpers;
  4. using QuestPDF.Infrastructure;
  5. namespace QuestPDF.ConformanceTests;
  6. internal class ZugferdTests
  7. {
  8. [Test]
  9. public void ZugferdValidation_WithMustang()
  10. {
  11. var guid = Guid.NewGuid();
  12. var invoicePath = Path.Combine(Path.GetTempPath(), $"{guid}.pdf");
  13. Document
  14. .Create(document =>
  15. {
  16. document.Page(page =>
  17. {
  18. page.Margin(60);
  19. page.Content()
  20. .Text("Conformance Test: ZUGFeRD")
  21. .FontSize(24)
  22. .FontColor(Colors.Blue.Darken2)
  23. .Bold();
  24. });
  25. })
  26. .WithMetadata(new DocumentMetadata
  27. {
  28. Title = "Conformance Test: ZUGFeRD",
  29. Author = "SampleCompany",
  30. Subject = "ZUGFeRD Test Document",
  31. Language = "en-US"
  32. })
  33. .WithSettings(new DocumentSettings
  34. {
  35. PDFA_Conformance = PDFA_Conformance.PDFA_3B
  36. })
  37. .GeneratePdf(invoicePath);
  38. VeraPdfConformanceTestRunner.TestConformance(invoicePath);
  39. var zugferdInvoicePath = Path.Combine(Path.GetTempPath(), $"zugferd-{guid}.pdf");
  40. var facturPath = Path.Combine("Resources", "zugferd-factur-x.xml");
  41. var metadataPath = Path.Combine("Resources", "zugferd-xmp-metadata.xml");
  42. DocumentOperation
  43. .LoadFile(invoicePath)
  44. .AddAttachment(new DocumentOperation.DocumentAttachment
  45. {
  46. Key = "factur-zugferd",
  47. FilePath = facturPath,
  48. AttachmentName = "factur-x.xml",
  49. MimeType = "text/xml",
  50. Description = "Factur-X Invoice",
  51. Relationship = DocumentOperation.DocumentAttachmentRelationship.Source,
  52. CreationDate = DateTime.UtcNow,
  53. ModificationDate = DateTime.UtcNow
  54. })
  55. .ExtendMetadata(File.ReadAllText(metadataPath))
  56. .Save(zugferdInvoicePath);
  57. VeraPdfConformanceTestRunner.TestConformance(zugferdInvoicePath);
  58. MustangConformanceTestRunner.TestConformance(zugferdInvoicePath);
  59. }
  60. }