Today we will generate a PDF with the open source Scryber.

The best way to work with Scryber is to use a template (PDFX file) for the style, the layout and the static content, then insert the dynamic content with C#.

Full documentation at this link.

Good example at this link.

Create a new XML file and rename it PdfScript.pdfx:

<?xml version="1.0" encoding="utf-8"?>
<pdf:Document xmlns:pdf="Scryber.Components, Scryber.Components" auto-bind="true" >
  <Pages>
    <pdf:Page id="MyFirstPage" >
      <Content>
        Hello World
      </Content>
    </pdf:Page>
  </Pages>
</pdf:Document>

Now you can load the template and modify it, then generate the PDF file:

using System.Drawing;
using Scryber.Components;

...

//Load the template containing a page with "Hello World"
using (var doc = PDFDocument.ParseDocument("../../PdfScript.pdfx"))
{
    //Add a new label to the existing page
    var lbl1 = new PDFLabel {Text = "\r\nHello World Again"};
    lbl1.Style.Fill.Color = Color.Aquamarine;
    lbl1.Style.Position.PositionMode = Scryber.Drawing.PositionMode.Block;

    doc.Pages[0].Contents.Add(lbl1);


    //Add a new page to the template dynamically
    var page = new PDFPage
    {
        PaperSize = Scryber.PaperSize.A4,
        PaperOrientation = Scryber.PaperOrientation.Portrait
    };
    doc.Pages.Add(page);


    //Add some content to this new page
    var lbl2 = new PDFLabel {Text = "This is the second page!"};
    page.Contents.Add(lbl2);

    doc.ProcessDocument("MyFirstPDF.pdf", System.IO.FileMode.Create);
}

Enjoy!  😉