Populating PDF fields in .NET without a API, such as iTextSharp
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();
}
}
Why does the above code fail 开发者_如何学编程at producing a valid PDF?
PDF files are binary. You are reading it as text, then re-writing the text. As SLaks also points out, you're not even doing anything with the replaced text.
Use a PDF Library. Try PDFSharp.
Strings are immutable.
When you call content.Replace(...)
, the Replace
function returns a new string with the replacements, which your code ignores.
The original content
string is not modified.
You need to change it to
content = content.Replace(...);
By the way, you should call File.WriteAllText
and File.ReadAllText
.
精彩评论