/// <summary>Get the marked content id of the tag.</summary> /// <returns>marked content id</returns> /// <exception cref="System.InvalidOperationException">if there is no MCID</exception> public virtual int GetMcid() { int mcid = -1; if (properties != null) { mcid = (int)properties.GetAsInt(PdfName.MCID); } if (mcid == -1) { throw new InvalidOperationException("CanvasTag has no MCID"); } return(mcid); }
protected internal override void CheckAnnotation(PdfDictionary annotDic) { PdfName subtype = annotDic.GetAsName(PdfName.Subtype); if (subtype == null) { throw new PdfAConformanceException(PdfAConformanceException.AnnotationType1IsNotPermitted).SetMessageParams ("null"); } if (forbiddenAnnotations.Contains(subtype)) { throw new PdfAConformanceException(PdfAConformanceException.AnnotationType1IsNotPermitted).SetMessageParams (subtype.GetValue()); } PdfNumber ca = annotDic.GetAsNumber(PdfName.CA); if (ca != null && ca.FloatValue() != 1.0) { throw new PdfAConformanceException(PdfAConformanceException.AnAnnotationDictionaryShallNotContainTheCaKeyWithAValueOtherThan1 ); } if (!annotDic.ContainsKey(PdfName.F)) { throw new PdfAConformanceException(PdfAConformanceException.AnnotationShallContainKeyF); } int flags = (int)annotDic.GetAsInt(PdfName.F); if (!CheckFlag(flags, PdfAnnotation.PRINT) || CheckFlag(flags, PdfAnnotation.HIDDEN) || CheckFlag(flags, PdfAnnotation .INVISIBLE) || CheckFlag(flags, PdfAnnotation.NO_VIEW)) { throw new PdfAConformanceException(PdfAConformanceException.TheFKeysPrintFlagBitShallBeSetTo1AndItsHiddenInvisibleAndNoviewFlagBitsShallBeSetTo0 ); } if (subtype.Equals(PdfName.Text) && (!CheckFlag(flags, PdfAnnotation.NO_ZOOM) || !CheckFlag(flags, PdfAnnotation .NO_ROTATE))) { throw new PdfAConformanceException(PdfAConformanceException.TextAnnotationsShouldSetTheNozoomAndNorotateFlagBitsOfTheFKeyTo1 ); } if (annotDic.ContainsKey(PdfName.C) || annotDic.ContainsKey(PdfName.IC)) { if (!ICC_COLOR_SPACE_RGB.Equals(pdfAOutputIntentColorSpace)) { throw new PdfAConformanceException(PdfAConformanceException.DestoutputprofileInThePdfa1OutputintentDictionaryShallBeRgb ); } } PdfDictionary ap = annotDic.GetAsDictionary(PdfName.AP); if (ap != null) { if (ap.ContainsKey(PdfName.D) || ap.ContainsKey(PdfName.R)) { throw new PdfAConformanceException(PdfAConformanceException.AppearanceDictionaryShallContainOnlyTheNKeyWithStreamValue ); } PdfStream n = ap.GetAsStream(PdfName.N); if (n == null) { throw new PdfAConformanceException(PdfAConformanceException.AppearanceDictionaryShallContainOnlyTheNKeyWithStreamValue ); } CheckResourcesOfAppearanceStreams(ap); } if (PdfName.Widget.Equals(subtype) && (annotDic.ContainsKey(PdfName.AA) || annotDic.ContainsKey(PdfName.A) )) { throw new PdfAConformanceException(PdfAConformanceException.WidgetAnnotationDictionaryOrFieldDictionaryShallNotIncludeAOrAAEntry ); } if (annotDic.ContainsKey(PdfName.AA)) { throw new PdfAConformanceException(PdfAConformanceException.AnAnnotationDictionaryShallNotContainAAKey); } if (CheckStructure(conformanceLevel)) { if (contentAnnotations.Contains(subtype) && !annotDic.ContainsKey(PdfName.Contents)) { throw new PdfAConformanceException(PdfAConformanceException.AnnotationOfType1ShouldHaveContentsKey).SetMessageParams (subtype); } } }
protected internal override void CheckAnnotation(PdfDictionary annotDic) { PdfName subtype = annotDic.GetAsName(PdfName.Subtype); if (subtype == null) { throw new PdfAConformanceException(PdfAConformanceException.ANNOTATION_TYPE_0_IS_NOT_PERMITTED).SetMessageParams ("null"); } if (forbiddenAnnotations.Contains(subtype)) { throw new PdfAConformanceException(PdfAConformanceException.ANNOTATION_TYPE_0_IS_NOT_PERMITTED).SetMessageParams (subtype.GetValue()); } PdfNumber ca = annotDic.GetAsNumber(PdfName.CA); if (ca != null && ca.FloatValue() != 1.0) { throw new PdfAConformanceException(PdfAConformanceException.AN_ANNOTATION_DICTIONARY_SHALL_NOT_CONTAIN_THE_CA_KEY_WITH_A_VALUE_OTHER_THAN_1 ); } if (!annotDic.ContainsKey(PdfName.F)) { throw new PdfAConformanceException(PdfAConformanceException.AN_ANNOTATION_DICTIONARY_SHALL_CONTAIN_THE_F_KEY ); } int flags = (int)annotDic.GetAsInt(PdfName.F); if (!CheckFlag(flags, PdfAnnotation.PRINT) || CheckFlag(flags, PdfAnnotation.HIDDEN) || CheckFlag(flags, PdfAnnotation .INVISIBLE) || CheckFlag(flags, PdfAnnotation.NO_VIEW)) { throw new PdfAConformanceException(PdfAConformanceException.THE_F_KEYS_PRINT_FLAG_BIT_SHALL_BE_SET_TO_1_AND_ITS_HIDDEN_INVISIBLE_AND_NOVIEW_FLAG_BITS_SHALL_BE_SET_TO_0 ); } if (subtype.Equals(PdfName.Text) && (!CheckFlag(flags, PdfAnnotation.NO_ZOOM) || !CheckFlag(flags, PdfAnnotation .NO_ROTATE))) { throw new PdfAConformanceException(PdfAConformanceLogMessageConstant.TEXT_ANNOTATIONS_SHOULD_SET_THE_NOZOOM_AND_NOROTATE_FLAG_BITS_OF_THE_F_KEY_TO_1 ); } if (annotDic.ContainsKey(PdfName.C) || annotDic.ContainsKey(PdfName.IC)) { if (!ICC_COLOR_SPACE_RGB.Equals(pdfAOutputIntentColorSpace)) { throw new PdfAConformanceException(PdfAConformanceException.DESTOUTPUTPROFILE_IN_THE_PDFA1_OUTPUTINTENT_DICTIONARY_SHALL_BE_RGB ); } } PdfDictionary ap = annotDic.GetAsDictionary(PdfName.AP); if (ap != null) { if (ap.ContainsKey(PdfName.D) || ap.ContainsKey(PdfName.R)) { throw new PdfAConformanceException(PdfAConformanceException.APPEARANCE_DICTIONARY_SHALL_CONTAIN_ONLY_THE_N_KEY_WITH_STREAM_VALUE ); } PdfStream n = ap.GetAsStream(PdfName.N); if (n == null) { throw new PdfAConformanceException(PdfAConformanceException.APPEARANCE_DICTIONARY_SHALL_CONTAIN_ONLY_THE_N_KEY_WITH_STREAM_VALUE ); } CheckResourcesOfAppearanceStreams(ap); } if (PdfName.Widget.Equals(subtype) && (annotDic.ContainsKey(PdfName.AA) || annotDic.ContainsKey(PdfName.A) )) { throw new PdfAConformanceException(PdfAConformanceException.WIDGET_ANNOTATION_DICTIONARY_OR_FIELD_DICTIONARY_SHALL_NOT_INCLUDE_A_OR_AA_ENTRY ); } if (annotDic.ContainsKey(PdfName.AA)) { throw new PdfAConformanceException(PdfAConformanceException.AN_ANNOTATION_DICTIONARY_SHALL_NOT_CONTAIN_AA_KEY ); } if (CheckStructure(conformanceLevel)) { if (contentAnnotations.Contains(subtype) && !annotDic.ContainsKey(PdfName.Contents)) { throw new PdfAConformanceException(PdfAConformanceException.ANNOTATION_OF_TYPE_0_SHOULD_HAVE_CONTENTS_KEY) .SetMessageParams(subtype.GetValue()); } } }
private int GetKeyLength(PdfDictionary encryptionDict) { int?keyLength = encryptionDict.GetAsInt(PdfName.Length); return(keyLength != null ? (int)keyLength : 40); }
internal static TrueTypeFont CreateFontProgram(PdfDictionary fontDictionary, CMapToUnicode toUnicode) { iText.Kernel.Font.DocTrueTypeFont fontProgram = new iText.Kernel.Font.DocTrueTypeFont(fontDictionary); PdfDictionary fontDescriptor = fontDictionary.GetAsDictionary(PdfName.FontDescriptor); FillFontDescriptor(fontProgram, fontDescriptor); int dw = (fontDescriptor != null && fontDescriptor.ContainsKey(PdfName.DW)) ? (int)fontDescriptor.GetAsInt (PdfName.DW) : 1000; if (toUnicode != null) { IntHashtable widths = FontUtil.ConvertCompositeWidthsArray(fontDictionary.GetAsArray(PdfName.W)); fontProgram.avgWidth = 0; foreach (int cid in toUnicode.GetCodes()) { int width = widths.ContainsKey(cid) ? widths.Get(cid) : dw; Glyph glyph = new Glyph(cid, width, toUnicode.Lookup(cid)); if (glyph.HasValidUnicode()) { fontProgram.unicodeToGlyph[glyph.GetUnicode()] = glyph; } fontProgram.codeToGlyph[cid] = glyph; fontProgram.avgWidth += width; } if (fontProgram.codeToGlyph.Count != 0) { fontProgram.avgWidth /= fontProgram.codeToGlyph.Count; } } if (fontProgram.codeToGlyph.Get(0) == null) { fontProgram.codeToGlyph[0] = new Glyph(0, dw, -1); } return(fontProgram); }