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); } }
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); }
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; } }
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); }
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)); } }
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; } }
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 { } } } }
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 { } } } }
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; } } } } }
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)); } }
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; } }
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)); } }
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); } }
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; } }
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)); } } }
//將 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); }
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; } }
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)); } }
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)); } }
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 { } } } }