使用C#基于ComPDFKit SDK快速构建PDF阅读器
在当今世界,Windows 应用程序对我们的工作至关重要。随着处理 PDF 文档的需求不断增加,将 ComPDFKit PDF 查看和编辑功能集成到您的 Windows 应用程序或系统中,可以极大地为您的用户带来美妙的体验。
在本博客中,我们将首先探索集成 ComPDFKit PDF SDK 的必要步骤,并使用 ComPDFKit 构建 Windows PDF 阅读器。
ComPDFKit SDK for Windows 入门
ComPDFKit 是一个功能强大的 PDF SDK。只需数行C#代码即可轻松将 ComPDFKit PDF SDK 嵌入到您的 Windows 应用程序中。让我们用几分钟时间开始使用。
以下部分介绍了配置要求、安装包的结构以及如何通过C#语言,使用 ComPDFKit PDF SDK制作 Windows PDF 阅读器。
要求
- Windows 7、8、10 和 11(32 位、64 位)。
- Visual Studio 2017 或更高版本。
- .NET Framework 4.6.1 或更高版本。
Windows包结构
您可以联系我们获取我们的PDF SDK安装包。
SDK包中包含以下文件:
- “Examples” - 包含Windows示例项目的文件夹。
- “lib” - 包含ComPDFKit动态库(x86, x64)的文件夹。
- “nuget” - 包含ComPDFKit.NetFramework nuget包的文件夹。
- “api_reference_windows.chm” - API参考文档。
- “developer_guide_windows.pdf” - 开发者文档。
- “legal.txt” - 法律和版权信息。
- “release_notes.txt” - Release信息。

使用C#构建Windows PDF查看器
第一步:创建一个新项目
-
启动Visual Studio 2022, 单击创建新项目

-
选择“WPF APP (.NET Framework)”,然后单击“下一步”。

-
配置您的项目:设置您的项目名称并选择存储程序的位置。在本示例中,项目名称称为“ComPDFKit Demo”。此示例项目使用 .NET Framework 4.6.1 作为编程框架。

-
点击“创建”按钮,至此项目创建完成。
第二步:添加ComPDFKit PDF SDK包
-
打开您的项目解决方案,右击“引用”,在右键菜单项中选择“管理Nuget程序包”,这将打开您的项目的NuGet包管理器。

-
点击“浏览”,设置程序包源为nuget.org,搜索ComPDFKit.NetFramework,您将搜索到“ComPDFKit.NetFramework”包。

-
选中包后,在右侧包的详情面板中,点击“安装”来下载包。

-
安装完成后,您现在可以在“解决方案资源管理器”->“引用”中找到对应的包的引用。

第三步,应用许可证密钥
您可以联系ComPDFKit团队获取试用许可证,在使用任何ComPDFKit SDK功能之前,需要进行的操作是设置许可证密钥。将以下方法“LicenseVerify()”添加到“MainWindow.xaml.cs”。
bool LicenseVerify()
{bool result = CPDFSDKVerifier.LoadNativeLibrary();if (!result){return false;}string Key = "Input your key instead of this string";string Secret = "Input your secret instead of this string";CPDFSDKVerifier.LicenseErrorCode verifyResult =CPDFSDKVerifier.LicenseVerify(Key, Secret);if (verifyResult != CPDFSDKVerifier.LicenseErrorCode.LICENSE_ERR_SUCCESS){return false;}return true;
}
第四步,显示PDF文档
现在,我们已经完成了所有准备工作,接下来我们将显示一份PDF文件。
将下面的代码添加到您的"MainWindow.xaml",“MainWindow.xaml.cs”,从而显示PDF文件。请注意,确保将“ComPDFKit_Demo”替换为您的项目名称。
您的"MainWindow.xaml"代码应该如下所示(在此,我将显示PDF文件的Grid命名为PDFGrid):
<Window x:Class="ComPDFKit_Demo.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:ComPDFKit_Demo"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800" UseLayoutRounding="True"><Grid><Grid.RowDefinitions><RowDefinition Height="*"/><RowDefinition Height="52"/></Grid.RowDefinitions><Grid Name="PDFGrid" Grid.Row="0" /><Button Content="Open PDF" Grid.Row="1" HorizontalAlignment="Left" Margin="10" Click="OpenPDF_Click"/></Grid>
</Window>
您的“MainWindow.xaml.cs”文件应该如下所示。
请注意:您需要输入许可证密钥,代码中需要修改的部分已使用注释进行了标注。您只需将注释下方的字符串内容自行替换即可。
using ComPDFKit.NativeMethod;
using ComPDFKit.PDFDocument;
using ComPDFKitViewer.PdfViewer;
using Microsoft.Win32;
using System.Windows;namespace ComPDFKit_Demo
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();LicenseVerify();}bool LicenseVerify(){bool result = CPDFSDKVerifier.LoadNativeLibrary();if (!result){return false;}// You should fill in your key and secret into the string below. string key = "Input your key instead of this string";string secret = "Input your secret instead of this string";LicenseErrorCode verifyResult = CPDFSDKVerifier.LicenseVerify(key, secret);if (verifyResult != LicenseErrorCode.LICENSE_ERR_SUCCESS){return false;}return true;}private void OpenPDF_Click(object sender, RoutedEventArgs e){// Get the path of a PDF file.var dlg = new OpenFileDialog();dlg.Filter = "PDF Files (*.pdf)|*.pdf";if (dlg.ShowDialog() == true){// Use the PDF file path to open the document in CPDFViewer.CPDFViewer pdfViewer = new CPDFViewer();pdfViewer.InitDocument(dlg.FileName);if (pdfViewer.Document != null &&pdfViewer.Document.ErrorType == CPDFDocumentError.CPDFDocumentErrorSuccess){pdfViewer.Load();PDFGrid.Children.Add(pdfViewer);}}}}
}
现在运行程序并单击“Open File”按钮,选择您需要显示的PDF文件,您将看到文件被显示在MainWindow上了。PDF查看器已经创建完成。

故障排除
- 如果在
LicenseVerify()函数中出现System.IO.FileNotFoundException,如下图:

检查您的 WPF 项目并确保在创建项目时选择WPF APP(.NET Framework)而不是WPF Application。

- 其他问题
如果您在集成我们的 ComPDFKit PDF SDK for Windows 时遇到其他问题,请随时联系ComPDFKit 团队。
相关文章:
使用C#基于ComPDFKit SDK快速构建PDF阅读器
在当今世界,Windows 应用程序对我们的工作至关重要。随着处理 PDF 文档的需求不断增加,将 ComPDFKit PDF 查看和编辑功能集成到您的 Windows 应用程序或系统中,可以极大地为您的用户带来美妙的体验。 在本博客中,我们将首先探索集…...
el-tabel导出excel表格
1、安装插件 npm install file-saver --save npm install xlsx --save 2、引入插件 import FileSaver from "file-saver"; import * as XLSX from xlsx; 3、在tabel中添加ref属性和导出方法 4、添加方法 exportExcel (excelName) {try {const $e this.$refs[repo…...
双击start.bat文件闪退,运行报错“unable to access jarfile”
问题:电脑运行“start.bat”文件,无反应,闪退,管理员身份运行报错“unable to access jarfile” 解决思路: 1、由于该项目运行需要jdk环境,检查jdk版本需要是1.8.0_251版本 通过在 cmd 命令行输入java -v…...
大数据Flink(五十一):Flink的引入和Flink的简介
文章目录 Flink的引入和Flink的简介 一、Flink的引入 1、第1代——Hadoop MapReduce...
c语言的数据类型 -- 与GPT对话
1 c语言的数据类型 在C语言中,数据类型用于定义变量的类型和存储数据的方式。C语言支持多种数据类型,包括基本数据类型和派生数据类型。以下是C语言中常见的数据类型: 基本数据类型(Primary Data Types): int: 整数类型,通常表示带符号的整数。char: 字符类型,用于存储…...
Truffle 进行智能合约测试
其他依赖 node.js、 由于是利用npm进行,所以先设置国内镜像源。去网上搜 1.安装truffle npm install truffle -gtruffle --version 安装完其他项目依赖,能够产生一下效果 2.项目创建 创建test文件夹 mkdir test进入test cd test初始化项目 truffle …...
vb+access库存管理系统设计与实现
第一章库存信息管理系统的基本问题 1.1 库存信息管理系统的简介 本系统是为了提高腾达公司自动化办公的水平、经过详细的调查分析初步制定了腾达公司库存信息管理系统。基于WINDOWS 98 平台,使用Microsoft Access97, 在Visual Basic 6.0编程环境下开发的库存信息管理系统。该…...
机器学习03-数据理解(小白快速理解分析Pima Indians数据集)
机器学习数据理解是指对数据集进行详细的分析和探索,以了解数据的结构、特征、分布和质量。数据理解是进行机器学习项目的重要第一步,它有助于我们对数据的基本属性有全面的了解,并为后续的数据预处理、特征工程和模型选择提供指导。 数据理解…...
Hadoop生态体系-HDFS
目录标题 1、Apache Hadoop2、HDFS2.1 设计目标:2.2 特性:2.3 架构2.4 注意点2.5 HDFS基本操作2.5.1 shell命令选项2.5.2 shell常用命令介绍 3、HDFS基本原理3.1 NameNode 概述3.2 Datanode概述 1、Apache Hadoop Hadoop:允许使用简单的编程…...
《实战AI模型》——赶上GPT3.5的大模型LLaMA 2可免费商用,内含中文模型推理和微调解决方案
目录 准备环境及命令后参数导入: 导入模型: 准备LoRA: 导入datasets: 配置Config:...
工程安全监测无线振弦采集仪在建筑物的应用分析
工程安全监测无线振弦采集仪在建筑物的应用分析 工程安全监测无线振弦采集仪是一种在建筑物中应用的重要设备。它通过无线采集建筑物内部的振动信息,对建筑物的安全性进行监测和评估,为建筑物的施工和使用提供了可靠的技术支持。本文将详细介绍工程安全…...
OpenCV实现照片换底色处理
目录 1.导言 2.引言 3.代码分析 4.优化改进 5.总结 1.导言 在图像处理领域,OpenCV是一款强大而广泛应用的开源库,能够提供丰富的图像处理和计算机视觉功能。本篇博客将介绍如何利用Qt 编辑器调用OpenCV库对照片进行换底色处理,实现更加…...
安科瑞智能型BA系列电流传感器
安科瑞虞佳豪 壹捌柒陆壹伍玖玖零玖叁 选型...
Windows SMB 共享文件夹 排错指南
1 排错可能 是否系统名称为全英文格式 如果不是则 重命名 根据如下排错可能依次设置 1,在运行里面输入"secpol.msc"来启动本地安全设置,\ 然后选择本地策略–>安全选项 -->网络安全LAN 管理器身份验证级别,\ “安全设置”…...
nestjs+typeorm+mysql基本使用学习
初始化项目 安装依赖 npm i -g nest/cli 新建项目 nest new project-name 命令行创建 创建Controller:nest g co test 创建Module:nest g mo test 创建Service:nest g service test 请求创建 123123 接口文档swagger 安装依赖 npm…...
echarts柱状图每根柱子添加警戒值/阈值,分段警戒线
需求:柱状图每根柱子都添加单独的警戒值(黄色线部分),效果图如下: 实现方式我这有两种方案,如下介绍。 方案1:使用echarts的标线markLine实现(ps:此种方案有弊端&#x…...
边缘提取总结
边缘提取:什么是边缘? 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以 看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相 差较大的灰度值。 边缘有正负之分,就像…...
intellij 编辑器内性能提示
介绍 IntelliJ IDEA已经出了最新版的2023.2,最耀眼的功能无法两个 AI Assistant编辑器内性能提示 AI Assistant 已经尝试过了是限定功能,因为是基于open ai,所以限定的意思是国内无法使用,今天我们主要介绍是编辑器内性能提示 IntelliJ Pr…...
手机python怎么用海龟画图,python怎么在手机上编程
大家好,给大家分享一下手机python怎么用海龟画图,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 1、如何python手机版创造Al? 如果您想在手机上使用Python来创建AI(人工智能)程序࿰…...
谈谈你对Synchronized关键字的理解及使用
synchronized关键字最主要的三种使用方式的总结 修饰实例方法,作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁 。也就是给当前类加锁&…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
