Browse Source

其他-修复页面编辑缩放后粘贴大小不一致问题

ZhouJieSheng 1 year ago
parent
commit
f8ef86b929

+ 0 - 7
PDF Office/ViewModels/MainWindowViewModel.cs

@@ -128,13 +128,6 @@ namespace PDF_Master.ViewModels
             }
         }
 
-
-
-
-
-
-
-
         private string _Useremailchar = "#";
 
         public string Useremailchar

+ 17 - 14
PDF Office/ViewModels/PageEdit/PageEditContentViewModel.cs

@@ -1884,9 +1884,8 @@ namespace PDF_Master.ViewModels.PageEdit
             item.PageNumber = index + 1;
             var pagesize = PDFViewer.Document.GetPageSize(index);
             item.Size = pagesize;
-            //double width =  CommonHelper.GetUnitsFromPageSize(pagesize.Width);
-            //double height = CommonHelper.GetUnitsFromPageSize(pagesize.Height);
-            //item.PageSize = $"{width.ToString("F0")}mm*{height.ToString("F0")} mm";
+            //修复 缩放后粘贴的页面大小不一致的问题
+            item.ItemSize = ItemSizes[ZoomIndex + 1];
             return item;
         }
 
@@ -1951,8 +1950,8 @@ namespace PDF_Master.ViewModels.PageEdit
                     if (PageEditItems[i].Selected)
                     {
                         //逆时针旋转传 - 1  顺时针旋转传1
-                        PDFViewer.Document.RotatePage(i, rightRotate ? 1 : -1);
-                        PDFViewer.Document.ReleasePages(i);
+                        //直接用PDFViewer的旋转接口,需要留意好,中间层不能有自动清空undo栈
+                        PDFViewer.RotatePage(ComPDFKitViewer.PageRotate.Rotate90,rightRotate,i);
                         items.Add(i, i);
                         //重新拿图
                         PageEditItems[i].IsGetImage = false;
@@ -1964,8 +1963,7 @@ namespace PDF_Master.ViewModels.PageEdit
                 //旋转对应Items集合
                 for (int i = 0; i < pageitems.Count; i++)
                 {
-                    var r = PDFViewer.Document.RotatePage(pageitems[i], rightRotate ? 1 : -1);
-                    PDFViewer.Document.ReleasePages(pageitems[i]);
+                    PDFViewer.RotatePage(ComPDFKitViewer.PageRotate.Rotate90, rightRotate, pageitems[i]);
                     items.Add(pageitems[i], pageitems[i]);
 
                     //重新拿图
@@ -2187,6 +2185,9 @@ namespace PDF_Master.ViewModels.PageEdit
                 return;
             }
 
+            //一个拿图比例系数,减少拿图耗时,尽量确保缩放后图片清晰度不会很差
+            int rate = (int)ItemSizes[2].Height;
+
             for (int i = startIndex; i <= endIndex; i++)
             {
                 if (i <= PageEditItems.Count - 1 && i >= 0 && PageEditItems.Count > 0&&PDFViewer.Document!=null)
@@ -2196,26 +2197,28 @@ namespace PDF_Master.ViewModels.PageEdit
                     //宽高为样式中图片控件宽高
                     if (PageEditItems[i].isVertical)
                     {
-                        //等比例缩
-                        if (PageEditItems[i].Size.Height > 300)
+                        //等比例缩
+                        if (PageEditItems[i].Size.Height > rate)
                         {
-                            await PDFViewer.GetThumbnail(i, (int)(PageEditItems[i].Size.Width / (PageEditItems[i].Size.Height / 300)), 300);
+                            await PDFViewer.GetThumbnail(i, (int)(PageEditItems[i].Size.Width / (PageEditItems[i].Size.Height / rate)), rate);
                         }
                         else
                         {
-                            await PDFViewer.GetThumbnail(i, (int)PageEditItems[i].Size.Width, (int)PageEditItems[i].Size.Height);
+
+                            //尺寸大小的图片 等比例放大  避免页面放大后内容模糊
+                            await PDFViewer.GetThumbnail(i, (int)PageEditItems[i].Size.Width*(rate/(int)PageEditItems[i].Size.Height), rate);
                         }
                     }
                     else
                     {
-                        if (PageEditItems[i].Size.Width > 300)
+                        if (PageEditItems[i].Size.Width > rate)
                         {
-                            await PDFViewer.GetThumbnail(i, 300, (int)(PageEditItems[i].Size.Height / (PageEditItems[i].Size.Width / 300)));
+                            await PDFViewer.GetThumbnail(i, rate, (int)(PageEditItems[i].Size.Height / (PageEditItems[i].Size.Width / rate)));
                         }
                         else
                         {
                             //获取横图
-                            await PDFViewer.GetThumbnail(i, (int)PageEditItems[i].Size.Width, (int)PageEditItems[i].Size.Height);
+                            await PDFViewer.GetThumbnail(i, rate, (int)PageEditItems[i].Size.Height * (rate / (int)(PageEditItems[i].Size.Width)));
                         }
                     }
                 }

+ 8 - 0
PDF Office/ViewModels/ViewContentViewModel.cs

@@ -2060,6 +2060,14 @@ namespace PDF_Master.ViewModels
             //还原上一次关闭前的视图设置
             GetOpenFileInfo();
 
+            if(!string.IsNullOrEmpty(PassWord))
+            {
+                //加密文档解密后刷新底部工具栏页码总数
+                NavigationParameters parameters = new NavigationParameters();
+                parameters.Add(ParameterNames.PDFViewer, PDFViewer);
+                parameters.Add(ParameterNames.ViewContentViewModel, this);
+                region.RequestNavigate(BottomToolRegionName, "BottomToolContent", parameters);
+            }
             region.AddToRegion(ViwerRegionName, PDFViewer);
 
             if (!App.OpenedFileList.Contains(PDFViewer.Document.FilePath))

+ 5 - 2
PDF Office/Views/PageEdit/PageEditContent.xaml

@@ -45,7 +45,10 @@
                                 Height="{Binding ItemSize.Height}"
                                 Margin="1"
                                 Background="Transparent">
-                                <Image Source="{Binding Image}" Stretch="Uniform" />
+                                <Image
+                                    RenderOptions.BitmapScalingMode="HighQuality"
+                                    Source="{Binding Image}"
+                                    Stretch="Uniform" />
                                 <Border
                                     Width="18"
                                     Height="20"
@@ -370,7 +373,7 @@
                         <Setter Property="Margin" Value="0,10" />
                         <Setter Property="FocusVisualStyle" Value="{x:Null}" />
                         <Setter Property="Visibility" Value="{Binding Visible}" />
-                        <Setter Property="IsSelected" Value="{Binding Selected, Mode=OneWayToSource, UpdateSourceTrigger=PropertyChanged}" />
+                        <Setter Property="IsSelected" Value="{Binding Selected, Mode=OneWayToSource}" />
                         <Setter Property="HorizontalAlignment" Value="Center" />
                         <Setter Property="VerticalAlignment" Value="Center" />
                         <Setter Property="HorizontalContentAlignment" Value="Center" />

+ 1 - 0
PDF Office/Views/ViewContent.xaml

@@ -338,6 +338,7 @@
                     Width="28"
                     Height="28"
                     BorderThickness="0"
+                    Checked="TbtnProperty_Checked"
                     Command="{Binding OpenPropertyCommand}"
                     CommandParameter="{Binding ElementName=TbtnProperty, Path=IsChecked}"
                     IsChecked="{Binding IsPropertyOpen, Mode=OneWay}"

+ 5 - 0
PDF Office/Views/ViewContent.xaml.cs

@@ -389,5 +389,10 @@ namespace PDF_Master.Views
         {
             viewModel.mainViewModel.CloseTab.Execute(null);
         }
+
+        private void TbtnProperty_Checked(object sender, RoutedEventArgs e)
+        {
+            //DocumentView.UpdateLayout();
+        }
     }
 }