Files
ArkhamPnP/PDFComposer.cs
T

38 lines
1.2 KiB
C#

using ArkhamPnP.Data;
using iText.Kernel.Pdf;
using iText.Layout;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.Xml;
using System.Text;
using System.Threading.Tasks;
namespace ArkhamPnP
{
internal class PDFComposer
{
const float PAGE_WIDTH = 210; // mm
const float PAGE_HEIGHT = 297; // mm
const float CARD_WIDTH = 63; // mm
const float CARD_HEIGHT = 89; // mm
const float FRONT_PADDING = 3; // mm
const float MARGIN_SIDE = 5; // mm
const float MARGIN_TOP_BOTTOM = 5; // mm
public void PrintCards(List<Card> cards, string destinationPath)
{
var pdfDoc = new PdfDocument(new PdfWriter(destinationPath));
var doc = new Document(pdfDoc, new iText.Kernel.Geom.PageSize(PAGE_WIDTH, PAGE_HEIGHT));
// compute card amount on page
int grid_width = 0;
while (CARD_WIDTH * (grid_width + 1) + FRONT_PADDING * (grid_width + 1 - 1) +
2 * MARGIN_SIDE <= PAGE_WIDTH) grid_width++;
int grid_height = 0;
while (CARD_HEIGHT * (grid_height + 1) + FRONT_PADDING * (grid_height + 1 - 1) +
2 * MARGIN_TOP_BOTTOM <= PAGE_HEIGHT) grid_height++;
Console.WriteLine("Will produce grid of cards " + grid_height + "x" + grid_width);
}
}
}