GetImportedPage() public method

public GetImportedPage ( PdfReader reader, int pageNumber ) : PdfImportedPage
reader PdfReader
pageNumber int
return PdfImportedPage
        private void Make_pdf()
        {
            //第一頁
            int ti = Convert.ToInt32(times.Text);
            int he = Convert.ToInt32(head.Text);
            string nu;
            if (he / 10 == 0) nu = "0000000" + he.ToString();
            else if (he / 100 == 0) nu = "000000" + he.ToString();
            else if (he / 1000 == 0) nu = "00000" + he.ToString();
            else if (he / 10000 == 0) nu = "0000" + he.ToString();
            else if (he / 10000 == 0) nu = "000" + he.ToString();
            else if (he / 100000 == 0) nu = "00" + he.ToString();
            else if (he / 1000000 == 0) nu = "0" + he.ToString();
            else nu = he.ToString();

            PdfReader reader = new PdfReader(@"data\Doc1.pdf");

            //

            //將範本檔按丟入stream並給PdfStamper
            //PdfStamper stamper = new PdfStamper(reader, stream);

            PdfStamper stamper = new PdfStamper(reader, new FileStream(pa+@"\"+times.Text+@".pdf", FileMode.Create));
            stamper.Writer.CloseStream = false;
            AcroFields acroFields = stamper.AcroFields;
            //BaseFont bfkaiu = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\kaiu.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            //BaseFont bftimes = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\times.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            //重設pdf樣式
            BaseFont bf = BaseFont.CreateFont("C:/WINDOWS/Fonts/kaiu.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

            acroFields.SetFieldProperty("Text1", "textfont", bf, null);

            //將資料放進pdf內

            acroFields.SetField("Text1", nu);

            //infile.Flush();

            int i=1;
            int insPage = 2;

            //第n頁
            while (i < ti)// 若 page-i,i比page小 代表還有頁數還沒完成
            {
                i++; he++;
                string nu2;
                if (he / 10 == 0) nu2 = "0000000" + he.ToString();
                else if (he / 100 == 0) nu2 = "000000" + he.ToString();
                else if (he / 1000 == 0) nu2 = "00000" + he.ToString();
                else if (he / 10000 == 0) nu2 = "0000" + he.ToString();
                else if (he / 10000 == 0) nu2 = "000" + he.ToString();
                else if (he / 100000 == 0) nu2 = "00" + he.ToString();
                else if (he / 1000000 == 0) nu2 = "0" + he.ToString();
                else nu2 = he.ToString();

                //將Sample PDF檔丟入PdfReader物件
                MemoryStream stream2 = new MemoryStream();
                PdfReader reader2 = new PdfReader(@"data\Doc1.pdf");

                //將範本檔按丟入stream並給PdfStamper
                PdfStamper stamper2 = new PdfStamper(reader2, stream2);
                stamper2.Writer.CloseStream = false;
                AcroFields acroFields2 = stamper2.AcroFields;
                //BaseFont bfkaiu2 = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\kaiu.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                //BaseFont bftimes2 = BaseFont.CreateFont("C:\\WINDOWS\\Fonts\\times.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

                //重設pdf樣式
                //BaseFont bf2 = BaseFont.CreateFont("C:/WINDOWS/Fonts/kaiu.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                it.Font textFont2 = new it.Font(bf, 12);

                acroFields2.SetFieldProperty("Text1", "textfont", bf, null);
                //將資料放進pdf內
                acroFields2.SetField("Text1", nu2);

                stamper2.FormFlattening = true;
                stamper2.Close();
                reader2.Close();

                //將第n頁裝進第一頁後面
                MemoryStream rm = new MemoryStream(stream2.GetBuffer(), 0, stream2.GetBuffer().Length);
                PdfReader tesrreader = new PdfReader(rm);
                stamper.InsertPage(insPage, reader.GetPageSize(1));
                stamper.GetUnderContent(insPage).AddTemplate(stamper.GetImportedPage(tesrreader, 1), 0, 0);

                insPage += 1;//插入變數++

            }
            //第n頁END
            stamper.FormFlattening = true;
            stamper.Close();

            reader.Close();
            //PDF結束
            //stamper.Flush();
            Dispose();
        }
Example #2
0
 public static iTextSharpImage FromPdf(Stream stream)
 {
     var reader = new PdfReader(ReadFully(stream));
     var writer = new PdfStamper(reader, new MemoryStream());
     var pdfImportedPage = writer.GetImportedPage(reader, 1);
     var image = Image.GetInstance(pdfImportedPage);
     var height = image.Height;
     return new iTextSharpImage(image);
 }
 // ---------------------------------------------------------------------------
 /**
  * Manipulates a PDF file src with the file dest as result
  * @param src the original PDF
  */
 public byte[] ManipulatePdf(byte[] src)
 {
     // Create a reader for the original document
     PdfReader reader = new PdfReader(src);
     // Create a reader for the advertisement resource
     PdfReader ad = new PdfReader(RESOURCE);
     using (MemoryStream ms = new MemoryStream())
     {
         // Create a stamper
         using (PdfStamper stamper = new PdfStamper(reader, ms))
         {
             // Create the advertisement annotation for the menubar
             Rectangle rect = new Rectangle(400, 772, 545, 792);
             PushbuttonField button = new PushbuttonField(
               stamper.Writer, rect, "click"
             );
             button.BackgroundColor = BaseColor.RED;
             button.BorderColor = BaseColor.RED;
             button.FontSize = 10;
             button.Text = "Close this advertisement";
             button.Image = Image.GetInstance(
               Path.Combine(Utility.ResourceImage, IMAGE)
             );
             button.Layout = PushbuttonField.LAYOUT_LABEL_LEFT_ICON_RIGHT;
             button.IconHorizontalAdjustment = 1;
             PdfFormField menubar = button.Field;
             String js = "var f1 = getField('click'); f1.display = display.hidden;"
               + "var f2 = getField('advertisement'); f2.display = display.hidden;"
             ;
             menubar.Action = PdfAction.JavaScript(js, stamper.Writer);
             // Add the annotation
             stamper.AddAnnotation(menubar, 1);
             // Create the advertisement annotation for the content
             rect = new Rectangle(400, 550, 545, 772);
             button = new PushbuttonField(
               stamper.Writer, rect, "advertisement"
             );
             button.BackgroundColor = BaseColor.WHITE;
             button.BorderColor = BaseColor.RED;
             button.Text = "Buy the book iText in Action 2nd edition";
             button.Template = stamper.GetImportedPage(ad, 1);
             button.Layout = PushbuttonField.LAYOUT_ICON_TOP_LABEL_BOTTOM;
             PdfFormField advertisement = button.Field;
             advertisement.Action = new PdfAction(
               "http://www.1t3xt.com/docs/book.php"
             );
             // Add the annotation
             stamper.AddAnnotation(advertisement, 1);
         }
         return ms.ToArray();
     }
 }
Example #4
0
// ---------------------------------------------------------------------------
    /**
     * Manipulates a PDF file src
     * @param src the original PDF
     * @param stationery the resulting PDF
     */
    public byte[] ManipulatePdf(byte[] src, byte[] stationery) {
      ColumnText ct = new ColumnText(null);
      string SQL = 
@"SELECT country, id FROM film_country 
ORDER BY country
";        
      using (var c =  AdoDB.Provider.CreateConnection()) {
        c.ConnectionString = AdoDB.CS;
        using (DbCommand cmd = c.CreateCommand()) {
          cmd.CommandText = SQL;
          c.Open();
          using (var r = cmd.ExecuteReader()) {
            while (r.Read()) {
              ct.AddElement(new Paragraph(
                24, new Chunk(r["country"].ToString())
              ));
            }
          }
        }
      }
      // Create a reader for the original document and for the stationery
      PdfReader reader = new PdfReader(src);
      PdfReader rStationery = new PdfReader(stationery);
      using (MemoryStream ms = new MemoryStream()) {
        // Create a stamper
        using (PdfStamper stamper = new PdfStamper(reader, ms)) {
          // Create an imported page for the stationery
          PdfImportedPage page = stamper.GetImportedPage(rStationery, 1);
          int i = 0;
          // Add the content of the ColumnText object 
          while(true) {
          // Add a new page
            stamper.InsertPage(++i, reader.GetPageSize(1));
            // Add the stationary to the new page
            stamper.GetUnderContent(i).AddTemplate(page, 0, 0);
            // Add as much content of the column as possible
            ct.Canvas = stamper.GetOverContent(i);
            ct.SetSimpleColumn(36, 36, 559, 770);
            if (!ColumnText.HasMoreText(ct.Go()))
                break;
          }
        }
        return ms.ToArray();     
      }
    }    
Example #5
0
// ---------------------------------------------------------------------------
    /**
     * Manipulates a PDF file src with the file dest as result
     * @param src the original PDF
     * @param stationery a PDF that will be added as background
     */
    public byte[] ManipulatePdf(byte[] src, byte[] stationery) {
      // Create readers
      PdfReader reader = new PdfReader(src);
      PdfReader s_reader = new PdfReader(stationery);
      using (MemoryStream ms = new MemoryStream()) {
        // Create the stamper
        using (PdfStamper stamper = new PdfStamper(reader, ms)) {
          // Add the stationery to each page
          PdfImportedPage page = stamper.GetImportedPage(s_reader, 1);
          int n = reader.NumberOfPages;
          PdfContentByte background;
          for (int i = 1; i <= n; i++) {
            background = stamper.GetUnderContent(i);
            background.AddTemplate(page, 0, 0);
          }
        } 
        return ms.ToArray();   
      }
    }  
Example #6
0
        public void SetBackground(string pdfFile, Stream stream, Drawing.Image image, int type = 0) {
            PdfReader reader = null;
            PdfStamper stamper = null;
            try {
                reader = new PdfReader(pdfFile);
                stamper = new PdfStamper(reader, stream);

                var totalPage = reader.NumberOfPages;
                for (int current = 1; current <= totalPage; current++) {
                    var canvas = stamper.GetUnderContent(current);
                    var page = stamper.GetImportedPage(reader, current);

                    var img = Image.GetInstance(image, Drawing.Imaging.ImageFormat.Png);
                    switch (type) {
                        case 1: //top left
                            img.SetAbsolutePosition(0, page.Height - img.Height);
                            canvas.AddImage(img);
                            break;
                        case 2: //top center
                            img.SetAbsolutePosition((page.Width - img.Width) / 2, page.Height - img.Height);
                            canvas.AddImage(img);
                            break;
                        case 3: //top right
                            img.SetAbsolutePosition(page.Width - img.Width, page.Height - img.Height);
                            canvas.AddImage(img);
                            break;
                        case 4: //middle left
                            img.SetAbsolutePosition(0, (page.Height - img.Height) / 2);
                            canvas.AddImage(img);
                            break;
                        case 5: //middle center
                            img.SetAbsolutePosition((page.Width - img.Width) / 2, (page.Height - img.Height) / 2);
                            canvas.AddImage(img);
                            break;
                        case 6: //middle right
                            img.SetAbsolutePosition(page.Width - img.Width, (page.Height - img.Height) / 2);
                            canvas.AddImage(img);
                            break;
                        case 7: //bottom left
                            img.SetAbsolutePosition(0, 0);
                            canvas.AddImage(img);
                            break;
                        case 8: //bottom center
                            img.SetAbsolutePosition((page.Width - img.Width) / 2, 0);
                            canvas.AddImage(img);
                            break;
                        case 9: //bottom right
                            img.SetAbsolutePosition(page.Width - img.Width, 0);
                            canvas.AddImage(img);
                            break;
                        default: //平扑
                            int xRepeats = (int)((page.Width + img.Width - 1) / image.Width);
                            int yRepeats = (int)((page.Height + img.Height - 1) / image.Height);

                            for (int i = 0; i < xRepeats; i++) {
                                for (int j = 0; j < yRepeats; j++) {
                                    img.SetAbsolutePosition(img.Width * i, image.Height * j);
                                    canvas.AddImage(img);
                                }
                            }
                            break;
                    }

                    //img.SetAbsolutePosition(120, 120);
                    //canvas.AddImage(img);
                    //ColumnText.ShowTextAligned(canvas, Element.ALIGN_LEFT, new Phrase("Hello people!"), 36, 540, 0);
                    OnProgress(current, totalPage);
                }
                stamper.Close();
            } catch (Exception ex) {
                OnError(ex);
            } finally {
                stamper.Close();
                reader.Close();
            }
            OnFinish();
        }