Заполнение полей PDF в .NET без API, такого как iTextSharp - PullRequest
1 голос
/ 14 июня 2010
class mineTest
    {
        string pdfTemplate = @"c:\us.pdf";
        public mineTest(Customer c, string output)
        {
            StreamReader sr = new StreamReader(pdfTemplate);
            StreamWriter sw = new StreamWriter(output);
            string content = sr.ReadToEnd();

            content.Replace("(Customer name)/DA(/Verdana 10 Tf 0 g)/FT/Tx/Type/Annot/MK<<>>/V()/AP<</N 13 0 R>>>>", "(Customer name)/DA(/Verdana 10 Tf 0 g)/FT/Tx/Type/Annot/MK<<>>/V(John Johnson)/AP<</N 13 0 R>>>>");
            sw.Write(content);
            sw.Close();
            sr.Close();
        }
    }

Почему приведенный выше код не дает правильного PDF?

Ответы [ 2 ]

2 голосов
/ 14 июня 2010

PDF-файлы являются двоичными. Вы читаете это как текст, затем переписываете текст. Как указывает SLaks, вы даже ничего не делаете с замененным текстом.

Используйте библиотеку PDF. Попробуйте PDFSharp .

2 голосов
/ 14 июня 2010

Строки неизменны.

Когда вы вызываете content.Replace(...), функция Replace возвращает новую строку с заменами, которую ваш код игнорирует.
Исходная строка content не изменяется.

Вам нужно изменить его на

content = content.Replace(...);

Кстати, вы должны позвонить File.WriteAllText и File.ReadAllText.

...