Browse Source

compdfkit demo(windows) - outline(待完成)

LiuAoran 1 year ago
parent
commit
538fe16e54

+ 1 - 2
compdfkit_demo_windows/compdfkit/compdfkit-tools/PDFView/PDFOutline/PDFOutlineControl/CPDFOutlineControl.xaml

@@ -1,9 +1,8 @@
-<UserControl x:Class="compdfkit_tools.PDFView.PDFOutline.PDFOutlineControl.CPDFOutlineControl"
+<UserControl x:Class="compdfkit_tools.PDFControl.CPDFOutlineControl"
              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
-             xmlns:local="clr-namespace:compdfkit_tools.PDFView.PDFOutline.PDFOutlineControl"
              xmlns:cpdftoolsui="clr-namespace:compdfkit_tools.PDFControlUI"
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="800">

+ 9 - 2
compdfkit_demo_windows/compdfkit/compdfkit-tools/PDFView/PDFOutline/PDFOutlineControl/CPDFOutlineControl.xaml.cs

@@ -1,4 +1,5 @@
-using System;
+using ComPDFKitViewer.PdfViewer;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -13,13 +14,14 @@ using System.Windows.Media.Imaging;
 using System.Windows.Navigation;
 using System.Windows.Shapes;
 
-namespace compdfkit_tools.PDFView.PDFOutline.PDFOutlineControl
+namespace compdfkit_tools.PDFControl
 {
     /// <summary>
     /// CPDFOutlineControl.xaml 的交互逻辑
     /// </summary>
     public partial class CPDFOutlineControl : UserControl
     {
+        CPDFViewer pdfViewer;
         public CPDFOutlineControl()
         {
             InitializeComponent();
@@ -27,6 +29,11 @@ namespace compdfkit_tools.PDFView.PDFOutline.PDFOutlineControl
             CPDFOutlineUI.Loaded += CPDFOutlineUI_Loaded;
         }
 
+        public void InitWithPDFViewer(CPDFViewer pdfViewer)
+        {
+            this.pdfViewer = pdfViewer;
+        }
+
         private void CPDFOutlineUI_Loaded(object sender, RoutedEventArgs e)
         {
             CPDFOutlineUI.OutlineNodeList = new TreeView();

+ 4 - 4
compdfkit_demo_windows/compdfkit/compdfkit-tools/PDFView/PDFOutline/PDFOutlineUI/CPDFOutlineUI.xaml

@@ -8,16 +8,16 @@
              d:DesignHeight="600"
              d:DesignWidth="300">
     <Grid>
-        <TreeView x:Name="OutlineNodeList">
+        <TreeView x:Name="OutlineNodeList" Height="200">
             <TreeView.ItemTemplate>
-                <HierarchicalDataTemplate DataType="CPDFOutlineNode">
+                <HierarchicalDataTemplate DataType="CPDFOutlineNode" ItemsSource="{Binding ChildrenNode}">
                     <Grid x:Name="OutlineNodeGrid">
                         <Grid.ColumnDefinitions>
                             <ColumnDefinition></ColumnDefinition>
                             <ColumnDefinition Width="auto"></ColumnDefinition>
                         </Grid.ColumnDefinitions>
-                        <TextBlock x:Name="OutlineName"></TextBlock>
-                        <TextBlock x:Name="PageIndex"></TextBlock>
+                        <TextBlock x:Name="OutlineName" Text="{Binding CurrentNodeName}"></TextBlock>
+                        <TextBlock x:Name="PageIndex" Text="{Binding PageIndex}"></TextBlock>
                     </Grid>
                 </HierarchicalDataTemplate>
             </TreeView.ItemTemplate>

+ 53 - 31
compdfkit_demo_windows/compdfkit/compdfkit-tools/PDFView/PDFOutline/PDFOutlineUI/CPDFOutlineUI.xaml.cs

@@ -24,45 +24,67 @@ namespace compdfkit_tools.PDFControlUI
         public CPDFOutlineUI()
         {
             InitializeComponent();
+            CreateCPDFOutlineNode();
         }
+
+        public void CreateCPDFOutlineNode()
+        {
+            CPDFOutlineNode node = new CPDFOutlineNode()
+            {
+                CurrentNodeName = "file",
+                ChildrenNode = new ObservableCollection<CPDFOutlineNode>()
+                {
+                    new CPDFOutlineNode() {
+                        CurrentNodeName = "de"
+                    }
+                }
+            };
+            List<CPDFOutlineNode> nodes = new List<CPDFOutlineNode> { node };
+            OutlineNodeList.ItemsSource = nodes;
     }
+}
 
-    internal class CPDFOutlineNode
-    {
-        /// <summary>
-        /// 大纲父节点
-        /// </summary>
-        private CPDFOutlineNode parentNode = null;
+public partial class CPDFOutlineNode
+{
+    /// <summary>
+    /// 大纲父节点
+    /// </summary>
+    public CPDFOutlineNode ParentNode = null;
+
+    /// <summary>
+    /// 当前节点
+    /// </summary>
+    public CPDFOutlineNode CurrentNode = null;
 
-        /// <summary>
-        /// 当前节点
-        /// </summary>
-        private CPDFOutlineNode currentNode = null;
+    /// <summary>
+    /// 节点
+    /// </summary>
+    public string CurrentNodeName = string.Empty;
 
-        /// <summary>
-        /// 大纲子节点
-        /// </summary>
-        private ObservableCollection<CPDFOutlineNode> childNode = null;
+    /// <summary>
+    /// 大纲子节点
+    /// </summary>
+    public ObservableCollection<CPDFOutlineNode> ChildrenNode = null;
 
-        /// <summary>
-        /// 当前展开状态
-        /// </summary>
-        private bool isExpanded = false;
+    /// <summary>
+    /// 当前展开状态
+    /// </summary>
+    public bool IsExpanded = false;
 
-        /// <summary>
-        /// 当前节点页面
-        /// </summary>
-        private int pageIndex = 0;
+    /// <summary>
+    /// 当前节点页面
+    /// </summary>
+    public int PageIndex = 0;
 
-        /// <summary>
-        /// 当前节点所在页面中的水平位置
-        /// </summary>
-        private double positionX;
+    /// <summary>
+    /// 当前节点所在页面中的水平位置
+    /// </summary>
+    public double PositionX;
 
-        /// <summary>
-        /// 当前节点所在页面中的垂直位置
-        /// </summary>
-        private double positionY;
+    /// <summary>
+    /// 当前节点所在页面中的垂直位置
+    /// </summary>
+    public double PositionY;
 
-    }
+}
 }

+ 4 - 7
compdfkit_demo_windows/compdfkit/viewer-ctrl-demo/MainWindow.xaml

@@ -51,7 +51,7 @@
                         </Path>
                     </ToggleButton.Content>
                 </ToggleButton>
-
+                
                 <ToggleButton  Name="OutlineToolButton" Height="40" Padding="0,5,0,5" BorderThickness="0" Background="{StaticResource color.bg.jumpbar}" Click="OutlineToolButton_Click">
                     <ToggleButton.Content>
                         <Path Width="20" Height="20" Fill="#273C62">
@@ -64,14 +64,11 @@
             </StackPanel>
 
             <!--工具栏展开-->
-            <Border Name="BotaToolContainer" Grid.Column="1" BorderThickness="0,0,1,0" BorderBrush="Gray" Visibility="Collapsed">
-
-            </Border>
+            <Border Name="BotaToolContainer" Grid.Column="1" BorderThickness="0,0,1,0" BorderBrush="Gray" Visibility="Collapsed"></Border>
 
             <!--PDFViewer-->
-            <Border Grid.Column="2" x:Name="PDFGrid" Background="{StaticResource color.bg.mainpage}">
-            </Border>
-
+            <Border Grid.Column="2" x:Name="PDFGrid" Background="{StaticResource color.bg.mainpage}"> </Border>
+            
             <!--右侧面板-->
             <Grid Grid.Column="3" Visibility="Hidden"></Grid>
         </Grid>

+ 9 - 1
compdfkit_demo_windows/compdfkit/viewer-ctrl-demo/MainWindow.xaml.cs

@@ -141,10 +141,18 @@ namespace viewer_ctrl_demo
         private void OutlineToolButton_Click(object sender, RoutedEventArgs e)
         {
             UIElement botaTool = GetBotaTool();
-            if (botaTool == null||!(botaTool is CPDFOutline))
+            if (botaTool == null||!(botaTool is CPDFOutlineControl))
             {
+                CPDFOutlineUI outlineControl = new CPDFOutlineUI();
 
+                if (pdfViewer != null && pdfViewer.Document != null)
+                {
+                }
+                SetBotaTool(outlineControl);
             }
+            ExpandTool(OutlineToolButton.IsChecked == true);
+            ClearToolState(OutlineToolButton);
+
         }
         /// <summary>
         /// 设置Bota工具内容