IsOpen() публичный Метод

public IsOpen ( ) : bool
Результат bool
Пример #1
0
        public override void ToPdf(PdfWriter writer, Stream os)
        {
            SuperToPdf(writer, os);
            os.Write(STARTSTREAM, 0, STARTSTREAM.Length);
            if (length > 0)
            {
                PdfEncryption crypto = null;
                if (writer != null)
                {
                    crypto = writer.Encryption;
                }
                if (offset < 0)
                {
                    if (crypto == null)
                    {
                        os.Write(bytes, 0, bytes.Length);
                    }
                    else
                    {
                        crypto.PrepareKey();
                        byte[] buf = new byte[length];
                        crypto.EncryptRC4(bytes, buf);
                        os.Write(buf, 0, buf.Length);
                    }
                }
                else
                {
                    byte[] buf = new byte[Math.Min(length, 4092)];
                    RandomAccessFileOrArray file = writer.GetReaderFile(reader);
                    bool isOpen = file.IsOpen();
                    try {
                        file.Seek(offset);
                        int size = length;

                        //added by ujihara for decryption
                        PdfEncryption decrypt = reader.Decrypt;
                        if (decrypt != null)
                        {
                            decrypt.SetHashKey(objNum, objGen);
                            decrypt.PrepareKey();
                        }

                        if (crypto != null)
                        {
                            crypto.PrepareKey();
                        }
                        while (size > 0)
                        {
                            int r = file.Read(buf, 0, Math.Min(size, buf.Length));
                            size -= r;

                            if (decrypt != null)
                            {
                                decrypt.EncryptRC4(buf, 0, r); //added by ujihara for decryption
                            }
                            if (crypto != null)
                            {
                                crypto.EncryptRC4(buf, 0, r);
                            }
                            os.Write(buf, 0, r);
                        }
                    }
                    finally {
                        if (!isOpen)
                        {
                            try{ file.Close(); }catch {}
                        }
                    }
                }
            }
            os.Write(ENDSTREAM, 0, ENDSTREAM.Length);
        }