2

Hello guys How could I merge multiple PDF files into one large PDF file?I tried the following,but this error is showing "A page can have only one server-side Form tag" I can't understand. Here is my code.

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void btnMerge_Click(object sender, EventArgs e)
    {
        if (file1.HasFile && file2.HasFile)
        {
            PdfReader pdfReader1 = new PdfReader(file1.PostedFile.InputStream);
            PdfReader pdfReader2 = new PdfReader(file2.PostedFile.InputStream);

            List<PdfReader> readerList = new List<PdfReader>();
            readerList.Add(pdfReader1);
            readerList.Add(pdfReader2);


            //Define a new output document and its size, type
            Document document = new Document(PageSize.A4, 0, 0, 0, 0);
            //Get instance response output stream to write output file.
            PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream);
            document.Open();

            foreach (PdfReader reader in readerList)
            {
                for (int i = 1; i <= reader.NumberOfPages; i++)
                {
                    PdfImportedPage page = writer.GetImportedPage(reader, i);
                    document.Add(iTextSharp.text.Image.GetInstance(page));
                }
            }
            document.Close();

            Response.AppendHeader("content-disposition", "inline; filename=OutPut.pdf");
            Response.ContentType = "application/pdf";
        }

    }

    private void MergePDFs(string outPutFilePath, params string[] filesPath)
    {
        List<PdfReader> readerList = new List<PdfReader>();
        foreach (string filePath in filesPath)
        {
            PdfReader pdfReader = new PdfReader(filePath);
            readerList.Add(pdfReader);
        }

        //Define a new output document and its size, type
        Document document = new Document(PageSize.A4, 0, 0, 0, 0);
        //Create blank output pdf file and get the stream to write on it.
        PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outPutFilePath, FileMode.Create));
        document.Open();

        foreach (PdfReader reader in readerList)
        {
            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                PdfImportedPage page = writer.GetImportedPage(reader, i);
                document.Add(iTextSharp.text.Image.GetInstance(page));
            }
        }
        document.Close();
    }

}

}

Bruno Lowagie
  • 75,994
  • 9
  • 109
  • 165
Al-Amin Suzan
  • 27
  • 1
  • 3
  • 1
    this isn't in code behind you should post `.aspx` page code ..error must be there. – Usman lqbal Apr 15 '16 at 18:14
  • Your code is all wrong. Merging documents is done with `PdfCopy` or `PdfSmartCopy`, not with `Document` and `PdfWriter`. How many times do I have to repeat this? See for instance: http://stackoverflow.com/a/36590631/1622493 Why don't you read the official documentation? The actual error message isn't an iTextSharp error though. As @usmanlqbal indicates, your error is probably in your .aspx code. – Bruno Lowagie Apr 16 '16 at 07:35

0 Answers0