itext7 pdfstream не сжат - PullRequest
       53

itext7 pdfstream не сжат

0 голосов
/ 10 апреля 2020

Я пытаюсь включить файл 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();
        }
    }
}
...