Я пытаюсь включить файл xml в pdf / a2, используя itext7 и c#.
xml необходимо включить в дерево имен pdf.
Я наконец смог это сделать, поток xml, кажется, находится в правильном положении дерева имен.
Есть еще проблема, поток должен быть сжат, но нет, просматривая вывод pdf в блокноте вы видите простой текст.
Похоже, что itext7 PdfStream не в состоянии это сделать, или, по крайней мере, я не могу сжимать его, даже установив сжатие = 9 - stream.SetCompressionLevel (9 ) в моем коде.
Кто-нибудь знает, как это сделать.
Большое спасибо.
Мауро
Вот мой код:
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);
stream.Put(PdfName.Filter, PdfName.FlateDecode);
nameTree1.AddEntry("dataset", stream);
nameTree1.BuildTree();
nameTree1.SetModified();
Console.WriteLine("ok");
}
pdfDoc.Close();
}
}
}