вставить поток xml в дерево имен pdf / a, используя itext7 и c# - PullRequest
0 голосов
/ 11 апреля 2020

Я включил файл xml в pdf / a2, используя itext7 и c#.

Поток xml был вставлен в дерево имен pdf как XFAResource.

Кажется, все в порядке, но, сравнивая мой pdf-файл с pdf-файлом, использованным в качестве примера, я замечаю небольшую разницу в типе длины потока.

В моем pdf длина - это просто целочисленное значение, в основном pdf это объект с параметром длины, который содержит целочисленное значение.

Я понятия не имею, как это исправить.

Здесь мой код и снимок экрана дерева имен (itext-rups) из 2 pdf, которые лучше указывают на различия.

Спасибо всем, есть подсказка.

Mauro

using iText.Forms;
using iText.Kernel.Pdf;
using iText.Pdfa;
using iText.Layout.Element;
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;

namespace PdfXml
{
    class Program
    {
        static void Main(string[] args)
        {
            string pdfIn = "\\xfar\\pdfin.pdf";
            string pdfOut = "\\xfar\\pdfoutU.pdf";
            string cdaIn = "\\xfar\\cda.xml";
            StreamReader Reader = new StreamReader(cdaIn);
                var content = new StringBuilder();
                string line;
                while (Reader.EndOfStream == false)
                {
                    line = Reader.ReadLine();
                    content.AppendLine(line);
                }
                byte[] bytes = Encoding.ASCII.GetBytes(content.ToString());             
                PdfDocument pdfDoc = new PdfDocument(new PdfReader(pdfIn), new PdfWriter(pdfOut));            
                PdfStream stream = new PdfStream();;
                PdfNameTree nameTree1 = pdfDoc.GetCatalog().GetNameTree(new PdfName("XFAResource"));
                stream.SetCompressionLevel(9);
                stream.SetData(bytes, true);
                nameTree1.AddEntry("dataset", stream);
                nameTree1.BuildTree();
                nameTree1.SetModified();
                Console.WriteLine("ok");
                }                
              pdfDoc.Close();
        }
    }
}

снимок экрана дерева имен :

...