Exemplo n.º 1
0
        public bool Open(string filename, string password)
        {
            if (!string.IsNullOrEmpty(_fileName) && useLock && _fileName.Equals(filename))
            {
                if (mp == null)
                {
                    _pass = password;
                    mp    = new MuPDF(_fileName, _pass, !useLock);
                }
                return(mp != null);
            }
            _fileName = filename;
            _pass     = password;
            if (!string.IsNullOrEmpty(_fileName))
            {
                mp = new MuPDF(_fileName, _pass, !useLock);
            }
            bool ret = mp != null;

            if (!useLock && mp != null)
            {
                mp.Dispose();
                mp = null;
            }
            return(ret);
        }
Exemplo n.º 2
0
        public PDF(string fileName) : base(fileName)
        {
            MuPDF pdf = null;

            pdf       = new MuPDF(fileName, "");
            pageCount = pdf.PageCount;
            if (pageCount < 1)
            {
                throw new Exception("Could not open PDF.");
            }
            pdf.Dispose();
        }
Exemplo n.º 3
0
        /// <summary>
        /// Disposeable pattern.
        /// </summary>
        /// <param name="dispose">Whether to release managed resources.</param>
        protected virtual void Dispose(bool dispose)
        {
            if (_disposed)
            {
                return;
            }

            if (dispose)
            {
                _mupdf.Dispose();
            }

            _disposed = true;
        }
Exemplo n.º 4
0
        public override Bitmap LoadPage(int pageNumber)
        {
            if (!File.Exists(fileName))
            {
                throw new Exception("File does not exist.");
            }

            if (bmp != null)
            {
                bmp.Dispose();
            }

            var pdf = new MuPDF(fileName, "");

            pdf.Page      = pageNumber;
            pdf.AntiAlias = true;

            int width  = (int)(pdf.Width * resolution / 72.0F);
            int height = (int)(pdf.Height * resolution / 72.0F);

            int estMemUsageMB = (int)Math.Ceiling(width * height * 3.0 / 1024 / 1024);

            Debug.WriteLine("Estimated memory {0} MB", estMemUsageMB);
            System.Runtime.MemoryFailPoint mfp = null;
            try
            {
                mfp = new System.Runtime.MemoryFailPoint(estMemUsageMB);
                bmp = pdf.GetBitmap(width, height, 72, 72, 0, RenderType.RGB, false, false, 0);
            }
            catch (InsufficientMemoryException)
            {
                throw new Exception("Not enough memory.");
            }
            finally
            {
                mfp.Dispose();
                pdf.Dispose();
            }

            return(bmp);
        }