GrahamJRoy
GrahamJRoy

Reputation: 1643

Appending PDFs to generated PDF using iTextSharp

I am generating a pdf using iTextSharp. If certain properties are true then I also want to insert an existing pdf with static content.

private byte[] GeneratePdf(DraftOrder draftOrder)

  // create a pdf document
  var document = new Document();

  // set the page size, set the orientation
  document.SetPageSize(PageSize.A4);

  // create a writer instance
  var pdfWriter = PdfWriter.GetInstance(document, new FileStream(file, FileMode.Create));

  document.Open();

  if(draftOrder.hasProperty){
    //add these things to the pdf
    var textToBeAdded = "<table><tr>....</table>";
  }
  FormatHtml(document, textToBeAdded , css);

  if(someOtherProperty){
    //add static pdf from file
    document.NewPage();

    var reader = new PdfReader("myPath/existing.pdf");
    PdfImportedPage page;

    for(var i = 0; i < reader.NumberOfPages; i++){
      //It's this bit I don't really understand
      //**how can I add the page read to the document being created?**
    }

I can load the pdf from the source but when I iterate over the pages I can't seem to be able to add them to the document I am creating.

Cheers

Upvotes: 0

Views: 1058

Answers (1)

Bruno Lowagie
Bruno Lowagie

Reputation: 77528

Please read http://manning.com/lowagie2/samplechapter6.pdf

If you don't mind losing all interactivity, you can get the template from the writer object with the GetImportedPage() method and add it to the document with AddTemplate ().

This question has been answered many times on StackOverflow and you'll notice that I always warn about some dangers: you need to realize that the dimensions of the imported page can be different from the page size you initially defined. Because of this invisible parts of the imported page can become visible; visible parts can become invisible.

I'd prefer adding the extra page in a second ho using PdfCopy, but maybe that's just me.

Upvotes: 1

Related Questions