---
title: "Create Multipage PDF"
canonical: https://www.graphicsmill.com/samples/Codecs/Pdf/CreateMultipagePDF_cs
product: "Graphics Mill"
source: "Codecs/Pdf/CreateMultipagePDF.cs"
---

# Create Multipage PDF

Creates multipage PDF with personalized wedding invitations.

## Instruction

Write a C# program that generates personalized wedding invitations by replacing placeholder text with names from a list and saves the output as a PDF.

## Usings

```csharp
using Aurigma.GraphicsMill.Codecs;
using Aurigma.GraphicsMill.Drawing;
```

## Code Snippet

```csharp
// A list of variable data
var names = new[]
{
    "NICK",
    "MICHAEL",
    "JOHN",
};

using (var reader = new PdfReader("wedding-invitation-5x7in-vdp.pdf"))
using (var template = reader.Frames[0].GetContent())
using (var writer = new PdfWriter("wedding-invitation-5x7in-vdp_out.pdf"))
using (var gr = writer.GetGraphics())
using (var fr = new CustomFontRegistry())
{
    var psName = fr.Add("Montserrat-Medium.ttf")[0].PostscriptName;

    foreach (var name in names)
    {
        writer.AddPage(template.Width, template.Height, template.DpiX, template.DpiY);

        gr.FontRegistry = fr;

        // The content of this container will be written only with the first call. All further calls will reference the existing content.
        gr.DrawContainer(template, 0, 0);

        // Let's draw the text at the specified point.
        var text = new PlainText(name, gr.CreateFont(psName, 10))
        {
            Position = new System.Drawing.PointF(250, 105),
        };

        text.ParagraphStyle.Alignment = TextAlignment.Center;
        text.Brush = new SolidBrush(CmykColor.FromPercentages(0.43f, 0.418f, 0.483f, 0.279f, 1));

        gr.DrawText(text);
    }
}
```

## Explanation

Below is a C# code sample that demonstrates how to create personalized wedding invitations using variable data in a PDF. The program reads a template, replaces a placeholder with a list of names, and saves the output as a new PDF:

This code generates multiple wedding invitation PDFs, each personalized with one name from the list. The names are centered and printed in a specified font and color.

## Tags

- [Drawing](<https://www.graphicsmill.com/samples/tags/drawing_md>): Drawing vector shapes and text
- [PDF](<https://www.graphicsmill.com/samples/tags/pdf_md>): Importing and exporting PDF documents
- [Text](<https://www.graphicsmill.com/samples/tags/text_md>): Rendering and formatting text
- [VDP](<https://www.graphicsmill.com/samples/tags/vdp_md>): Variable data printing scenarios
- [Write](<https://www.graphicsmill.com/samples/tags/write_md>): Writing images with codecs

## Input

- [wedding-invitation-5x7in-vdp.pdf](<https://www.graphicsmill.com/samples/Codecs/compiled/Debug/wedding-invitation-5x7in-vdp_pdf>) (download)
- [Montserrat-Medium.ttf](<https://www.graphicsmill.com/samples/Codecs/compiled/Debug/Montserrat-Medium_ttf>) (download)

## Output

- [wedding-invitation-5x7in-vdp\_out.pdf](<https://www.graphicsmill.com/samples/Codecs/compiled/Debug/wedding-invitation-5x7in-vdp_out_pdf>) (download)
- [wedding-invitation-5x7in-vdp\_out.png](<https://www.graphicsmill.com/samples/Codecs/compiled/Debug/wedding-invitation-5x7in-vdp_out_png>) (preview)

## Used APIs

- [Aurigma.GraphicsMill.CmykColor](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_CmykColor.htm.md>)
- [Aurigma.GraphicsMill.CmykColor.FromPercentages(Single,Single,Single,Single,Single)](<https://www.graphicsmill.com/docs/gm/M_Aurigma_GraphicsMill_CmykColor_FromPercentages_5_26a90dee.htm.md>)
- [Aurigma.GraphicsMill.Codecs.PdfFrame.GetContent](<https://www.graphicsmill.com/docs/gm/M_Aurigma_GraphicsMill_Codecs_PdfFrame_GetContent.htm.md>)
- [Aurigma.GraphicsMill.Codecs.PdfReader](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Codecs_PdfReader.htm.md>)
- [Aurigma.GraphicsMill.Codecs.PdfReader.Frames](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Codecs_PdfReader_Frames.htm.md>)
- [Aurigma.GraphicsMill.Codecs.PdfWriter](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Codecs_PdfWriter.htm.md>)
- [Aurigma.GraphicsMill.Codecs.PdfWriter.AddPage(Single,Single,Single,Single)](<https://www.graphicsmill.com/docs/gm/M_Aurigma_GraphicsMill_Codecs_PdfWriter_AddPage_4_37f6c741.htm.md>)
- [Aurigma.GraphicsMill.Codecs.PdfWriter.GetGraphics](<https://www.graphicsmill.com/docs/gm/M_Aurigma_GraphicsMill_Codecs_PdfWriter_GetGraphics.htm.md>)
- [Aurigma.GraphicsMill.Drawing.CustomFontRegistry](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Drawing_CustomFontRegistry.htm.md>)
- [Aurigma.GraphicsMill.Drawing.CustomFontRegistry.Add(String)](<https://www.graphicsmill.com/docs/gm/M_Aurigma_GraphicsMill_Drawing_CustomFontRegistry_Add_1_bb3a7a4f.htm.md>)
- [Aurigma.GraphicsMill.Drawing.FontAddResult.PostscriptName](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Drawing_FontAddResult_PostscriptName.htm.md>)
- [Aurigma.GraphicsMill.Drawing.Graphics.CreateFont(String,Single)](<https://www.graphicsmill.com/docs/gm/M_Aurigma_GraphicsMill_Drawing_Graphics_CreateFont_2_1dbfa9fa.htm.md>)
- [Aurigma.GraphicsMill.Drawing.Graphics.DrawContainer(GraphicsContainer,Single,Single)](<https://www.graphicsmill.com/docs/gm/M_Aurigma_GraphicsMill_Drawing_Graphics_DrawContainer_3_098aa7ce.htm.md>)
- [Aurigma.GraphicsMill.Drawing.Graphics.DrawText(Text)](<https://www.graphicsmill.com/docs/gm/M_Aurigma_GraphicsMill_Drawing_Graphics_DrawText_1_f576d03f.htm.md>)
- [Aurigma.GraphicsMill.Drawing.Graphics.FontRegistry](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Drawing_Graphics_FontRegistry.htm.md>)
- [Aurigma.GraphicsMill.Drawing.GraphicsContainer.DpiX](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Drawing_GraphicsContainer_DpiX.htm.md>)
- [Aurigma.GraphicsMill.Drawing.GraphicsContainer.DpiY](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Drawing_GraphicsContainer_DpiY.htm.md>)
- [Aurigma.GraphicsMill.Drawing.ParagraphStyle.Alignment](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Drawing_ParagraphStyle_Alignment.htm.md>)
- [Aurigma.GraphicsMill.Drawing.PlainText](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Drawing_PlainText.htm.md>)
- [Aurigma.GraphicsMill.Drawing.PlainText.Position](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Drawing_PlainText_Position.htm.md>)
- [Aurigma.GraphicsMill.Drawing.SolidBrush](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Drawing_SolidBrush.htm.md>)
- [Aurigma.GraphicsMill.Drawing.Text.Brush](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Drawing_Text_Brush.htm.md>)
- [Aurigma.GraphicsMill.Drawing.Text.ParagraphStyle](<https://www.graphicsmill.com/docs/gm/P_Aurigma_GraphicsMill_Drawing_Text_ParagraphStyle.htm.md>)
- [Aurigma.GraphicsMill.Drawing.TextAlignment](<https://www.graphicsmill.com/docs/gm/T_Aurigma_GraphicsMill_Drawing_TextAlignment.htm.md>)
