iTextSharp.text.pdf.PdfDictionary.GetAsBoolean C# (CSharp) Method

GetAsBoolean() public method

public GetAsBoolean ( PdfName key ) : PdfBoolean
key PdfName
return PdfBoolean
        public PdfBoolean GetAsBoolean(PdfName key)
        {
            PdfBoolean b = null;
            PdfObject orig = GetDirectObject(key);
            if (orig != null && orig.IsBoolean())
                b = (PdfBoolean)orig;
            return b;
        }

Usage Example

Esempio n. 1
0
            public byte[] Decode(byte[] b, PdfName filterName, PdfObject decodeParams, PdfDictionary streamDictionary)
            {
                PdfNumber wn = (PdfNumber)PdfReader.GetPdfObjectRelease(streamDictionary.Get(PdfName.WIDTH));
                PdfNumber hn = (PdfNumber)PdfReader.GetPdfObjectRelease(streamDictionary.Get(PdfName.HEIGHT));

                if (wn == null || hn == null)
                {
                    throw new UnsupportedPdfException(MessageLocalization.GetComposedMessage("filter.ccittfaxdecode.is.only.supported.for.images"));
                }
                int width  = wn.IntValue;
                int height = hn.IntValue;

                PdfDictionary param     = decodeParams is PdfDictionary ? (PdfDictionary)decodeParams : null;
                int           k         = 0;
                bool          blackIs1  = false;
                bool          byteAlign = false;

                if (param != null)
                {
                    PdfNumber kn = param.GetAsNumber(PdfName.K);
                    if (kn != null)
                    {
                        k = kn.IntValue;
                    }
                    PdfBoolean bo = param.GetAsBoolean(PdfName.BLACKIS1);
                    if (bo != null)
                    {
                        blackIs1 = bo.BooleanValue;
                    }
                    bo = param.GetAsBoolean(PdfName.ENCODEDBYTEALIGN);
                    if (bo != null)
                    {
                        byteAlign = bo.BooleanValue;
                    }
                }
                byte[] outBuf = new byte[(width + 7) / 8 * height];
                TIFFFaxDecompressor decoder = new TIFFFaxDecompressor();

                if (k == 0 || k > 0)
                {
                    int tiffT4Options = k > 0 ? TIFFConstants.GROUP3OPT_2DENCODING : 0;
                    tiffT4Options |= byteAlign ? TIFFConstants.GROUP3OPT_FILLBITS : 0;
                    decoder.SetOptions(1, TIFFConstants.COMPRESSION_CCITTFAX3, tiffT4Options, 0);
                    decoder.DecodeRaw(outBuf, b, width, height);
                    if (decoder.fails > 0)
                    {
                        byte[] outBuf2  = new byte[(width + 7) / 8 * height];
                        int    oldFails = decoder.fails;
                        decoder.SetOptions(1, TIFFConstants.COMPRESSION_CCITTRLE, tiffT4Options, 0);
                        decoder.DecodeRaw(outBuf2, b, width, height);
                        if (decoder.fails < oldFails)
                        {
                            outBuf = outBuf2;
                        }
                    }
                }
                else
                {
                    TIFFFaxDecoder deca = new TIFFFaxDecoder(1, width, height);
                    deca.DecodeT6(outBuf, b, 0, height, 0);
                }
                if (!blackIs1)
                {
                    int len = outBuf.Length;
                    for (int t = 0; t < len; ++t)
                    {
                        outBuf[t] ^= 0xff;
                    }
                }
                b = outBuf;
                return(b);
            }