当前位置: 首页 > news >正文

使用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查看器

第一步:创建一个新项目

  1. 启动Visual Studio 2022, 单击创建新项目
    在这里插入图片描述

  2. 选择“WPF APP (.NET Framework)”,然后单击“下一步”。
    在这里插入图片描述

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

  4. 点击“创建”按钮,至此项目创建完成。

第二步:添加ComPDFKit PDF SDK包

  1. 打开您的项目解决方案,右击“引用”,在右键菜单项中选择“管理Nuget程序包”,这将打开您的项目的NuGet包管理器。
    在这里插入图片描述

  2. 点击“浏览”,设置程序包源为nuget.org,搜索ComPDFKit.NetFramework,您将搜索到“ComPDFKit.NetFramework”包。
    在这里插入图片描述

  3. 选中包后,在右侧包的详情面板中,点击“安装”来下载包。
    在这里插入图片描述

  4. 安装完成后,您现在可以在“解决方案资源管理器”->“引用”中找到对应的包的引用。
    在这里插入图片描述

第三步,应用许可证密钥

您可以联系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查看器已经创建完成。
在这里插入图片描述

故障排除

  1. 如果在LicenseVerify()函数中出现System.IO.FileNotFoundException,如下图:
    在这里插入图片描述

检查您的 WPF 项目并确保在创建项目时选择WPF APP(.NET Framework)而不是WPF Application。
在这里插入图片描述

  1. 其他问题
    如果您在集成我们的 ComPDFKit PDF SDK for Windows 时遇到其他问题,请随时联系ComPDFKit 团队。

相关文章:

使用C#基于ComPDFKit SDK快速构建PDF阅读器

在当今世界&#xff0c;Windows 应用程序对我们的工作至关重要。随着处理 PDF 文档的需求不断增加&#xff0c;将 ComPDFKit PDF 查看和编辑功能集成到您的 Windows 应用程序或系统中&#xff0c;可以极大地为您的用户带来美妙的体验。 在本博客中&#xff0c;我们将首先探索集…...

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”

问题&#xff1a;电脑运行“start.bat”文件&#xff0c;无反应&#xff0c;闪退&#xff0c;管理员身份运行报错“unable to access jarfile” 解决思路&#xff1a; 1、由于该项目运行需要jdk环境&#xff0c;检查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进行&#xff0c;所以先设置国内镜像源。去网上搜 1.安装truffle npm install truffle -gtruffle --version 安装完其他项目依赖&#xff0c;能够产生一下效果 2.项目创建 创建test文件夹 mkdir test进入test cd test初始化项目 truffle …...

vb+access库存管理系统设计与实现

第一章库存信息管理系统的基本问题 1.1 库存信息管理系统的简介 本系统是为了提高腾达公司自动化办公的水平、经过详细的调查分析初步制定了腾达公司库存信息管理系统。基于WINDOWS 98 平台,使用Microsoft Access97, 在Visual Basic 6.0编程环境下开发的库存信息管理系统。该…...

机器学习03-数据理解(小白快速理解分析Pima Indians数据集)

机器学习数据理解是指对数据集进行详细的分析和探索&#xff0c;以了解数据的结构、特征、分布和质量。数据理解是进行机器学习项目的重要第一步&#xff0c;它有助于我们对数据的基本属性有全面的了解&#xff0c;并为后续的数据预处理、特征工程和模型选择提供指导。 数据理解…...

Hadoop生态体系-HDFS

目录标题 1、Apache Hadoop2、HDFS2.1 设计目标&#xff1a;2.2 特性&#xff1a;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&#xff1a;允许使用简单的编程…...

《实战AI模型》——赶上GPT3.5的大模型LLaMA 2可免费商用,内含中文模型推理和微调解决方案

目录 准备环境及命令后参数导入: 导入模型: 准备LoRA: 导入datasets: 配置Config:...

工程安全监测无线振弦采集仪在建筑物的应用分析

工程安全监测无线振弦采集仪在建筑物的应用分析 工程安全监测无线振弦采集仪是一种在建筑物中应用的重要设备。它通过无线采集建筑物内部的振动信息&#xff0c;对建筑物的安全性进行监测和评估&#xff0c;为建筑物的施工和使用提供了可靠的技术支持。本文将详细介绍工程安全…...

OpenCV实现照片换底色处理

目录 1.导言 2.引言 3.代码分析 4.优化改进 5.总结 1.导言 在图像处理领域&#xff0c;OpenCV是一款强大而广泛应用的开源库&#xff0c;能够提供丰富的图像处理和计算机视觉功能。本篇博客将介绍如何利用Qt 编辑器调用OpenCV库对照片进行换底色处理&#xff0c;实现更加…...

安科瑞智能型BA系列电流传感器

安科瑞虞佳豪 壹捌柒陆壹伍玖玖零玖叁 选型...

Windows SMB 共享文件夹 排错指南

1 排错可能 是否系统名称为全英文格式 如果不是则 重命名 根据如下排错可能依次设置 1&#xff0c;在运行里面输入"secpol.msc"来启动本地安全设置&#xff0c;\ 然后选择本地策略–>安全选项 -->网络安全LAN 管理器身份验证级别&#xff0c;\ “安全设置”…...

nestjs+typeorm+mysql基本使用学习

初始化项目 安装依赖 npm i -g nest/cli 新建项目 nest new project-name 命令行创建 创建Controller&#xff1a;nest g co test 创建Module&#xff1a;nest g mo test 创建Service&#xff1a;nest g service test 请求创建 123123 接口文档swagger 安装依赖 npm…...

echarts柱状图每根柱子添加警戒值/阈值,分段警戒线

需求&#xff1a;柱状图每根柱子都添加单独的警戒值&#xff08;黄色线部分&#xff09;&#xff0c;效果图如下&#xff1a; 实现方式我这有两种方案&#xff0c;如下介绍。 方案1&#xff1a;使用echarts的标线markLine实现&#xff08;ps&#xff1a;此种方案有弊端&#x…...

边缘提取总结

边缘提取&#xff1a;什么是边缘&#xff1f; 图象的边缘是指图象局部区域亮度变化显著的部分&#xff0c;该区域的灰度剖面一般可以 看作是一个阶跃&#xff0c;既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相 差较大的灰度值。 边缘有正负之分&#xff0c;就像…...

intellij 编辑器内性能提示

介绍 IntelliJ IDEA已经出了最新版的2023.2&#xff0c;最耀眼的功能无法两个 AI Assistant编辑器内性能提示 AI Assistant 已经尝试过了是限定功能&#xff0c;因为是基于open ai,所以限定的意思是国内无法使用&#xff0c;今天我们主要介绍是编辑器内性能提示 IntelliJ Pr…...

手机python怎么用海龟画图,python怎么在手机上编程

大家好&#xff0c;给大家分享一下手机python怎么用海龟画图&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 1、如何python手机版创造Al&#xff1f; 如果您想在手机上使用Python来创建AI&#xff08;人工智能&#xff09;程序&#xff0…...

谈谈你对Synchronized关键字的理解及使用

synchronized关键字最主要的三种使用方式的总结 修饰实例方法&#xff0c;作用于当前对象实例加锁&#xff0c;进入同步代码前要获得当前对象实例的锁修饰静态方法&#xff0c;作用于当前类对象加锁&#xff0c;进入同步代码前要获得当前类对象的锁 。也就是给当前类加锁&…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...