PDFNet试图添加文本不工作

问题描述:

我基本上正在尝试PDFNet并调整PDFNet的一个示例。下面是代码:PDFNet试图添加文本不工作

PDFNet.Initialize(); 

      // Relative path to the folder containing test files. 
      string input_path = "../../../../TestFiles/"; 
      string output_path = "../../../../TestFiles/Output/"; 

      PDFDoc doc = new PDFDoc(input_path + "form1.pdf"); 
      for (int index = 1; index <= doc.GetPageCount(); index++) 
      { 
       Page page = doc.GetPage(index); 
       ElementBuilder eb = new ElementBuilder();  // ElementBuilder is used to build new Element objects 
       eb.Reset();   // Reset GState to default 
       ElementWriter writer = new ElementWriter(); // ElementWriter is used to write Elements to the page 
       writer.Begin(page); 

       // Begin writing a block of text 
       string data = "Page " + index; 
       Element element = eb.CreateTextRun(data, Font.Create(doc, Font.StandardType1Font.e_times_roman, true), 100.0); 
       element.SetTextMatrix(10, 0, 0, 10, 100, 100); 
       GState gstate = element.GetGState(); 
       gstate.SetTextRenderMode(GState.TextRenderingMode.e_stroke_text); 
       gstate.SetStrokeColorSpace(pdftron.PDF.ColorSpace.CreateDeviceRGB()); 
       gstate.SetStrokeColor(new pdftron.PDF.ColorPt(1, 0, 0)); 

       writer.WriteElement(element); 
       writer.End(); 
       writer.Dispose(); // save changes to the current page 
      } 

      doc.Save(output_path + "element_builder.pdf", SDFDoc.SaveOptions.e_linearized); 
      doc.Close(); 

但问题是,没有文本会被添加到element_builder.pdf。它只是照原样复制,看起来与form1.pdf相同。有人可以帮我吗?

这是链接到PDFNet http://www.pdftron.com/pdfnet/downloads.html

我使用64位版本的.NET 4.0

看来你缺少电话eb.CreateTextBegin()和eb.CreateTextEnd()。你应该尝试这样的:

 PDFNet.Initialize(); 

     // Relative path to the folder containing test files. 
     string input_path = "../../../../TestFiles/"; 
     string output_path = "../../../../TestFiles/Output/"; 

     PDFDoc doc = new PDFDoc(input_path + "form1.pdf"); 
     ElementWriter writer = new ElementWriter(); 
     ElementBuilder eb = new ElementBuilder(); 
     for (int index = 1; index <= doc.GetPageCount(); index++) 
     { 
      Page page = doc.GetPage(index); 
      writer.Begin(page); 
      eb.Reset(); 

      // Begin writing a block of text 
      string data = "Page " + index; 
      Element element = eb.CreateTextBegin(Font.Create(doc, Font.StandardType1Font.e_times_roman, true), 10.0); 
      writer.WriteElement(element); 
      eb.CreateTextRun(data); 
      element.SetTextMatrix(10, 0, 0, 10, 100, 100); 
      GState gstate = element.GetGState(); 
      gstate.SetTextRenderMode(GState.TextRenderingMode.e_fill_text); 
      gstate.SetStrokeColorSpace(pdftron.PDF.ColorSpace.CreateDeviceRGB()); 
      gstate.SetStrokeColor(new pdftron.PDF.ColorPt(1, 0, 0)); 

      writer.WriteElement(element); 
      writer.WriteElement(eb.CreateTextEnd()); 
      writer.End(); 

     } 
     writer.Dispose(); 
     eb.Dispose(); 
     doc.Save(output_path + "element_builder.pdf", SDFDoc.SaveOptions.e_linearized); 
     doc.Close(); 

Btw。向现有页面添加文本的可能更简单的方法可能是使用'pdftron.PDF.Stamper',如Stamper sample所示。