2015-04-22 1 views
1

Я использую следующий код для создания водяных знаков моего PDFОшибка на коде itextSharp

using System; 
using System.Collections.Generic; 
using System.Text; 
using iTextSharp.text; 
using iTextSharp.text.pdf; 
using System.IO; 

namespace WatermarkDemo 
{ 
    public class Class1 
    { 
     string watermarkedFile = "Watermarked.pdf"; 
     // Creating watermark on a separate layer 
     // Creating iTextSharp.text.pdf.PdfReader object to read the Existing PDF Document 
     PdfReader reader1 = new PdfReader(originalFile); 
     using (FileStream fs = new FileStream(watermarkedFile, FileMode.Create, FileAccess.Write, FileShare.None)) 
     // Creating iTextSharp.text.pdf.PdfStamper object to write Data from iTextSharp.text.pdf.PdfReader object to FileStream object 

     using (PdfStamper stamper = new PdfStamper(reader1, fs)) 
     { 
      // Getting total number of pages of the Existing Document 
      int pageCount = reader1.NumberOfPages; 

      // Create New Layer for Watermark 
      PdfLayer layer = new PdfLayer("WatermarkLayer", stamper.Writer); 
      // Loop through each Page 
      for (int i = 1; i <= pageCount; i++) 
      { 
       // Getting the Page Size 
       Rectangle rect = reader1.GetPageSize(i); 

       // Get the ContentByte object 
       PdfContentByte cb = stamper.GetUnderContent(i); 

       // Tell the cb that the next commands should be "bound" to this new layer 
       cb.BeginLayer(layer); 
       cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 50); 

       PdfGState gState = new PdfGState(); 
       gState.FillOpacity = 0.25f; 
       cb.SetGState(gState); 

       cb.SetColorFill(BaseColor.BLACK); 
       cb.BeginText(); 
       cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, watermarkText, rect.Width/2, rect.Height/2, 45f); 
       cb.EndText(); 

       // Close the layer 
       cb.EndLayer(); 
      } 
     } 
    } 
} 

Я не знаю, почему я получаю красный волнистую линию под большинством моего переменные. Большинство из них говорит

Инициализатор поля не может ссылаться на нестационарное поле.

Пожалуйста, помогите, поскольку я застрял в этом коде.

+0

На какой линии точно? И найдите сообщение об ошибке в Google, вы найдете много информации об этом. –

+0

Я не вижу, где начинается ваша функция – sq33G

ответ

2

Вы поставили свой код сразу в тело класса:

namespace WatermarkDemo 
{ 
    public class Class1 
    { 
     string watermarkedFile = "Watermarked.pdf"; 
     // Creating watermark on a separate layer 
     // Creating iTextSharp.text.pdf.PdfReader object to read the Existing PDF Document 
     PdfReader reader1 = new PdfReader(originalFile); 
     using (FileStream fs = new FileStream(watermarkedFile, FileMode.Create, FileAccess.Write, FileShare.None)) 
    ... 

Вы должны положить его в метод

namespace WatermarkDemo 
{ 
    public class Class1 
    { 
     void myMethod() 
     { 
      string watermarkedFile = "Watermarked.pdf"; 
      // Creating watermark on a separate layer 
      // Creating iTextSharp.text.pdf.PdfReader object to read the Existing PDF Document 
      PdfReader reader1 = new PdfReader(originalFile); 
      using (FileStream fs = new FileStream(watermarkedFile, FileMode.Create, FileAccess.Write, FileShare.None)) 

    ... 
+0

Я этого раньше не заметил. большое спасибо –