2010-06-14 5 views
1
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를 생성 할 때 위의 코드가 실패하는 이유는 무엇입니까?iTextSharp와 같은 API없이 .NET에서 PDF 필드 채우기

답변

2

PDF 파일은 이진 파일입니다. 당신은 텍스트로 읽은 다음 텍스트를 다시 쓰고 있습니다. SLaks도 지적했듯이 대체 된 텍스트로는 아무 것도하지 않습니다.

PDF 라이브러리를 사용하십시오. 시도하십시오 PDFSharp.

+0

비록 PDFSharp에 대한 상용 라이센스 비용을 지불해야 하겠지만. 감사! 그러나 호기심을 위해서 라이브러리가없는 PDF를 편집하는 것이 실제 문제입니까? –

+0

무료 및 오픈 소스 PDF 라이브러리가 많이 있습니다. iText.NET은 또 다른 것입니다. 필자는 그것들을 사용하지 않아도되고 몇 년 전에 상용 제품 (Dynamic PDF)을 사용했습니다. –

+0

PDF 라이브러리가없는 PDF 문서를 편집하려면 PDF 파일 형식을 이해해야합니다. 그런 다음 자신 만의 라이브러리를 작성할 수 있습니다. :) 미안하지만, 나는 그것에 대해 거의 안다. –

2

문자열을 변경할 수 없습니다.

content.Replace(...)을 호출하면 Replace 함수가 코드에서 무시하는 대체 문자열을 반환합니다.
원래 content 문자열이 수정되지 않았습니다.

당신은 그런데

content = content.Replace(...); 

로 변경해야합니다, 당신은 File.WriteAllTextFile.ReadAllText를 호출해야합니다.

관련 문제