public static void CheckPDFXConformance(PdfWriter writer, int key, Object obj1)
{
if (writer == null || !writer.IsPdfX())
return;
int conf = writer.PDFXConformance;
switch (key) {
case PdfIsoKeys.PDFISOKEY_COLOR:
switch (conf) {
case PdfWriter.PDFX1A2001:
if (obj1 is ExtendedColor) {
ExtendedColor ec = (ExtendedColor)obj1;
switch (ec.Type) {
case ExtendedColor.TYPE_CMYK:
case ExtendedColor.TYPE_GRAY:
return;
case ExtendedColor.TYPE_RGB:
throw new PdfXConformanceException(MessageLocalization.GetComposedMessage("colorspace.rgb.is.not.allowed"));
case ExtendedColor.TYPE_SEPARATION:
SpotColor sc = (SpotColor)ec;
CheckPDFXConformance(writer, PdfIsoKeys.PDFISOKEY_COLOR, sc.PdfSpotColor.AlternativeCS);
break;
case ExtendedColor.TYPE_SHADING:
ShadingColor xc = (ShadingColor)ec;
CheckPDFXConformance(writer, PdfIsoKeys.PDFISOKEY_COLOR, xc.PdfShadingPattern.Shading.ColorSpace);
break;
case ExtendedColor.TYPE_PATTERN:
PatternColor pc = (PatternColor)ec;
CheckPDFXConformance(writer, PdfIsoKeys.PDFISOKEY_COLOR, pc.Painter.DefaultColor);
break;
}
}
else if (obj1 is BaseColor)
throw new PdfXConformanceException(MessageLocalization.GetComposedMessage("colorspace.rgb.is.not.allowed"));
break;
}
break;
case PdfIsoKeys.PDFISOKEY_CMYK:
break;
case PdfIsoKeys.PDFISOKEY_RGB:
if (conf == PdfWriter.PDFX1A2001)
throw new PdfXConformanceException(MessageLocalization.GetComposedMessage("colorspace.rgb.is.not.allowed"));
break;
case PdfIsoKeys.PDFISOKEY_FONT:
if (!((BaseFont)obj1).IsEmbedded())
throw new PdfXConformanceException(MessageLocalization.GetComposedMessage("all.the.fonts.must.be.embedded.this.one.isn.t.1", ((BaseFont)obj1).PostscriptFontName));
break;
case PdfIsoKeys.PDFISOKEY_IMAGE:
PdfImage image = (PdfImage)obj1;
if (image.Get(PdfName.SMASK) != null)
throw new PdfXConformanceException(MessageLocalization.GetComposedMessage("the.smask.key.is.not.allowed.in.images"));
switch (conf) {
case PdfWriter.PDFX1A2001:
PdfObject cs = image.Get(PdfName.COLORSPACE);
if (cs == null)
return;
if (cs.IsName()) {
if (PdfName.DEVICERGB.Equals(cs))
throw new PdfXConformanceException(MessageLocalization.GetComposedMessage("colorspace.rgb.is.not.allowed"));
}
else if (cs.IsArray()) {
if (PdfName.CALRGB.Equals(((PdfArray)cs)[0]))
throw new PdfXConformanceException(MessageLocalization.GetComposedMessage("colorspace.calrgb.is.not.allowed"));
}
break;
}
break;
case PdfIsoKeys.PDFISOKEY_GSTATE:
PdfDictionary gs = (PdfDictionary)obj1;
PdfObject obj = gs.Get(PdfName.BM);
if (obj != null && !PdfGState.BM_NORMAL.Equals(obj) && !PdfGState.BM_COMPATIBLE.Equals(obj))
throw new PdfXConformanceException(MessageLocalization.GetComposedMessage("blend.mode.1.not.allowed", obj.ToString()));
obj = gs.Get(PdfName.CA);
double v = 0.0;
if (obj != null && (v = ((PdfNumber)obj).DoubleValue) != 1.0)
throw new PdfXConformanceException(MessageLocalization.GetComposedMessage("transparency.is.not.allowed.ca.eq.1", v));
obj = gs.Get(PdfName.ca_);
v = 0.0;
if (obj != null && (v = ((PdfNumber)obj).DoubleValue) != 1.0)
throw new PdfXConformanceException(MessageLocalization.GetComposedMessage("transparency.is.not.allowed.ca.eq.1", v));
break;
case PdfIsoKeys.PDFISOKEY_LAYER:
throw new PdfXConformanceException(MessageLocalization.GetComposedMessage("layers.are.not.allowed"));
}
}