利用iText生成PDF文件,
我做了个PDF模板,这个模板只有一页,如何利用这个模板生成几页的新的 
PDF文件呢?每一页都跟模板相同
我只知道 模板是怎样我生成的PDF文件的布局就是怎样的,模板几页生成的PDF文件就是几页
不知道在此基础上变更
有没有用过这个的教教我
只要告诉我怎么利用只有一页的模板生成有两页内容一模一样的PDF文件就可以了
谢谢了,能有简单的代码就更好了

解决方案 »

  1.   

    没人知道吗,用C#生成PDF的好象少啊
      

  2.   

    生成PDF文件代码如下
    using System;
    using System.Web;
    using System.Web.Caching;
    using System.Web.UI.HtmlControls;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using iTextSharp.text;
    using iTextSharp.text.pdf;
    namespace PDF_OUT_CL
    {
        public class PDF_Print_Out
        {
            //    * FLAGをセットする 
            private  const string F_FLAG = "fflag";        // * FONTをセットする 
            private  const string T_FONT = "textfont";        // * PdfContentByte for this stamper 
            private PdfContentByte cb = null;        private   string[] FIED_NM_OHOR ={ "SCC_Mail_NO" };        // * TEMPLATE_NM 社員名簿PDFのTEMPLATE名 
            private String TEMPLATE_NM = null;
            
            public PDF_Print_Out(string template_nm)
            {
                this.TEMPLATE_NM=template_nm;
            }
            /// <summary>
            /// Create PDF File
            /// </summary>
            /// <param name="values"></param>
            public void Creat_PDF_File(HttpResponse Response, string[] values)
            {
                this.createPDF_OHOR(Response,FIED_NM_OHOR, values);
            }
            private void createPDF_OHOR(HttpResponse Response, string[] FIELD_NM, string[] values)
            {
                Cache cache = new Cache();
                PdfReader reader = null;
                PdfStamper stamp = null;
                Stream file = null;
                string sname = DateTime.Now.ToString("yyMMddhhmmss");
                Random Rand = new Random(4);
                sname = sname+Convert.ToString(Rand.Next())+".pdf";
                try
                {
                    reader = new PdfReader(this.TEMPLATE_NM);
                    
                    
                    file = new FileStream(@"D:\WINSOR\PDF_OUT\PDF\PDF_OUT"+sname, FileMode.OpenOrCreate);                stamp = new PdfStamper(reader, file);
                    BaseFont baseFont = this.getFont();
                    AcroFields form = stamp.AcroFields;
                    //cb = stamp.GetOverContent(1);                for (int i = 0; i < FIELD_NM.Length; i++)
                    {
                        form.SetFieldProperty(FIELD_NM[i], F_FLAG, PdfFormField.FF_READ_ONLY, null);
                        form.SetFieldProperty(FIELD_NM[i], T_FONT, baseFont, null);
                        form.SetField(FIELD_NM[i], values[i]);
                    }
                    
                                   stamp.FormFlattening = true;
                    stamp.Close();
                    long FileSize;
                    FileStream PDFfile = new FileStream(@"D:\WINSOR\PDF_OUT\PDF\PDF_OUT" + sname,FileMode.Open);
                    
                    FileSize = PDFfile.Length;
                    byte[] buffer = new byte[(int)FileSize];
                    PDFfile.Read(buffer, 0, (int)FileSize);
                    PDFfile.Close();
                    File.Delete(@"D:\WINSOR\PDF_OUT\PDF\PDF_OUT" + sname);
                    Response.AddHeader("Content-Disposition", "attachment");
                    Response.ContentType = "application/pdf";
                    Response.BinaryWrite(buffer);
                    Response.Flush(); 
                    Response.Close();
                   
                    
                }
                catch(Exception ex)
                {
                    throw ex;
                }
               
        }
            
            private BaseFont getFont()  
            {
                BaseFont font = BaseFont.CreateFont(@"c:\WINDOWS\Fonts\SIMHEI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            
                return font; // Return the base font to create the pdf document
            }
    }
    }要解决这个问题的思想是想把数据填好,然后在把生成的几个PDF文件合并
      

  3.   

    要解决这个问题的思想是想把数据填好,然后在把生成的几个PDF文件合并
    合并代码如下
     string[] args ={ "C:\\Result.pdf", "C:\\test1.pdf", "C:\\test2.pdf" };
                       try  
                       { 
                           int f = 1; 
                           // we create a reader for a certain document 
                           PdfReader reader = new PdfReader(args[f]); 
                           // we retrieve the total number of pages 
                           int n = reader.NumberOfPages; 
                           Console.WriteLine("There are " + n + " pages in the original file."); 
                        
                           // step 1: creation of a document-object 
                           Document document = new Document(reader.GetPageSizeWithRotation(1)); 
                           // step 2: we create a writer that listens to the document 
                           PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(args[0], FileMode.Create)); 
                           // step 3: we open the document 
                           document.Open(); 
                           PdfContentByte cb = writer.DirectContent; 
                           PdfImportedPage page; 
                           int rotation; 
                           // step 4: we add content 
                           while (f < args.Length)  
                           { 
                               int i = 0; 
                               while (i < n)  
                               { 
                                   i++; 
                                   document.SetPageSize(reader.GetPageSizeWithRotation(i)); 
                                   document.NewPage(); 
                                   page = writer.GetImportedPage(reader, i); 
                                   rotation = reader.GetPageRotation(i); 
                                   if (rotation == 90 || rotation == 270)  
                                   { 
                                       cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(i).Height); 
                                   } 
                                   else  
                                   { 
                                       cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0); 
                                   } 
                                   Console.WriteLine("Processed page " + i); 
                               } 
                               f++; 
                               if (f < args.Length)  
                               { 
                                   reader = new PdfReader(args[f]); 
                                   // we retrieve the total number of pages 
                                   n = reader.NumberOfPages; 
                                   Console.WriteLine("There are " + n + " pages in the original file."); 
                               } 
                           } 
                           // step 5: we close the document 
                           document.Close(); 
                       }
                       catch (Exception ex)
                       {                       
                           throw ex;
                       }