public virtual float?GetAttributeAsFloat(String attributeName) { PdfName name = PdfStructTreeRoot.ConvertRoleToPdfName(attributeName); PdfNumber attrVal = GetPdfObject().GetAsNumber(name); return(attrVal != null ? (float?)attrVal.FloatValue() : (float?)null); }
private float InitHeightField() { PdfNumber hNum = GetPdfObject().GetAsNumber(PdfName.Height); if (hNum != null) { height = hNum.FloatValue(); } return(height); }
private float InitWidthField() { PdfNumber wNum = GetPdfObject().GetAsNumber(PdfName.Width); if (wNum != null) { width = wNum.FloatValue(); } return(width); }
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()); } } }
/// <summary> /// A non-negative number that represents the length of the leader line offset, which is the amount of empty space /// between the endpoints of the annotation and the beginning of the leader lines. /// </summary> /// <returns> /// a non-negative number that represents the length of the leader line offset, /// or null if leader line offset is not set. /// </returns> public virtual float GetLeaderLineOffset() { PdfNumber n = GetPdfObject().GetAsNumber(PdfName.LLO); return(n == null ? 0 : n.FloatValue()); }
/// <summary>Updates current graphic state with values from extended graphic state dictionary.</summary> /// <param name="extGState">the wrapper around the extended graphic state dictionary</param> /// <param name="pdfDocument">the document to retrieve fonts from. Needed when the newly created fonts are used /// </param> internal virtual void UpdateFromExtGState(PdfExtGState extGState, PdfDocument pdfDocument) { float?lw = extGState.GetLineWidth(); if (lw != null) { lineWidth = (float)lw; } int?lc = extGState.GetLineCapStyle(); if (lc != null) { lineCapStyle = (int)lc; } int?lj = extGState.GetLineJoinStyle(); if (lj != null) { lineJoinStyle = (int)lj; } float?ml = extGState.GetMiterLimit(); if (ml != null) { miterLimit = (float)ml; } PdfArray d = extGState.GetDashPattern(); if (d != null) { dashPattern = d; } PdfName ri = extGState.GetRenderingIntent(); if (ri != null) { renderingIntent = ri; } bool?op = extGState.GetStrokeOverprintFlag(); if (op != null) { strokeOverprint = (bool)op; } op = extGState.GetFillOverprintFlag(); if (op != null) { fillOverprint = (bool)op; } int?opm = extGState.GetOverprintMode(); if (opm != null) { overprintMode = (int)opm; } PdfArray fnt = extGState.GetFont(); if (fnt != null) { PdfDictionary fontDictionary = fnt.GetAsDictionary(0); if (this.font == null || this.font.GetPdfObject() != fontDictionary) { this.font = pdfDocument.GetFont(fontDictionary); } PdfNumber fntSz = fnt.GetAsNumber(1); if (fntSz != null) { this.fontSize = fntSz.FloatValue(); } } PdfObject bg = extGState.GetBlackGenerationFunction(); if (bg != null) { blackGenerationFunction = bg; } PdfObject bg2 = extGState.GetBlackGenerationFunction2(); if (bg2 != null) { blackGenerationFunction2 = bg2; } PdfObject ucr = extGState.GetUndercolorRemovalFunction(); if (ucr != null) { underColorRemovalFunction = ucr; } PdfObject ucr2 = extGState.GetUndercolorRemovalFunction2(); if (ucr2 != null) { underColorRemovalFunction2 = ucr2; } PdfObject tr = extGState.GetTransferFunction(); if (tr != null) { transferFunction = tr; } PdfObject tr2 = extGState.GetTransferFunction2(); if (tr2 != null) { transferFunction2 = tr2; } PdfObject ht = extGState.GetHalftone(); if (ht != null) { halftone = ht; } PdfObject local_htp = extGState.GetPdfObject().Get(PdfName.HTP); if (local_htp != null) { this.htp = local_htp; } float?fl = extGState.GetFlatnessTolerance(); if (fl != null) { flatnessTolerance = (float)fl; } float?sm = extGState.GetSmothnessTolerance(); if (sm != null) { smoothnessTolerance = sm; } bool?sa = extGState.GetAutomaticStrokeAdjustmentFlag(); if (sa != null) { automaticStrokeAdjustment = (bool)sa; } PdfObject bm = extGState.GetBlendMode(); if (bm != null) { blendMode = bm; } PdfObject sMask = extGState.GetSoftMask(); if (sMask != null) { softMask = sMask; } float?ca = extGState.GetStrokeOpacity(); if (ca != null) { strokeAlpha = (float)ca; } ca = extGState.GetFillOpacity(); if (ca != null) { fillAlpha = (float)ca; } bool?ais = extGState.GetAlphaSourceFlag(); if (ais != null) { alphaIsShape = (bool)ais; } bool?tk = extGState.GetTextKnockoutFlag(); if (tk != null) { textKnockout = (bool)tk; } }
public virtual float?GetValueAsFloat() { PdfNumber num = GetPdfObject().GetAsNumber(PdfName.V); return(num != null ? (float?)num.FloatValue() : (float?)null); }
public void OneFile_LinksToTheNextFile_UpdatesLink(string exeFileName) { HtmlToPdfRunner runner = new HtmlToPdfRunner(exeFileName); string htmlFile2Contents = @" <html> <head> </head> <body> Page 2 </body> </html>"; using (TempHtmlFile htmlFile2 = new TempHtmlFile(htmlFile2Contents)) { string htmlFile1Contents = $@" <html> <head> </head> <body> Page 1 <br/> <a href=""{htmlFile2.FilePath}"">Page 2</a> </body> </html>"; using (TempHtmlFile htmlFile1 = new TempHtmlFile(htmlFile1Contents)) { using (TempPdfFile pdfFile = new TempPdfFile(this.TestContext)) { string commandLine = $"\"{htmlFile1.FilePath}\" \"{htmlFile2.FilePath}\" \"{pdfFile.FilePath}\""; HtmlToPdfRunResult result = runner.Run(commandLine); Assert.AreEqual(0, result.ExitCode, result.Output); using (PdfReader pdfReader = new PdfReader(pdfFile.FilePath)) { using (PdfDocument pdfDocument = new PdfDocument(pdfReader)) { Assert.AreEqual(2, pdfDocument.GetNumberOfPages()); // get the first page PdfPage pdfPage = pdfDocument.GetPage(1); // get link annotations List <PdfLinkAnnotation> linkAnnotations = pdfPage.GetAnnotations().OfType <PdfLinkAnnotation>().ToList(); Assert.AreEqual(1, linkAnnotations.Count); // get the first link annotation PdfLinkAnnotation linkAnnotation = linkAnnotations.ElementAt(0); Assert.IsNotNull(linkAnnotation); // get action PdfDictionary action = linkAnnotation.GetAction(); Assert.IsNotNull(action); // get GoTo sub-type PdfName s = action.GetAsName(PdfName.S); if (exeFileName == HtmlToPdfRunner.HtmlToPdfExe) { Assert.AreEqual(PdfName.GoTo, s); // get destination PdfArray destination = action.GetAsArray(PdfName.D); PdfIndirectReference destinationPageReference = destination.GetAsDictionary(0).GetIndirectReference(); PdfName zoom = destination.GetAsName(1); PdfNumber pageOffset = destination.GetAsNumber(2); // get expected values PdfPage pdfPage2 = pdfDocument.GetPage(2); PdfDictionary page2Dictionary = pdfPage2.GetPdfObject(); PdfIndirectReference expectedPageReference = page2Dictionary.GetIndirectReference(); PdfName expectedZoom = PdfName.FitH; float expectedPageOffset = pdfPage2.GetPageSize().GetTop(); // assert Assert.AreEqual(expectedPageReference, destinationPageReference); Assert.AreEqual(expectedZoom, zoom); Assert.AreEqual(expectedPageOffset, pageOffset.FloatValue()); } else if (exeFileName == HtmlToPdfRunner.WkhtmltopdfExe) { Assert.AreEqual(PdfName.URI, s); PdfString uri = action.GetAsString(PdfName.URI); Assert.AreEqual(htmlFile2.FilePath, HttpUtility.UrlDecode(uri.ToString())); } } } } } } }