Попытка использовать PdfStamper и MemoryStream для добавления данных в существующий PDF - PullRequest
0 голосов
/ 17 апреля 2019

Моя цель - использовать SetField, чтобы заменить PDF из кода, а затем использовать API для его загрузки.API работает и PDF можно скачать, но никаких изменений не было

И после рабочих дней я должен обратиться за помощью.

Я пытаюсь вернуть Файл с установленными изменениями.Я получаю заполненные значения, и с GetField я вижу, что поле установлено, но с другой стороны, когда я загружаю его, в PDF нет изменений.

Это код, который я использую.

        var pth = $"{Environment.CurrentDirectory}.Services\\Pdf\\plan2.pdf";
        PdfReader pdfReader = null;
        byte[] bytes = File.ReadAllBytes(pth);
        try
        {
            using (MemoryStream outStream = new MemoryStream())
            {
                MemoryStream inputStream = new MemoryStream(bytes);

                pdfReader = new PdfReader(inputStream);

                PdfStamper pdfStamper = new PdfStamper(pdfReader, outStream);
                pdfStamper.AcroFields.GenerateAppearances = true;

                pdfStamper.AcroFields.SetField("registersubject", "testSubject");

                pdfStamper.FormFlattening = true;
                pdfStamper.FreeTextFlattening = true;
                pdfStamper.Writer.CloseStream = false;
                pdfStamper.Close();

                return outStream.ToArray();
            }
        }
...