// [C11] Output intents /** * Sets the values of the output intent dictionary. Null values are allowed to * suppress any key. * @param outputConditionIdentifier a value * @param outputCondition a value * @param registryName a value * @param info a value * @param destOutputProfile a value * @throws IOException on error */ public void SetOutputIntents(String outputConditionIdentifier, String outputCondition, String registryName, String info, ICC_Profile colorProfile) { PdfDictionary outa = ExtraCatalog; //force the creation outa = new PdfDictionary(PdfName.OUTPUTINTENT); if (outputCondition != null) outa.Put(PdfName.OUTPUTCONDITION, new PdfString(outputCondition, PdfObject.TEXT_UNICODE)); if (outputConditionIdentifier != null) outa.Put(PdfName.OUTPUTCONDITIONIDENTIFIER, new PdfString(outputConditionIdentifier, PdfObject.TEXT_UNICODE)); if (registryName != null) outa.Put(PdfName.REGISTRYNAME, new PdfString(registryName, PdfObject.TEXT_UNICODE)); if (info != null) outa.Put(PdfName.INFO, new PdfString(info, PdfObject.TEXT_UNICODE)); if (colorProfile != null) { PdfStream stream = new PdfICCBased(colorProfile, compressionLevel); outa.Put(PdfName.DESTOUTPUTPROFILE, AddToBody(stream).IndirectReference); } PdfName intentSubtype; if (pdfxConformance.IsPdfA1() || "PDFA/1".Equals(outputCondition)) { intentSubtype = PdfName.GTS_PDFA1; } else { intentSubtype = PdfName.GTS_PDFX; } outa.Put(PdfName.S, intentSubtype); extraCatalog.Put(PdfName.OUTPUTINTENTS, new PdfArray(outa)); }
protected virtual PdfIndirectReference Add(PdfICCBased icc) { PdfIndirectObject objecta; objecta = AddToBody(icc); return objecta.IndirectReference; }
/** * Adds an image to the document but not to the page resources. It is used with * templates and <CODE>Document.Add(Image)</CODE>. * @param image the <CODE>Image</CODE> to add * @param fixedRef the reference to used. It may be <CODE>null</CODE>, * a <CODE>PdfIndirectReference</CODE> or a <CODE>PRIndirectReference</CODE>. * @return the name of the image added * @throws PdfException on error * @throws DocumentException on error */ public PdfName AddDirectImageSimple(Image image, PdfIndirectReference fixedRef) { PdfName name; // if the images is already added, just retrieve the name if (images.ContainsKey(image.MySerialId)) { name = (PdfName) images[image.MySerialId]; } // if it's a new image, add it to the document else { if (image.IsImgTemplate()) { name = new PdfName("img" + images.Count); if (image is ImgWMF){ ImgWMF wmf = (ImgWMF)image; wmf.ReadWMF(PdfTemplate.CreateTemplate(this, 0, 0)); } } else { PdfIndirectReference dref = image.DirectReference; if (dref != null) { PdfName rname = new PdfName("img" + images.Count); images[image.MySerialId] = rname; imageDictionary.Put(rname, dref); return rname; } Image maskImage = image.ImageMask; PdfIndirectReference maskRef = null; if (maskImage != null) { PdfName mname = (PdfName)images[maskImage.MySerialId]; maskRef = GetImageReference(mname); } PdfImage i = new PdfImage(image, "img" + images.Count, maskRef); if (image is ImgJBIG2) { byte[] globals = ((ImgJBIG2) image).GlobalBytes; if (globals != null) { PdfDictionary decodeparms = new PdfDictionary(); decodeparms.Put(PdfName.JBIG2GLOBALS, GetReferenceJBIG2Globals(globals)); i.Put(PdfName.DECODEPARMS, decodeparms); } } if (image.HasICCProfile()) { PdfICCBased icc = new PdfICCBased(image.TagICC, image.CompressionLevel); PdfIndirectReference iccRef = Add(icc); PdfArray iccArray = new PdfArray(); iccArray.Add(PdfName.ICCBASED); iccArray.Add(iccRef); PdfArray colorspace = i.GetAsArray(PdfName.COLORSPACE); if (colorspace != null) { if (colorspace.Size > 1 && PdfName.INDEXED.Equals(colorspace[0])) colorspace[1] = iccArray; else i.Put(PdfName.COLORSPACE, iccArray); } else i.Put(PdfName.COLORSPACE, iccArray); } Add(i, fixedRef); name = i.Name; } images[image.MySerialId] = name; } return name; }