private Bitmap renPdfToBitmap(CACodecTools caTool, string pageFile, byte[] key, int pg, int dpi, float scal, int decodedPageIndex, Border border, bool isSinglePage)
        {
            System.Drawing.Color white = System.Drawing.Color.White;
            Bitmap aBitmap             = null;

            try
            {
                if (decodedPDFPages[decodedPageIndex] == null)
                {
                    decodedPDFPages[decodedPageIndex] = caTool.fileAESDecode(pageFile, key);
                }
            }
            catch (Exception ex)
            {
                decodedPDFPages[decodedPageIndex] = null;
                LogTool.Debug(ex);
            }
            try
            {
                PDFDoc pDFDoc = new PDFDoc();
                pDFDoc.Init("PVD20-M4IRG-QYZK9-MNJ2U-DFTK1-MAJ4L", "PDFX3$Henry$300604_Allnuts#");
                pDFDoc.OpenFromMemory(decodedPDFPages[decodedPageIndex], (uint)decodedPDFPages[decodedPageIndex].Length, 0);
                PXCV_Lib36.PXV_CommonRenderParameters aCommonRenderParams = prepareCommonRenderParameter(pDFDoc, dpi, pg, scal, 0, 0, border, isSinglePage);
                pDFDoc.DrawPageToDIBSection(IntPtr.Zero, pg, white, aCommonRenderParams, out aBitmap);
                pDFDoc.ReleasePageCachedData(pg, 1);
                pDFDoc.Delete();
                return(aBitmap);
            }
            catch (Exception ex2)
            {
                LogTool.Debug(ex2);
                return(aBitmap);
            }
        }
Ejemplo n.º 2
0
        private BitmapImage getHEJDoubleBitmapImage(CACodecTools caTool, byte[] curKey)
        {
            BitmapImage bitmapImage = new BitmapImage();

            try
            {
                using (MemoryStream bMapLeft = caTool.fileAESDecode(leftImagePath, curKey, false))
                {
                    using (MemoryStream bMapRight = caTool.fileAESDecode(rightImagePath, curKey, false))
                    {
                        //雙頁
                        System.Drawing.Bitmap image1 = new Bitmap(bMapLeft);
                        System.Drawing.Bitmap image2 = new Bitmap(bMapRight);

                        int mergeWidth  = Convert.ToInt32(image1.Width + image2.Width);
                        int mergeHeight = Convert.ToInt32(Math.Max(image1.Height, image2.Height));

                        Bitmap bitmap = new Bitmap(mergeWidth, mergeHeight);
                        using (Graphics g = Graphics.FromImage(bitmap))
                        {
                            g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
                            g.DrawImage(image1, 0, 0, image1.Width, image1.Height);
                            g.DrawImage(image2, image1.Width, 0, image2.Width, image2.Height);
                            g.Dispose();
                        }

                        using (MemoryStream memory = new MemoryStream())
                        {
                            bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Bmp);
                            //memory.Position = 0;
                            bitmapImage.BeginInit();
                            bitmapImage.StreamSource = memory;
                            bitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
                            bitmapImage.EndInit();
                            bitmapImage.CacheOption = BitmapCacheOption.None;
                            bitmapImage.StreamSource.Close();
                            bitmapImage.StreamSource = null;
                            bitmapImage.Freeze();
                            memory.Dispose();
                            memory.Close();
                            bitmap.Dispose();
                            bitmap = null;
                        }

                        bMapLeft.Dispose();
                        bMapLeft.Close();
                        bMapRight.Dispose();
                        bMapRight.Close();
                        image1 = null;
                        image2 = null;
                    }
                }
            }
            catch (Exception e)
            {
                //TODO: 萬一檔案解析失敗, 判定為壞檔, 重新下載
                throw e;
            }
            return(bitmapImage);
        }
Ejemplo n.º 3
0
 public void createLargePHEJBitmapImage(CACodecTools caTool, byte[] curKey, Border border, bool isSinglePage)
 {
     if (leftImagePath.Length > 0)
     {
         if (rightImagePath.Length > 0)
         {
             //左右都有圖
             this.leftImageSourceRendered += leftimageSourceRendered;
             Thread thread = new Thread(() => getPHEJDoubleBitmapImageAsync(caTool, curKey, leftImagePath, rightImagePath, PDFScale, leftPageIndex, border, leftimageSourceRendered, isSinglePage));
             thread.Name = PDFScale.ToString();
             thread.Start();
             isRendering = true;
         }
         else
         {
             //只有左圖
             this.leftImageSourceRendered += leftimageSourceRendered;
             Thread thread = new Thread(() => getPHEJSingleBitmapImageAsync(caTool, curKey, leftImagePath, PDFScale, leftPageIndex, border, leftimageSourceRendered, isSinglePage));
             thread.Name = PDFScale.ToString();
             thread.Start();
             isRendering = true;
         }
     }
     else if (rightImagePath.Length > 0)
     {
         //只有右圖
         this.rightImageSourceRendered += rightimageSourceRendered;
         Thread thread = new Thread(() => getPHEJSingleBitmapImageAsync(caTool, curKey, rightImagePath, PDFScale, leftPageIndex, border, leftimageSourceRendered, isSinglePage));
         thread.Name = PDFScale.ToString();
         thread.Start();
         isRendering = true;
     }
 }
        private BitmapImage getHEJSingleBitmapImage(CACodecTools caTool, byte[] curKey)
        {
            BitmapImage bitmapImage = new BitmapImage();

            try
            {
                using (MemoryStream memoryStream = caTool.fileAESDecode(leftImagePath, curKey, false))
                {
                    bitmapImage.BeginInit();
                    bitmapImage.StreamSource = memoryStream;
                    bitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
                    bitmapImage.EndInit();
                    bitmapImage.CacheOption = BitmapCacheOption.None;
                    bitmapImage.StreamSource.Close();
                    bitmapImage.StreamSource = null;
                    bitmapImage.Freeze();
                    memoryStream.Dispose();
                    memoryStream.Close();
                    return(bitmapImage);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 5
0
        private BitmapImage getHEJSingleBitmapImage(CACodecTools caTool, byte[] curKey)
        {
            BitmapImage bigBitmapImage = new BitmapImage();

            try
            {
                using (MemoryStream bMapLast = caTool.fileAESDecode(leftImagePath, curKey, false))
                {
                    //同時處理單頁以及雙頁資料
                    //單頁
                    bigBitmapImage.BeginInit();
                    bigBitmapImage.StreamSource = bMapLast;
                    bigBitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
                    bigBitmapImage.EndInit();
                    bigBitmapImage.CacheOption = BitmapCacheOption.None;
                    bigBitmapImage.StreamSource.Close();
                    bigBitmapImage.StreamSource = null;
                    bigBitmapImage.Freeze();

                    bMapLast.Dispose();
                    bMapLast.Close();
                }
            }
            catch (Exception e)
            {
                //TODO: 萬一檔案解析失敗, 判定為壞檔, 重新下載
                throw e;
            }
            return(bigBitmapImage);
        }
Ejemplo n.º 6
0
        private Bitmap a(CACodecTools A_0, string A_1, byte[] A_2, int A_3, int A_4, float A_5, int A_6, Border A_7, bool A_8)
        {
            System.Drawing.Color white = System.Drawing.Color.White;
            Bitmap aBitmap             = null;

            try
            {
                if (decodedPDFPages[A_6] == null)
                {
                    decodedPDFPages[A_6] = A_0.fileAESDecode(A_1, A_2);
                }
            }
            catch (Exception ex)
            {
                decodedPDFPages[A_6] = null;
                throw ex;
            }
            try
            {
                PDFDoc pDFDoc = new PDFDoc();
                pDFDoc.Init("PVD20-M4IRG-QYZK9-MNJ2U-DFTK1-MAJ4L", "PDFX3$Henry$300604_Allnuts#");
                pDFDoc.OpenFromMemory(decodedPDFPages[A_6], (uint)decodedPDFPages[A_6].Length, 0);
                PXCV_Lib36.PXV_CommonRenderParameters aCommonRenderParams = a(pDFDoc, A_4, A_3, A_5, 0, 0, A_7, A_8);
                pDFDoc.DrawPageToDIBSection(IntPtr.Zero, A_3, white, aCommonRenderParams, out aBitmap);
                pDFDoc.ReleasePageCachedData(A_3, 1);
                pDFDoc.Delete();
                return(aBitmap);
            }
            catch (Exception ex2)
            {
                throw ex2;
            }
        }
        private void getPHEJSingleBitmapImageAsync(CACodecTools caTool, byte[] curKey, string pagePath, float scal, int curPageIndex, Border border, EventHandler <imageSourceRenderedResultEventArgs> ImageSourceRendered, bool isSinglePage)
        {
            BitmapImage bitmapImage = new BitmapImage();
            Bitmap      bitmap      = (curKey == null || curKey.Length <= 1) ? renPdfToBitmap(pagePath, curKey, 0, PDFdpi, scal, 0, border, isSinglePage) : renPdfToBitmap(caTool, pagePath, curKey, 0, PDFdpi, scal, 0, border, isSinglePage);

            using (MemoryStream memoryStream = new MemoryStream())
            {
                try
                {
                    bitmap.Save(memoryStream, ImageFormat.Bmp);
                    bitmapImage.BeginInit();
                    bitmapImage.StreamSource = memoryStream;
                    bitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
                    bitmapImage.EndInit();
                    bitmapImage.CacheOption = BitmapCacheOption.None;
                    bitmapImage.StreamSource.Close();
                    bitmapImage.StreamSource = null;
                    bitmapImage.Freeze();
                    memoryStream.Dispose();
                    memoryStream.Close();
                    bitmap.Dispose();
                    bitmap = null;
                }
                catch (Exception ex)
                {
                    LogTool.Debug(ex);
                }
            }
            if (ImageSourceRendered != null)
            {
                ImageSourceRendered(this, new imageSourceRenderedResultEventArgs(bitmapImage, curPageIndex, scal));
            }
        }
Ejemplo n.º 8
0
        private BitmapImage a(CACodecTools A_0, byte[] A_1)
        {
            BitmapImage bitmapImage = new BitmapImage();

            try
            {
                using (MemoryStream memoryStream = A_0.fileAESDecode(leftImagePath, A_1, false))
                {
                    using (MemoryStream memoryStream2 = A_0.fileAESDecode(rightImagePath, A_1, false))
                    {
                        Bitmap bitmap  = new Bitmap(memoryStream);
                        Bitmap bitmap2 = new Bitmap(memoryStream2);
                        int    width   = Convert.ToInt32(bitmap.Width + bitmap2.Width);
                        int    num     = Convert.ToInt32(Math.Max(bitmap.Height, bitmap2.Height));
                        if (bitmap.Width == bitmap.Height)
                        {
                            num--;
                        }
                        Bitmap bitmap3 = new Bitmap(width, num);
                        using (Graphics graphics = Graphics.FromImage(bitmap3))
                        {
                            graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
                            graphics.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height);
                            graphics.DrawImage(bitmap2, bitmap.Width, 0, bitmap2.Width, bitmap2.Height);
                            graphics.Dispose();
                        }
                        using (MemoryStream memoryStream3 = new MemoryStream())
                        {
                            bitmap3.Save(memoryStream3, ImageFormat.Bmp);
                            bitmapImage.BeginInit();
                            bitmapImage.StreamSource = memoryStream3;
                            bitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
                            bitmapImage.EndInit();
                            bitmapImage.CacheOption = BitmapCacheOption.None;
                            bitmapImage.StreamSource.Close();
                            bitmapImage.StreamSource = null;
                            bitmapImage.Freeze();
                            memoryStream3.Dispose();
                            memoryStream3.Close();
                            bitmap3.Dispose();
                            bitmap3 = null;
                        }
                        memoryStream.Dispose();
                        memoryStream.Close();
                        memoryStream2.Dispose();
                        memoryStream2.Close();
                        bitmap  = null;
                        bitmap2 = null;
                        return(bitmapImage);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Ejemplo n.º 9
0
 public void resizeLargePHEJBitmapImage(CACodecTools caTool, byte[] curKey, Border border, float PDFScale, int zoomStep, DateTime resizeTime, bool isSinglePage)
 {
     lastTimeOfZooming = resizeTime;
     this.PDFScale     = PDFScale;
     this.zoomStep     = zoomStep;
     if (leftImagePath.Length > 0)
     {
         if (rightImagePath.Length > 0)
         {
             Thread thread = new Thread((ThreadStart) delegate
             {
                 getPHEJDoubleBitmapImageAsync(caTool, curKey, leftImagePath, rightImagePath, PDFScale, leftPageIndex, border, zoomimageSourceRendered, isSinglePage);
             });
             thread.Name = PDFScale.ToString();
             zoomThread.Add(thread);
         }
         else
         {
             Thread thread2 = new Thread((ThreadStart) delegate
             {
                 getPHEJSingleBitmapImageAsync(caTool, curKey, leftImagePath, PDFScale, leftPageIndex, border, zoomimageSourceRendered, isSinglePage);
             });
             thread2.Name = PDFScale.ToString();
             zoomThread.Add(thread2);
         }
     }
     else if (rightImagePath.Length > 0)
     {
         Thread thread3 = new Thread((ThreadStart) delegate
         {
             getPHEJSingleBitmapImageAsync(caTool, curKey, rightImagePath, PDFScale, leftPageIndex, border, zoomimageSourceRendered, isSinglePage);
         });
         thread3.Name = PDFScale.ToString();
         zoomThread.Add(thread3);
     }
     if (zoomThread.Count.Equals(0) || isResizing)
     {
         return;
     }
     for (int num = zoomThread.Count - 1; num >= 0; num--)
     {
         if (PDFScale.Equals((float)Convert.ToDouble(zoomThread[num].Name)))
         {
             try
             {
                 resizeImageSourceRendered += zoomimageSourceRendered;
                 zoomThread[num].Start();
                 zoomThread.Clear();
                 isResizing = true;
                 return;
             }
             catch
             {
             }
         }
     }
 }
Ejemplo n.º 10
0
        public void resizeLargePHEJBitmapImage(CACodecTools caTool, byte[] curKey, Border border, float PDFScale, int zoomStep, DateTime resizeTime, bool isSinglePage)
        {
            a a = new a();

            a.a           = this;
            a.b           = caTool;
            a.c           = curKey;
            a.d           = PDFScale;
            a.e           = border;
            a.f           = isSinglePage;
            f             = resizeTime;
            this.PDFScale = a.d;
            this.zoomStep = zoomStep;
            if (leftImagePath.Length > 0)
            {
                if (rightImagePath.Length > 0)
                {
                    Thread thread = new Thread(new ThreadStart(a.g));
                    thread.Name = a.d.ToString();
                    zoomThread.Add(thread);
                }
                else
                {
                    Thread thread2 = new Thread(new ThreadStart(a.h));
                    thread2.Name = a.d.ToString();
                    zoomThread.Add(thread2);
                }
            }
            else if (rightImagePath.Length > 0)
            {
                Thread thread3 = new Thread(new ThreadStart(a.i));
                thread3.Name = a.d.ToString();
                zoomThread.Add(thread3);
            }
            if (zoomThread.Count.Equals(0) || g)
            {
                return;
            }
            for (int num = zoomThread.Count - 1; num >= 0; num--)
            {
                if (a.d.Equals((float)Convert.ToDouble(zoomThread[num].Name)))
                {
                    try
                    {
                        resizeImageSourceRendered += new EventHandler <imageSourceRenderedResultEventArgs>(c);
                        zoomThread[num].Start();
                        zoomThread.Clear();
                        g = true;
                        return;
                    }
                    catch
                    {
                    }
                }
            }
        }
Ejemplo n.º 11
0
        public void resizeLargePHEJBitmapImage(CACodecTools caTool, byte[] curKey, Border border, float PDFScale, int zoomStep, DateTime resizeTime, bool isSinglePage)
        {
            this.lastTimeOfZooming = resizeTime;
            this.PDFScale          = PDFScale;
            this.zoomStep          = zoomStep;

            if (leftImagePath.Length > 0)
            {
                if (rightImagePath.Length > 0)
                {
                    //左右都有圖
                    Thread thread = new Thread(() => getPHEJDoubleBitmapImageAsync(caTool, curKey, leftImagePath, rightImagePath, PDFScale, leftPageIndex, border, zoomimageSourceRendered, isSinglePage));
                    thread.Name = PDFScale.ToString();
                    zoomThread.Add(thread);
                }
                else
                {
                    //只有左圖
                    Thread thread = new Thread(() => getPHEJSingleBitmapImageAsync(caTool, curKey, leftImagePath, PDFScale, leftPageIndex, border, zoomimageSourceRendered, isSinglePage));
                    thread.Name = PDFScale.ToString();
                    zoomThread.Add(thread);
                }
            }
            else if (rightImagePath.Length > 0)
            {
                //只有右圖
                Thread thread = new Thread(() => getPHEJSingleBitmapImageAsync(caTool, curKey, rightImagePath, PDFScale, leftPageIndex, border, zoomimageSourceRendered, isSinglePage));
                thread.Name = PDFScale.ToString();
                zoomThread.Add(thread);
            }


            if (!zoomThread.Count.Equals(0) && !isResizing)
            {
                for (int i = zoomThread.Count - 1; i >= 0; i--)
                {
                    if (PDFScale.Equals(((float)Convert.ToDouble(zoomThread[i].Name))))
                    {
                        try
                        {
                            this.resizeImageSourceRendered += zoomimageSourceRendered;
                            zoomThread[i].Start();
                            zoomThread.Clear();
                            isResizing = true;
                            break;
                        }
                        catch
                        {
                            //該Thread執行中, 抓下一個Thread測試
                            continue;
                        }
                    }
                }
            }
        }
Ejemplo n.º 12
0
        private void getPHEJSingleBitmapImageAsync(CACodecTools caTool, byte[] curKey, string pagePath, float scal, int curPageIndex, Border border, EventHandler <imageSourceRenderedResultEventArgs> ImageSourceRendered, bool isSinglePage)
        {
            BitmapImage bitmapImage = new BitmapImage();

            #region Paperless Meeting


            Bitmap image;
            if (curKey != null && curKey.Length > 1)
            {
                //image = renPdfToBitmap(pagePath, curKey, 0, PDFdpi, scal, 0, border, isSinglePage);
                image = renPdfToBitmap(caTool, pagePath, curKey, 0, PDFdpi, scal, 0, border, isSinglePage);
            }
            else
            {
                image = renPdfToBitmap(pagePath, curKey, 0, PDFdpi, scal, 0, border, isSinglePage);
            }


            #endregion

            using (MemoryStream memory = new MemoryStream())
            {
                try
                {
                    image.Save(memory, System.Drawing.Imaging.ImageFormat.Bmp);
                    //memory.Position = 0;
                    bitmapImage.BeginInit();
                    bitmapImage.StreamSource = memory;
                    bitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
                    bitmapImage.EndInit();
                    bitmapImage.CacheOption = BitmapCacheOption.None;
                    bitmapImage.StreamSource.Close();
                    bitmapImage.StreamSource = null;
                    bitmapImage.Freeze();


                    memory.Dispose();
                    memory.Close();
                    image.Dispose();
                    image = null;
                }
                catch (Exception ex)
                {
                    LogTool.Debug(ex);
                }
            }
            EventHandler <imageSourceRenderedResultEventArgs> imageRenderResult = ImageSourceRendered;

            if (imageRenderResult != null)
            {
                imageRenderResult(this, new imageSourceRenderedResultEventArgs(bitmapImage, curPageIndex, scal));
            }
        }
Ejemplo n.º 13
0
        public void createLargePHEJBitmapImage(CACodecTools caTool, byte[] curKey, Border border, bool isSinglePage)
        {
            ThreadStart threadStart  = null;
            ThreadStart threadStart2 = null;
            ThreadStart threadStart3 = null;
            _003C_003Ec__DisplayClasse _003C_003Ec__DisplayClasse = new _003C_003Ec__DisplayClasse();

            _003C_003Ec__DisplayClasse.caTool            = caTool;
            _003C_003Ec__DisplayClasse.curKey            = curKey;
            _003C_003Ec__DisplayClasse.border            = border;
            _003C_003Ec__DisplayClasse.isSinglePage      = isSinglePage;
            _003C_003Ec__DisplayClasse._003C_003E4__this = this;
            if (leftImagePath.Length > 0)
            {
                if (rightImagePath.Length > 0)
                {
                    leftImageSourceRendered += new EventHandler <imageSourceRenderedResultEventArgs>(leftimageSourceRendered);
                    if (threadStart == null)
                    {
                        threadStart = new ThreadStart(_003C_003Ec__DisplayClasse._003CcreateLargePHEJBitmapImage_003Eb__8);
                    }
                    Thread thread = new Thread(threadStart);
                    thread.Name = PDFScale.ToString();
                    thread.Start();
                    isRendering = true;
                }
                else
                {
                    leftImageSourceRendered += new EventHandler <imageSourceRenderedResultEventArgs>(leftimageSourceRendered);
                    if (threadStart2 == null)
                    {
                        threadStart2 = new ThreadStart(_003C_003Ec__DisplayClasse._003CcreateLargePHEJBitmapImage_003Eb__9);
                    }
                    Thread thread2 = new Thread(threadStart2);
                    thread2.Name = PDFScale.ToString();
                    thread2.Start();
                    isRendering = true;
                }
            }
            else if (rightImagePath.Length > 0)
            {
                rightImageSourceRendered += new EventHandler <imageSourceRenderedResultEventArgs>(rightimageSourceRendered);
                if (threadStart3 == null)
                {
                    threadStart3 = new ThreadStart(_003C_003Ec__DisplayClasse._003CcreateLargePHEJBitmapImage_003Eb__a);
                }
                Thread thread3 = new Thread(threadStart3);
                thread3.Name = PDFScale.ToString();
                thread3.Start();
                isRendering = true;
            }
        }
Ejemplo n.º 14
0
        private void getPHEJDoubleBitmapImageAsync(CACodecTools caTool, byte[] curKey, string leftPagePath, string rightPagePath, float scal, int curPageIndex, Border border, EventHandler <imageSourceRenderedResultEventArgs> ImageSourceRendered, bool isSinglePage)
        {
            BitmapImage bitmapImage = new BitmapImage();
            Bitmap      bitmap      = null;
            Bitmap      bitmap2     = null;
            Bitmap      bitmap3     = null;

            try
            {
                bitmap  = renPdfToBitmap(leftPagePath, curKey, 0, PDFdpi, scal, 0, border, isSinglePage);
                bitmap2 = renPdfToBitmap(rightPagePath, curKey, 0, PDFdpi, scal, 1, border, isSinglePage);
                int width  = Convert.ToInt32(bitmap.Width + bitmap2.Width);
                int height = Convert.ToInt32(Math.Max(bitmap.Height, bitmap2.Height));
                bitmap3 = new Bitmap(width, height);
                using (Graphics graphics = Graphics.FromImage(bitmap3))
                {
                    graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
                    graphics.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height);
                    graphics.DrawImage(bitmap2, bitmap.Width, 0, bitmap2.Width, bitmap2.Height);
                    graphics.Dispose();
                }
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    bitmap3.Save(memoryStream, ImageFormat.Bmp);
                    bitmapImage.BeginInit();
                    bitmapImage.StreamSource = memoryStream;
                    bitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
                    bitmapImage.EndInit();
                    bitmapImage.CacheOption = BitmapCacheOption.None;
                    bitmapImage.StreamSource.Close();
                    bitmapImage.StreamSource = null;
                    bitmapImage.Freeze();
                    memoryStream.Dispose();
                    memoryStream.Close();
                    bitmap3.Dispose();
                    bitmap3 = null;
                }
                bitmap  = null;
                bitmap2 = null;
            }
            catch
            {
                bitmap  = null;
                bitmap2 = null;
                bitmap3 = null;
            }
            if (ImageSourceRendered != null)
            {
                ImageSourceRendered(this, new imageSourceRenderedResultEventArgs(bitmapImage, curPageIndex, scal));
            }
        }
Ejemplo n.º 15
0
 public void createLargeHEJBitmapImage(CACodecTools caTool, byte[] curKey)
 {
     if (leftImagePath.Length > 0)
     {
         if (rightImagePath.Length > 0)
         {
             leftImageSource = getHEJDoubleBitmapImage(caTool, curKey);
         }
         else
         {
             leftImageSource = getHEJSingleBitmapImage(caTool, curKey);
         }
     }
     else if (rightImagePath.Length > 0)
     {
         rightImageSource = getHEJSingleBitmapImage(caTool, curKey);
     }
 }
Ejemplo n.º 16
0
 public void createLargePHEJBitmapImage(CACodecTools caTool, byte[] curKey, Border border, bool isSinglePage)
 {
     if (leftImagePath.Length > 0)
     {
         if (rightImagePath.Length > 0)
         {
             leftImageSourceRendered += leftimageSourceRendered;
             Thread thread = new Thread((ThreadStart) delegate
             {
                 getPHEJDoubleBitmapImageAsync(caTool, curKey, leftImagePath, rightImagePath, PDFScale, leftPageIndex, border, leftimageSourceRendered, isSinglePage);
             });
             thread.Name = PDFScale.ToString();
             thread.Start();
             isRendering = true;
         }
         else
         {
             leftImageSourceRendered += leftimageSourceRendered;
             Thread thread2 = new Thread((ThreadStart) delegate
             {
                 getPHEJSingleBitmapImageAsync(caTool, curKey, leftImagePath, PDFScale, leftPageIndex, border, leftimageSourceRendered, isSinglePage);
             });
             thread2.Name = PDFScale.ToString();
             thread2.Start();
             isRendering = true;
         }
     }
     else if (rightImagePath.Length > 0)
     {
         rightImageSourceRendered += rightimageSourceRendered;
         Thread thread3 = new Thread((ThreadStart) delegate
         {
             getPHEJSingleBitmapImageAsync(caTool, curKey, rightImagePath, PDFScale, leftPageIndex, border, leftimageSourceRendered, isSinglePage);
         });
         thread3.Name = PDFScale.ToString();
         thread3.Start();
         isRendering = true;
     }
 }
Ejemplo n.º 17
0
        private void a(CACodecTools A_0, byte[] A_1, string A_2, float A_3, int A_4, Border A_5, EventHandler <imageSourceRenderedResultEventArgs> A_6, bool A_7)
        {
            BitmapImage bitmapImage = new BitmapImage();

            if (!A_2.Contains("tryPageEndLarge"))
            {
                Bitmap bitmap = null;
                try
                {
                    bitmap = a(A_0, A_2, A_1, 0, e, A_3, 0, A_5, A_7);
                    using (MemoryStream memoryStream = new MemoryStream())
                    {
                        bitmap.Save(memoryStream, ImageFormat.Bmp);
                        bitmapImage.BeginInit();
                        bitmapImage.StreamSource = memoryStream;
                        bitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
                        bitmapImage.EndInit();
                        bitmapImage.CacheOption = BitmapCacheOption.None;
                        bitmapImage.StreamSource.Close();
                        bitmapImage.StreamSource = null;
                        bitmapImage.Freeze();
                        memoryStream.Dispose();
                        memoryStream.Close();
                        bitmap.Dispose();
                        bitmap = null;
                    }
                }
                catch (Exception)
                {
                    bitmapImage = null;
                    bitmap      = null;
                }
                if (A_6 != null)
                {
                    A_6(this, new imageSourceRenderedResultEventArgs(bitmapImage, A_4, A_3));
                }
            }
        }
Ejemplo n.º 18
0
        //將 PDF ren 成 Bitmap (改用Thread的方式ren)
        private Bitmap renPdfToBitmap(CACodecTools caTool, string pageFile, byte[] key, int pg, int dpi, float scal, int decodedPageIndex, Border border, bool isSinglePage)
        {
            System.Drawing.Color bgColor = System.Drawing.Color.White; //背景白色
            Bitmap bmp = null;

            try
            {
                if (this.decodedPDFPages[decodedPageIndex] == null) //如果此頁已經解密過,就直接拿來ren,不用再重新解密一次
                {
                    this.decodedPDFPages[decodedPageIndex] = caTool.fileAESDecode(pageFile, key);
                }
            }
            catch (Exception e)
            {
                //TODO: 萬一檔案解析失敗, 判定為壞檔, 重新下載
                this.decodedPDFPages[decodedPageIndex] = null;
                LogTool.Debug(e);
                //throw e;
            }

            try
            {   //TODO: 改成把PDF實體拉出來變global的
                PDFDoc pdfDoc = new PDFDoc();
                pdfDoc.Init("PVD20-M4IRG-QYZK9-MNJ2U-DFTK1-MAJ4L", "PDFX3$Henry$300604_Allnuts#");
                pdfDoc.OpenFromMemory(this.decodedPDFPages[decodedPageIndex], (uint)decodedPDFPages[decodedPageIndex].Length, 0);
                PXCV_Lib36.PXV_CommonRenderParameters commonRenderParam = prepareCommonRenderParameter(pdfDoc, dpi, pg, scal, 0, 0, border, isSinglePage);
                pdfDoc.DrawPageToDIBSection(IntPtr.Zero, pg, bgColor, commonRenderParam, out bmp);
                pdfDoc.ReleasePageCachedData(pg, (int)PXCV_Lib36.PXCV_ReleaseCachedDataFlags.pxvrcd_ReleaseDocumentImages);
                pdfDoc.Delete();
            }
            catch (Exception e)
            {
                LogTool.Debug(e);
                //throw e;
            }
            //bmp.Save("c:\\Temp\\test.bmp");
            return(bmp);
        }
Ejemplo n.º 19
0
        public void createLargePHEJBitmapImage(CACodecTools caTool, byte[] curKey, Border border, bool isSinglePage)
        {
            b b = new b();

            b.a = this;
            b.b = caTool;
            b.c = curKey;
            b.d = border;
            b.e = isSinglePage;
            if (leftImagePath.Length > 0)
            {
                if (rightImagePath.Length > 0)
                {
                    leftImageSourceRendered += new EventHandler <imageSourceRenderedResultEventArgs>(this.b);
                    Thread thread = new Thread(new ThreadStart(b.f));
                    thread.Name = PDFScale.ToString();
                    thread.Start();
                    isRendering = true;
                }
                else
                {
                    leftImageSourceRendered += new EventHandler <imageSourceRenderedResultEventArgs>(this.b);
                    Thread thread2 = new Thread(new ThreadStart(b.g));
                    thread2.Name = PDFScale.ToString();
                    thread2.Start();
                    isRendering = true;
                }
            }
            else if (rightImagePath.Length > 0)
            {
                rightImageSourceRendered += new EventHandler <imageSourceRenderedResultEventArgs>(a);
                Thread thread3 = new Thread(new ThreadStart(b.h));
                thread3.Name = PDFScale.ToString();
                thread3.Start();
                isRendering = true;
            }
        }
Ejemplo n.º 20
0
        private void getPHEJDoubleBitmapImageAsync(CACodecTools caTool, byte[] curKey, string leftPagePath, string rightPagePath, float scal, int curPageIndex, Border border, EventHandler <imageSourceRenderedResultEventArgs> ImageSourceRendered, bool isSinglePage)
        {
            BitmapImage bitmapImage = new BitmapImage();
            Bitmap      image1      = null;
            Bitmap      image2      = null;
            Bitmap      bitmap      = null;

            try
            {
                //雙頁
                #region Paperless Meeting

                image1 = renPdfToBitmap(leftPagePath, curKey, 0, PDFdpi, scal, 0, border, isSinglePage);
                image2 = renPdfToBitmap(rightPagePath, curKey, 0, PDFdpi, scal, 1, border, isSinglePage);

                #endregion


                int mergeWidth  = Convert.ToInt32(image1.Width + image2.Width);
                int mergeHeight = Convert.ToInt32(Math.Max(image1.Height, image2.Height));


                bitmap = new Bitmap(mergeWidth, mergeHeight);
                using (Graphics g = Graphics.FromImage(bitmap))
                {
                    g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
                    g.DrawImage(image1, 0, 0, image1.Width, image1.Height);
                    g.DrawImage(image2, image1.Width, 0, image2.Width, image2.Height);
                    g.Dispose();
                }

                using (MemoryStream memory = new MemoryStream())
                {
                    bitmap.Save(memory, System.Drawing.Imaging.ImageFormat.Bmp);
                    //memory.Position = 0;
                    bitmapImage.BeginInit();
                    bitmapImage.StreamSource = memory;
                    bitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
                    bitmapImage.EndInit();
                    bitmapImage.CacheOption = BitmapCacheOption.None;
                    bitmapImage.StreamSource.Close();
                    bitmapImage.StreamSource = null;
                    bitmapImage.Freeze();


                    memory.Dispose();
                    memory.Close();
                    bitmap.Dispose();
                    bitmap = null;
                }

                image1 = null;
                image2 = null;
            }
            catch
            {
                //處理圖片過程出錯
                image1 = null;
                image2 = null;
                bitmap = null;
            }

            EventHandler <imageSourceRenderedResultEventArgs> imageRenderResult = ImageSourceRendered;

            if (imageRenderResult != null)
            {
                imageRenderResult(this, new imageSourceRenderedResultEventArgs(bitmapImage, curPageIndex, scal));
            }
        }
Ejemplo n.º 21
0
        private void a(CACodecTools A_0, byte[] A_1, string A_2, string A_3, float A_4, int A_5, Border A_6, EventHandler <imageSourceRenderedResultEventArgs> A_7, bool A_8)
        {
            BitmapImage bitmapImage = new BitmapImage();
            Bitmap      bitmap      = null;
            Bitmap      bitmap2     = null;
            Bitmap      bitmap3     = null;
            bool        flag        = false;

            try
            {
                if (A_2.Contains("tryPageEndLarge"))
                {
                    if (A_2.Contains("tryPageEndLarge.pdf"))
                    {
                        A_2 = A_2.Replace("tryPageEndLarge.pdf", "tryPageEnd.jpg");
                    }
                    else if (A_2.Contains("tryPageEndLargeNTPC.pdf"))
                    {
                        A_2 = A_2.Replace("tryPageEndLargeNTPC.pdf", "tryPageEndNTPC.jpg");
                    }
                    flag = true;
                    BitmapImage source = new BitmapImage(new Uri(A_2, UriKind.RelativeOrAbsolute));
                    using (MemoryStream stream = new MemoryStream())
                    {
                        BmpBitmapEncoder bmpBitmapEncoder = new BmpBitmapEncoder();
                        bmpBitmapEncoder.Frames.Add(BitmapFrame.Create(source));
                        bmpBitmapEncoder.Save(stream);
                        bitmap = new Bitmap(stream);
                    }
                }
                else
                {
                    bitmap = a(A_0, A_2, A_1, 0, e, A_4, 0, A_6, A_8);
                }
            }
            catch (Exception)
            {
                bitmap      = null;
                bitmap2     = null;
                bitmap3     = null;
                bitmapImage = null;
                if (A_7 != null)
                {
                    A_7(this, new imageSourceRenderedResultEventArgs(bitmapImage, A_5, A_4));
                }
                return;
            }
            try
            {
                if (A_3.Contains("tryPageEndLarge"))
                {
                    if (A_3.Contains("tryPageEndLarge.pdf"))
                    {
                        A_3 = A_3.Replace("tryPageEndLarge.pdf", "tryPageEnd.jpg");
                    }
                    else if (A_3.Contains("tryPageEndLargeNTPC.pdf"))
                    {
                        A_3 = A_3.Replace("tryPageEndLargeNTPC.pdf", "tryPageEndNTPC.jpg");
                    }
                    flag = true;
                    BitmapImage source2 = new BitmapImage(new Uri(A_3, UriKind.RelativeOrAbsolute));
                    using (MemoryStream stream2 = new MemoryStream())
                    {
                        BmpBitmapEncoder bmpBitmapEncoder2 = new BmpBitmapEncoder();
                        bmpBitmapEncoder2.Frames.Add(BitmapFrame.Create(source2));
                        bmpBitmapEncoder2.Save(stream2);
                        bitmap2 = new Bitmap(stream2);
                    }
                }
                else
                {
                    bitmap2 = a(A_0, A_3, A_1, 0, e, A_4, 1, A_6, A_8);
                }
            }
            catch (Exception)
            {
                bitmap      = null;
                bitmap2     = null;
                bitmap3     = null;
                bitmapImage = null;
                if (A_7 != null)
                {
                    A_7(this, new imageSourceRenderedResultEventArgs(bitmapImage, A_5, A_4));
                }
                return;
            }
            try
            {
                int width  = Convert.ToInt32(bitmap.Width + bitmap2.Width);
                int height = Convert.ToInt32(Math.Max(bitmap.Height, bitmap2.Height));
                if (flag)
                {
                    width  = Math.Min(bitmap.Width, bitmap2.Width) * 2;
                    height = Math.Min(bitmap.Height, bitmap2.Height);
                    if (bitmap.Width > bitmap2.Width)
                    {
                        bitmap = ResizeImage(bitmap, new Size(bitmap2.Width, bitmap2.Height));
                        width  = bitmap2.Width * 2;
                    }
                    else
                    {
                        bitmap2 = ResizeImage(bitmap2, new Size(bitmap.Width, bitmap.Height));
                        width   = bitmap.Width * 2;
                    }
                }
                bitmap3 = new Bitmap(width, height);
                using (Graphics graphics = Graphics.FromImage(bitmap3))
                {
                    graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
                    graphics.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height);
                    graphics.DrawImage(bitmap2, bitmap.Width, 0, bitmap2.Width, bitmap2.Height);
                    graphics.Dispose();
                }
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    bitmap3.Save(memoryStream, ImageFormat.Bmp);
                    bitmapImage.BeginInit();
                    bitmapImage.StreamSource = memoryStream;
                    bitmapImage.CacheOption  = BitmapCacheOption.OnLoad;
                    bitmapImage.EndInit();
                    bitmapImage.CacheOption = BitmapCacheOption.None;
                    bitmapImage.StreamSource.Close();
                    bitmapImage.StreamSource = null;
                    bitmapImage.Freeze();
                    memoryStream.Dispose();
                    memoryStream.Close();
                    bitmap3.Dispose();
                    bitmap3 = null;
                }
                bitmap  = null;
                bitmap2 = null;
            }
            catch
            {
                bitmap      = null;
                bitmap2     = null;
                bitmap3     = null;
                bitmapImage = null;
                if (A_7 != null)
                {
                    A_7(this, new imageSourceRenderedResultEventArgs(bitmapImage, A_5, A_4));
                }
                return;
            }
            if (A_7 != null)
            {
                A_7(this, new imageSourceRenderedResultEventArgs(bitmapImage, A_5, A_4));
            }
        }
Ejemplo n.º 22
0
        public void resizeLargePHEJBitmapImage(CACodecTools caTool, byte[] curKey, Border border, float PDFScale, int zoomStep, DateTime resizeTime, bool isSinglePage)
        {
            ThreadStart threadStart  = null;
            ThreadStart threadStart2 = null;
            ThreadStart threadStart3 = null;
            _003C_003Ec__DisplayClass6 _003C_003Ec__DisplayClass = new _003C_003Ec__DisplayClass6();

            _003C_003Ec__DisplayClass.caTool            = caTool;
            _003C_003Ec__DisplayClass.curKey            = curKey;
            _003C_003Ec__DisplayClass.border            = border;
            _003C_003Ec__DisplayClass.PDFScale          = PDFScale;
            _003C_003Ec__DisplayClass.isSinglePage      = isSinglePage;
            _003C_003Ec__DisplayClass._003C_003E4__this = this;
            lastTimeOfZooming = resizeTime;
            this.PDFScale     = _003C_003Ec__DisplayClass.PDFScale;
            this.zoomStep     = zoomStep;
            if (leftImagePath.Length > 0)
            {
                if (rightImagePath.Length > 0)
                {
                    if (threadStart == null)
                    {
                        threadStart = new ThreadStart(_003C_003Ec__DisplayClass._003CresizeLargePHEJBitmapImage_003Eb__0);
                    }
                    Thread thread = new Thread(threadStart);
                    thread.Name = _003C_003Ec__DisplayClass.PDFScale.ToString();
                    zoomThread.Add(thread);
                }
                else
                {
                    if (threadStart2 == null)
                    {
                        threadStart2 = new ThreadStart(_003C_003Ec__DisplayClass._003CresizeLargePHEJBitmapImage_003Eb__1);
                    }
                    Thread thread2 = new Thread(threadStart2);
                    thread2.Name = _003C_003Ec__DisplayClass.PDFScale.ToString();
                    zoomThread.Add(thread2);
                }
            }
            else if (rightImagePath.Length > 0)
            {
                if (threadStart3 == null)
                {
                    threadStart3 = new ThreadStart(_003C_003Ec__DisplayClass._003CresizeLargePHEJBitmapImage_003Eb__2);
                }
                Thread thread3 = new Thread(threadStart3);
                thread3.Name = _003C_003Ec__DisplayClass.PDFScale.ToString();
                zoomThread.Add(thread3);
            }
            if (zoomThread.Count.Equals(0) || isResizing)
            {
                return;
            }
            for (int num = zoomThread.Count - 1; num >= 0; num--)
            {
                if (_003C_003Ec__DisplayClass.PDFScale.Equals((float)Convert.ToDouble(zoomThread[num].Name)))
                {
                    try
                    {
                        resizeImageSourceRendered += new EventHandler <imageSourceRenderedResultEventArgs>(zoomimageSourceRendered);
                        zoomThread[num].Start();
                        zoomThread.Clear();
                        isResizing = true;
                        return;
                    }
                    catch
                    {
                    }
                }
            }
        }