|
@@ -20,6 +20,7 @@ using ComPDFKit.PDFAnnotation;
|
|
|
using ComPDFKit.Tool;
|
|
|
using PasswordBoxPlus.Helper;
|
|
|
using ComPDFKit.NativeMethod;
|
|
|
+using ComPDFKit.PDFPage;
|
|
|
|
|
|
namespace Compdfkit_Tools.PDFControl
|
|
|
{
|
|
@@ -225,6 +226,9 @@ namespace Compdfkit_Tools.PDFControl
|
|
|
case MouseHitTestType.Text:
|
|
|
CreateSelectTextContextMenu(sender, ref ContextMenu);
|
|
|
break;
|
|
|
+ case MouseHitTestType.ImageSelect:
|
|
|
+ CreateSelectImageContextMenu(sender, ref ContextMenu);
|
|
|
+ break;
|
|
|
default:
|
|
|
ContextMenu.Items.Add(new MenuItem() { Header = LanguageHelper.CommonManager.GetString("Menu_Paste"), Command = ApplicationCommands.Paste, CommandTarget = (UIElement)sender });
|
|
|
PDFViewControl.CreateViewerMenu(sender, ref ContextMenu);
|
|
@@ -260,6 +264,73 @@ namespace Compdfkit_Tools.PDFControl
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private void CreateSelectImageContextMenu(object sender, ref ContextMenu menu)
|
|
|
+ {
|
|
|
+ if (menu == null)
|
|
|
+ {
|
|
|
+ menu = new ContextMenu();
|
|
|
+ }
|
|
|
+ MenuItem copyImage = new MenuItem();
|
|
|
+ copyImage.Header = "Copy Image";
|
|
|
+ copyImage.Click += CopyImage_Click;
|
|
|
+ menu.Items.Add(copyImage);
|
|
|
+
|
|
|
+ MenuItem extractImage = new MenuItem();
|
|
|
+ extractImage.Header = "Extract Image";
|
|
|
+ extractImage.Click += ExtractImage_Click;
|
|
|
+ menu.Items.Add(extractImage);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void ExtractImage_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ System.Windows.Forms.FolderBrowserDialog folderDialog = new System.Windows.Forms.FolderBrowserDialog();
|
|
|
+ if (folderDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
|
+ {
|
|
|
+ var image = PDFViewControl.FocusPDFViewTool.GetSelectImage();
|
|
|
+ if(image == null)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ CPDFPage page = PDFViewControl.PDFToolManager.GetDocument().PageAtIndex(image.PageIndex);
|
|
|
+ string savePath = Path.Combine(folderDialog.SelectedPath, Guid.NewGuid() + ".jpg");
|
|
|
+ string tempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".jpg");
|
|
|
+ page.GetImgSelection().GetImgBitmap(image.ImageIndex, tempPath);
|
|
|
+
|
|
|
+ Bitmap bitmap = new Bitmap(tempPath);
|
|
|
+ bitmap.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);
|
|
|
+ Process.Start("explorer", "/select,\"" + savePath + "\"");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CopyImage_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ var image = PDFViewControl.FocusPDFViewTool.GetSelectImage();
|
|
|
+ if(image == null)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ CPDFPage page = PDFViewControl.PDFToolManager.GetDocument().PageAtIndex(image.PageIndex);
|
|
|
+ string tempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid() + ".jpg");
|
|
|
+ page.GetImgSelection().GetImgBitmap(image.ImageIndex, tempPath);
|
|
|
+
|
|
|
+ Bitmap bitmap = new Bitmap(tempPath);
|
|
|
+ BitmapImage imageData;
|
|
|
+ using (MemoryStream ms = new MemoryStream())
|
|
|
+ {
|
|
|
+ bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
|
|
|
+ imageData = new BitmapImage();
|
|
|
+ imageData.BeginInit();
|
|
|
+ imageData.StreamSource = ms;
|
|
|
+
|
|
|
+ imageData.CacheOption = BitmapCacheOption.OnLoad;
|
|
|
+ imageData.EndInit();
|
|
|
+ imageData.Freeze();
|
|
|
+ Clipboard.SetImage(imageData);
|
|
|
+ bitmap.Dispose();
|
|
|
+ File.Delete(tempPath);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
public void UnloadEvent()
|
|
|
{
|