diff --git a/src/ElectronNET.API/API/Entities/PageSize.cs b/src/ElectronNET.API/API/Entities/PageSize.cs
new file mode 100644
index 0000000..607a59c
--- /dev/null
+++ b/src/ElectronNET.API/API/Entities/PageSize.cs
@@ -0,0 +1,20 @@
+namespace ElectronNET.API.Entities;
+
+public class PageSize
+{
+ private readonly string _value;
+
+ public PageSize()
+ {
+ }
+
+ private PageSize(string value) : this() => _value = value;
+
+ public double Height { get; set; }
+
+ public double Width { get; set; }
+
+ public static implicit operator string(PageSize pageSize) => pageSize?._value;
+
+ public static implicit operator PageSize(string value) => new(value);
+}
diff --git a/src/ElectronNET.API/API/Entities/PrintToPDFOptions.cs b/src/ElectronNET.API/API/Entities/PrintToPDFOptions.cs
index 771b755..30b7b1d 100644
--- a/src/ElectronNET.API/API/Entities/PrintToPDFOptions.cs
+++ b/src/ElectronNET.API/API/Entities/PrintToPDFOptions.cs
@@ -1,4 +1,7 @@
-namespace ElectronNET.API.Entities;
+using ElectronNET.Converter;
+using Newtonsoft.Json;
+
+namespace ElectronNET.API.Entities;
///
///
@@ -30,7 +33,8 @@ public class PrintToPDFOptions
/// `A5`, `A6`, `Legal`, `Letter`, `Tabloid`, `Ledger`, or an Object containing
/// `height` and `width` in inches. Defaults to `Letter`.
///
- public object PageSize { get; set; } = "Letter";
+ [JsonConverter(typeof(PageSizeConverter))]
+ public PageSize PageSize { get; set; } = "Letter";
///
/// Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string,
diff --git a/src/ElectronNET.API/Converter/PageSizeConverter.cs b/src/ElectronNET.API/Converter/PageSizeConverter.cs
new file mode 100644
index 0000000..5e5e559
--- /dev/null
+++ b/src/ElectronNET.API/Converter/PageSizeConverter.cs
@@ -0,0 +1,43 @@
+using ElectronNET.API.Entities;
+using Newtonsoft.Json;
+using System;
+
+namespace ElectronNET.Converter;
+
+public class PageSizeConverter : JsonConverter
+{
+ public override PageSize ReadJson(JsonReader reader, Type objectType, PageSize existingValue, bool hasExistingValue, JsonSerializer serializer)
+ {
+ if (reader.TokenType == JsonToken.String)
+ {
+ return (string)reader.Value;
+ }
+ else if (reader.TokenType == JsonToken.StartObject)
+ {
+ return serializer.Deserialize(reader);
+ }
+ else
+ {
+ throw new JsonSerializationException("Invalid value for PageSize. Expected true, false, or an object.");
+ }
+ }
+
+ public override void WriteJson(JsonWriter writer, PageSize value, JsonSerializer serializer)
+ {
+ if (value is null)
+ {
+ writer.WriteUndefined();
+ }
+
+ var str = (string)value;
+
+ if (str is not null)
+ {
+ writer.WriteValue(str);
+ }
+ else
+ {
+ serializer.Serialize(writer, value);
+ }
+ }
+}