Создание PDF-документа, соответствующего стандарту PDF/3-A, и прикрепление счёта ZUGFeRD на C#

Прикрепление ZUGFeRD к PDF

Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.

Мы рекомендуем выполнить следующие шаги для прикрепления ZUGFeRD к PDF:

  • Определите переменную пути, указывающую на папку, в которой находятся входной и выходной PDF-файлы.
  • Создайте объект документа, загрузив существующий PDF-файл (например, «ZUGFeRD-test.pdf») из пути.
  • Создайте объект FileSpecification указав путь и описание другого файла с именем «factur-x.xml», который содержит метаданные счёта, соответствующие стандарту ZUGFeRD.
  • Добавьте свойства к объекту спецификации файла, такие как описание, тип MIME и отношение AF. Отношение AF указывает, как встроенный файл связан с PDF-документом. В этом случае оно установлено на «Альтернативный», что означает, что встроенный файл является альтернативным представлением содержимого PDF.
  • Добавьте объект спецификации файла в коллекцию встроенных файлов документа. Имя файла должно соответствовать стандарту ZUGFeRD, например, «factur-x.xml».
  • Преобразуйте документ в формат PDF/A-3B, подмножество PDF, обеспечивающее долгосрочное сохранение электронных документов. PDF/A-3B позволяет встраивать файлы любого формата в PDF-документы.
  • Сохраните преобразованный документ как новый PDF-файл (например, «ZUGFeRD-res.pdf»).
// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void AttachZUGFeRD()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
    
    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "ZUGFeRD-testInput.pdf"))
    {
        // Setup new file to be added as attachment
        var description = "Invoice metadata conforming to ZUGFeRD standard";
        var fileSpecification = new Aspose.Pdf.FileSpecification(dataDir + "ZUGFeRD-testXmlInput.xml", description)
        {
            Description = "Zugferd",
            MIMEType = "text/xml",
            Name = "factur-x.xml"
        };
        // Add attachment to document's attachment collection
        document.EmbeddedFiles.Add(fileSpecification);
        document.Convert(new MemoryStream(), Aspose.Pdf.PdfFormat.ZUGFeRD, Aspose.Pdf.ConvertErrorAction.Delete);
        // Save PDF document
        document.Save(dataDir + "AttachZUGFeRD_out.pdf");
    }
}

Метод convert принимает поток, формат PDF и действие при ошибке преобразования в качестве параметров. Параметр потока можно использовать для сохранения журнала преобразования. Параметр действия при ошибке преобразования определяет, что делать, если во время преобразования возникают какие-либо ошибки. В этом случае для него установлено значение «Удалить», что означает удаление из документа любых элементов, не соответствующих формату PDF/A-3B.