diff --git a/readme.md b/readme.md
index 4ffffde..c6a1b5e 100644
--- a/readme.md
+++ b/readme.md
@@ -55,6 +55,29 @@ Other [compares](https://github.com/VerifyTests/Verify/blob/main/docs/comparer.m
* https://github.com/VerifyTests/Verify.ImageSharp.Compare
+### Outputs
+
+`Initialize` accepts an optional `QuestPdfOutputs` to control which outputs a document is split into:
+
+ * `Png`: render each page to a png. When omitted, pages are not rasterized at all.
+ * `All`: the default.
+
+The pdf target is not controlled by this setting. Use `VerifierSettings.ExcludeTargets("pdf")` to exclude it.
+
+
+
+```cs
+[ModuleInitializer]
+public static void Init()
+{
+ QuestPDF.Settings.License = LicenseType.Community;
+ // Skip rendering pages to png
+ VerifyQuestPdf.Initialize(QuestPdfOutputs.None);
+}
+```
+snippet source | anchor
+
+
### Code that generates a document
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index ce04e0a..a9613cd 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -2,7 +2,7 @@
CS1591;CS0649;NU1608;NU1109
- 2.9.0
+ 2.10.0
1.0.0
preview
enable
diff --git a/src/StaticSettingsTests/ModuleInitializer.cs b/src/StaticSettingsTests/ModuleInitializer.cs
new file mode 100644
index 0000000..ee60645
--- /dev/null
+++ b/src/StaticSettingsTests/ModuleInitializer.cs
@@ -0,0 +1,14 @@
+public static class ModuleInitializer
+{
+ #region InitializeOutputs
+
+ [ModuleInitializer]
+ public static void Init()
+ {
+ QuestPDF.Settings.License = LicenseType.Community;
+ // Skip rendering pages to png
+ VerifyQuestPdf.Initialize(QuestPdfOutputs.None);
+ }
+
+ #endregion
+}
diff --git a/src/StaticSettingsTests/StaticSettingsTests.csproj b/src/StaticSettingsTests/StaticSettingsTests.csproj
new file mode 100644
index 0000000..b2f2689
--- /dev/null
+++ b/src/StaticSettingsTests/StaticSettingsTests.csproj
@@ -0,0 +1,18 @@
+
+
+ net10.0
+ Exe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/StaticSettingsTests/Tests.VerifyDocument.verified.pdf b/src/StaticSettingsTests/Tests.VerifyDocument.verified.pdf
new file mode 100644
index 0000000..c914dfa
Binary files /dev/null and b/src/StaticSettingsTests/Tests.VerifyDocument.verified.pdf differ
diff --git a/src/StaticSettingsTests/Tests.VerifyDocument.verified.txt b/src/StaticSettingsTests/Tests.VerifyDocument.verified.txt
new file mode 100644
index 0000000..2de2447
--- /dev/null
+++ b/src/StaticSettingsTests/Tests.VerifyDocument.verified.txt
@@ -0,0 +1,10 @@
+{
+ Pages: 2,
+ Settings: {
+ ContentDirection: LeftToRight,
+ PDFA_Conformance: None,
+ PDFUA_Conformance: None,
+ ImageCompressionQuality: High,
+ ImageRasterDpi: 288
+ }
+}
\ No newline at end of file
diff --git a/src/StaticSettingsTests/Tests.cs b/src/StaticSettingsTests/Tests.cs
new file mode 100644
index 0000000..da22713
--- /dev/null
+++ b/src/StaticSettingsTests/Tests.cs
@@ -0,0 +1,22 @@
+public class Tests
+{
+ [Test]
+ public Task VerifyDocument()
+ {
+ var document = Document.Create(container =>
+ {
+ container.Page(AddPage);
+ container.Page(AddPage);
+ });
+ return Verify(document);
+ }
+
+ static void AddPage(PageDescriptor page)
+ {
+ page.Size(PageSizes.A5);
+ page.Margin(1, Unit.Centimetre);
+ page.DefaultTextStyle(_ => _.FontSize(20));
+ page.Content()
+ .Text("Hello World");
+ }
+}
diff --git a/src/Verify.QuestPDF.slnx b/src/Verify.QuestPDF.slnx
index d1693f7..00bd92c 100644
--- a/src/Verify.QuestPDF.slnx
+++ b/src/Verify.QuestPDF.slnx
@@ -10,6 +10,7 @@
+
\ No newline at end of file
diff --git a/src/Verify.QuestPDF/QuestPdfOutputs.cs b/src/Verify.QuestPDF/QuestPdfOutputs.cs
new file mode 100644
index 0000000..2fe687a
--- /dev/null
+++ b/src/Verify.QuestPDF/QuestPdfOutputs.cs
@@ -0,0 +1,25 @@
+namespace VerifyTests;
+
+///
+/// Controls which outputs a QuestPDF document is split into when verified.
+/// The pdf target is not controlled here; use VerifierSettings.ExcludeTargets("pdf") for that.
+///
+[Flags]
+public enum QuestPdfOutputs
+{
+ ///
+ /// No outputs. Only the source document (and info) is emitted.
+ ///
+ None = 0,
+
+ ///
+ /// Render each page to a png target.
+ /// When omitted, page images are not rendered at all.
+ ///
+ Png = 1,
+
+ ///
+ /// All outputs.
+ ///
+ All = Png
+}
diff --git a/src/Verify.QuestPDF/VerifyQuestPdf.cs b/src/Verify.QuestPDF/VerifyQuestPdf.cs
index 3b8ace7..c7a4016 100644
--- a/src/Verify.QuestPDF/VerifyQuestPdf.cs
+++ b/src/Verify.QuestPDF/VerifyQuestPdf.cs
@@ -6,7 +6,10 @@ public static class VerifyQuestPdf
public static bool Initialized { get; private set; }
- public static void Initialize()
+ static QuestPdfOutputs outputs = QuestPdfOutputs.All;
+
+ /// Which outputs a document is split into. Defaults to .
+ public static void Initialize(QuestPdfOutputs outputs = QuestPdfOutputs.All)
{
if (Initialized)
{
@@ -14,6 +17,7 @@ public static void Initialize()
}
Initialized = true;
+ VerifyQuestPdf.outputs = outputs;
InnerVerifier.ThrowIfVerifyHasBeenRun();
VerifierSettings
@@ -26,7 +30,21 @@ public static void Initialize()
VerifierSettings.RegisterFileConverter(
conversion: (document, settings) =>
{
- var pages = document.GenerateImages().ToList();
+ var includePng = outputs.HasFlag(QuestPdfOutputs.Png);
+ // Rasterizing pages is expensive, so only do it when png output is enabled.
+ // Otherwise the page count comes from the much cheaper vector svg generation.
+ List pages = [];
+ int pageCount;
+ if (includePng)
+ {
+ pages = document.GenerateImages().ToList();
+ pageCount = pages.Count;
+ }
+ else
+ {
+ pageCount = document.GenerateSvg().Count;
+ }
+
if (!settings.GetPagesToInclude(out var pagesToInclude))
{
pagesToInclude = _ => true;
@@ -73,7 +91,7 @@ public static void Initialize()
return new(
info: new
{
- Pages = pages.Count,
+ Pages = pageCount,
Metadata = NullIfEmpty(metadata),
Settings = document.GetSettings(),
},