An open API service indexing awesome lists of open source software.

https://github.com/verifytests/verify.questpdf

Extends Verify to allow verification of documents via QuestPDF.
https://github.com/verifytests/verify.questpdf

Last synced: about 1 year ago
JSON representation

Extends Verify to allow verification of documents via QuestPDF.

Awesome Lists containing this project

README

          

# Verify.QuestPDF

[![Discussions](https://img.shields.io/badge/Verify-Discussions-yellow?svg=true&label=)](https://github.com/orgs/VerifyTests/discussions)
[![Build status](https://ci.appveyor.com/api/projects/status/au00qrkik2isl8vw?svg=true)](https://ci.appveyor.com/project/SimonCropp/Verify-QuestPDF)
[![NuGet Status](https://img.shields.io/nuget/v/Verify.QuestPDF.svg)](https://www.nuget.org/packages/Verify.QuestPDF/)

Extends [Verify](https://github.com/VerifyTests/Verify) to allow verification of documents via [QuestPDF](https://www.questpdf.com/).

**See [Milestones](../../milestones?state=closed) for release notes.**

Designed to help assert the output of projects using QuestPDF to generate PDFs.

## NuGet package

https://nuget.org/packages/Verify.QuestPDF/

## Usage


```cs
[ModuleInitializer]
public static void Init()
{
VerifyImageMagick.RegisterComparers(0.015);
VerifyQuestPdf.Initialize();
}
```
snippet source | anchor

This sample uses [Verify.ImageMagick](https://github.com/VerifyTests/Verify.ImageMagick) to ignore small rendering differences that are expected between differens operating systesm.

Other [compares](https://github.com/VerifyTests/Verify/blob/main/docs/comparer.md) options:

* https://github.com/VerifyTests/Verify.ImageHash
* https://github.com/VerifyTests/Verify.ImageMagick
* https://github.com/VerifyTests/Verify.Phash
* https://github.com/VerifyTests/Verify.ImageSharp.Compare

### Code that generates a document


```cs
static IDocument GenerateDocument() =>
Document.Create(container =>
{
container.Page(AddPage);
container.Page(AddPage);
});

static void AddPage(PageDescriptor page)
{
page.Size(PageSizes.A5);
page.Margin(1, Unit.Centimetre);
page.PageColor(Colors.Grey.Lighten3);
page.DefaultTextStyle(_ => _.FontSize(20));

page.Header()
.Text("Hello PDF!")
.SemiBold().FontSize(36);

page.Content()
.Column(_ => _.Item()
.Text(Placeholders.LoremIpsum()));

page.Footer()
.AlignCenter()
.Text(_ =>
{
_.Span("Page ");
_.CurrentPageNumber();
});
}
```
snippet source | anchor

### Verify a Document


```cs
[Test]
public Task VerifyDocument()
{
var document = GenerateDocument();
return Verify(document);
}
```
snippet source | anchor

### Results

#### Metadata


```txt
{
Pages: 2,
Metadata: {
CreationDate: DateTimeOffset_1,
ModifiedDate: DateTimeOffset_2
},
Settings: {
ContentDirection: LeftToRight,
PdfA: false,
ImageCompressionQuality: High,
ImageRasterDpi: 288
}
}
```
snippet source | anchor

#### Pdf as image

## PagesToInclude

To render only a defined number of pages at the start of a document:


```cs
[Test]
public Task PagesToInclude()
{
var document = GenerateDocument();
return Verify(document)
.PagesToInclude(1);
}
```
snippet source | anchor

### Dynamic

To dynamically control what pages are rendered:


```cs
[Test]
public Task PagesToIncludeDynamic()
{
var document = GenerateDocument();
return Verify(document)
.PagesToInclude(pageNumber => pageNumber == 2);
}
```
snippet source | anchor