@@ -12,6 +12,17 @@ namespace ImageMagick.Formats;
1212/// </summary>
1313public sealed class PdfWriteDefines : IWriteDefines
1414{
15+ private static readonly List < MagickFormat > AllowedFormats = [ MagickFormat . Pdf , MagickFormat . Pdfa ] ;
16+
17+ private readonly MagickFormat _format ;
18+
19+ /// <summary>
20+ /// Initializes a new instance of the <see cref="PdfWriteDefines"/> class.
21+ /// </summary>
22+ /// <param name="format">The pdf format.</param>
23+ public PdfWriteDefines ( MagickFormat format = MagickFormat . Pdf )
24+ => _format = CheckFormat ( format ) ;
25+
1526 /// <summary>
1627 /// Gets or sets the author of the pdf document (pdf:author).
1728 /// </summary>
@@ -31,7 +42,7 @@ public sealed class PdfWriteDefines : IWriteDefines
3142 /// Gets the format where the defines are for.
3243 /// </summary>
3344 public MagickFormat Format
34- => MagickFormat . Pdf ;
45+ => _format ;
3546
3647 /// <summary>
3748 /// Gets or sets the keywords of the pdf document (pdf:keywords).
@@ -81,40 +92,48 @@ public IEnumerable<IDefine> Defines
8192 get
8293 {
8394 if ( Author ? . Length > 0 )
84- yield return new MagickDefine ( Format , "author" , Author ) ;
95+ yield return new MagickDefine ( MagickFormat . Pdf , "author" , Author ) ;
8596
8697 if ( CreationTime is not null )
87- yield return new MagickDefine ( Format , "create-epoch" , ToUnixTimeSeconds ( CreationTime . Value ) ) ;
98+ yield return new MagickDefine ( MagickFormat . Pdf , "create-epoch" , ToUnixTimeSeconds ( CreationTime . Value ) ) ;
8899
89100 if ( Creator ? . Length > 0 )
90- yield return new MagickDefine ( Format , "creator" , Creator ) ;
101+ yield return new MagickDefine ( MagickFormat . Pdf , "creator" , Creator ) ;
91102
92103 if ( Keywords ? . Length > 0 )
93- yield return new MagickDefine ( Format , "keywords" , Keywords ) ;
104+ yield return new MagickDefine ( MagickFormat . Pdf , "keywords" , Keywords ) ;
94105
95106 if ( ModificationTime is not null )
96- yield return new MagickDefine ( Format , "modify-epoch" , ToUnixTimeSeconds ( ModificationTime . Value ) ) ;
107+ yield return new MagickDefine ( MagickFormat . Pdf , "modify-epoch" , ToUnixTimeSeconds ( ModificationTime . Value ) ) ;
97108
98109 if ( NoIdentifier == true )
99- yield return new MagickDefine ( Format , "no-identifier" , NoIdentifier . Value ) ;
110+ yield return new MagickDefine ( MagickFormat . Pdf , "no-identifier" , NoIdentifier . Value ) ;
100111
101112 if ( Producer ? . Length > 0 )
102- yield return new MagickDefine ( Format , "producer" , Producer ) ;
113+ yield return new MagickDefine ( MagickFormat . Pdf , "producer" , Producer ) ;
103114
104115 if ( Subject ? . Length > 0 )
105- yield return new MagickDefine ( Format , "subject" , Subject ) ;
116+ yield return new MagickDefine ( MagickFormat . Pdf , "subject" , Subject ) ;
106117
107118 if ( Thumbnail . HasValue )
108- yield return new MagickDefine ( Format , "thumbnail" , Thumbnail . Value ) ;
119+ yield return new MagickDefine ( MagickFormat . Pdf , "thumbnail" , Thumbnail . Value ) ;
109120
110121 if ( Version . HasValue )
111- yield return new MagickDefine ( Format , "version" , Version . Value . ToString ( ".0" , CultureInfo . InvariantCulture ) ) ;
122+ yield return new MagickDefine ( MagickFormat . Pdf , "version" , Version . Value . ToString ( ".0" , CultureInfo . InvariantCulture ) ) ;
112123
113124 if ( Title ? . Length > 0 )
114- yield return new MagickDefine ( Format , "title" , Title ) ;
125+ yield return new MagickDefine ( MagickFormat . Pdf , "title" , Title ) ;
115126 }
116127 }
117128
129+ private static MagickFormat CheckFormat ( MagickFormat format )
130+ {
131+ if ( ! AllowedFormats . Contains ( format ) )
132+ throw new ArgumentException ( "The specified format is not a pdf format." , nameof ( format ) ) ;
133+
134+ return format ;
135+ }
136+
118137 private static long ToUnixTimeSeconds ( DateTime value )
119138 {
120139 var dateTimeOffset = ( DateTimeOffset ) value . ToUniversalTime ( ) ;
0 commit comments