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

C#测试调用Ghostscript.NET浏览PDF文件

  Ghostscript.NET是针对Ghostscript的C#封装库,支持解析PostScript语言、操作PDF文件等。使用Ghostscript.NET的GhostscriptViewer 模块可以以图片形式查看PDF文档。本文学习并测试调用Ghostscript.NET模块打开及浏览PDF文件的基本用法。
  Ghostscript.NET目前主要支持.net framework,使用VS2022创建基于.net framework 4.8的Winform项目,在Nuget包管理器中搜索并安装Ghostscript.NET包。同时还需在参考文献4中下载相应32位或者64位的依赖包,否则程序运行过程中会报下面截图错误,提示需下载依赖安装包。
在这里插入图片描述

在这里插入图片描述
  Ghostscript.NET的GitHub官网中提供了GhostscriptViewer的使用案例(参考文献3),主要是配合PictureBox控件使用,调用GhostscriptViewer的Open函数打开PDF文件,然后处理GhostscriptViewer的DisplayPag、DisplaySize、DisplayUpdate事件,更新PictureBox控件的显示图片。同时,调用GhostscriptViewer的ShowFirstPage、ShowLastPage、ShowPreviousPage、ShowNextPage函数切换当前显示图片。
  主要代码包括(从参考文献3的示例中简化而来):

private GhostscriptViewer _viewer;public Form1()
{......_viewer = new GhostscriptViewer();_viewer.DisplaySize += new GhostscriptViewerViewEventHandler(_viewer_DisplaySize);_viewer.DisplayUpdate += new GhostscriptViewerViewEventHandler(_viewer_DisplayUpdate);_viewer.DisplayPage += new GhostscriptViewerViewEventHandler(_viewer_DisplayPage);
}void _viewer_DisplaySize(object sender, GhostscriptViewerViewEventArgs e){pbPage.Image = e.Image;}void _viewer_DisplayUpdate(object sender, GhostscriptViewerViewEventArgs e){pbPage.Invalidate();pbPage.Update();}void _viewer_DisplayPage(object sender, GhostscriptViewerViewEventArgs e){pbPage.Invalidate();pbPage.Update();}
private void btnFirst_Click(object sender, EventArgs e)
{_viewer.ShowFirstPage();
}private void btnLast_Click(object sender, EventArgs e)
{_viewer.ShowLastPage();
}private void btnPre_Click(object sender, EventArgs e)
{_viewer.ShowPreviousPage();
}private void btnNext_Click(object sender, EventArgs e)
{_viewer.ShowNextPage();
}

  下图为程序运行效果。Ghostscript.NET与PdfiumViewer相比,两者的Nuget包安装及依赖包安装类似,但后者提供有简单的浏览控件,且支持.net core。因此两者相比,PdfiumViewer使用相对更方便。
在这里插入图片描述

参考文献:
[1]https://github.com/ArtifexSoftware/Ghostscript.NET
[2]https://blog.csdn.net/gitblog_00044/article/details/138558845
[3]https://github.com/ArtifexSoftware/Ghostscript.NET/blob/master/Ghostscript.NET.Viewer/FMain.cs
[4]https://ghostscript.com/releases/gsdnld.html

相关文章:

C#测试调用Ghostscript.NET浏览PDF文件

Ghostscript.NET是针对Ghostscript的C#封装库,支持解析PostScript语言、操作PDF文件等。使用Ghostscript.NET的GhostscriptViewer 模块可以以图片形式查看PDF文档。本文学习并测试调用Ghostscript.NET模块打开及浏览PDF文件的基本用法。   Ghostscript.NET目前主要…...

MySQL本地安装步骤

下载MySQL ZIP压缩包 访问MySQL官网(https://www.mysql.com/)或下载页面(https://dev.mysql.com/downloads/mysql/)。 在下载页面选择“MySQL Community Server”作为下载目标。 根据你的操作系统(Windows)…...

redisson使用笔记

文章目录 spring集成redisson maven配置yml配置使用redisTemplate和redisson的区别 其他项目中看到redisson,看样子像是redis相关类库,实际也确实是。 还是老规矩,见到的要了解,需要的必须掌握,了解一下吧。 spring集成…...

设计模式之享元(Flyweight)模式

前言 面向对象很好地解决了 “抽象” 的问题,但是不可避免的要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理 具体需要自己根据需求去评估 定义 “对象性能” 模式。运用…...

桥接(桥梁)模式

简介 桥接模式(Bridge Pattern)又叫作桥梁模式、接口(Interface)模式或柄体(Handle and Body)模式,指将抽象部分与具体实现部分分离,使它们都可以独立地变化,属于结构型…...

语言模型发展史

四个阶段 第一阶段:基于规则和统计的语言模型 由人工设计特征并使用统计方法对固定长度的文本窗口序列进行建模分析,这种建模方式也被称为N-gram语言模型。 优点: 1)采用极大似然估计, 参数易训练 2)完全包含了前n-…...

【Linux】模拟实现一个shell

接受每一个人的批评,可是保留你自己的判断。 ——莎士比亚 一段时间的没有更新是由于最近开学期间比较的忙,同时也是由于刚开学的几门课才学习的时候有点迷糊,需要在学校课堂上花的时间更多了,所以才没有更新的,求放过…...

云原生数据库 PolarDB

简介:云原生数据库 PolarDB 是阿里云自研产品,在存储计算分离架构下,利用了软硬件结合的优势,为用户提供秒级弹性、高性能、海量存储、安全可靠的数据库服务。100%兼容MySQL和PostgreSQL生态,支持分布式扩展&#xff0…...

MobaXterm基本使用 -- 服务器状态、批量操作、显示/切换中文字体、修复zsh按键失灵

监控服务器资源 参考网址:https://www.cnblogs.com/144823836yj/p/12126314.html 显示效果 MobaXterm提供有这项功能,在会话窗口底部,显示服务器资源使用情况 如内存、CPU、网速、磁盘使用等: (完整窗口&#xff0…...

elastic Search 初步之向量检索的数据写入及检索查询

### Elasticsearch 向量检索实现方法方案 Elasticsearch 从 7.3 版本开始引入了向量检索功能,支持通过向量字段进行相似度搜索。以下是实现向量检索的步骤和方案,包括 Python 和 Java 版本的代码示例。 #### 1. 最低实现向量检索的 ES 版本 - **最低版本**: Elasticsearch …...

Tdesign TreeSelect 树形选择 多选

这里写自定义目录标题 小程序原生开发 Tdesign TreeSelect 树形选择 多选可以选择不同一级分类下的数据 小程序原生开发 Tdesign TreeSelect 树形选择 多选可以选择不同一级分类下的数据 TreeSelect 树形选择 在原demo基础上修改 const chineseNumber 一二三四五六七八九十.…...

Pygame中Sprite实现逃亡游戏5

在《Pygame中Sprite实现逃亡游戏4》中通过碰撞检测实现了玩家、飞龙与飞火之间的碰撞处理,基本上实现了逃亡功能。最后,实现这个逃亡游戏中文字提示的功能。 1 操作提示 当进入游戏后,会在玩家下方的位置给出操作提示,如图1所示…...

等保2.0数据库测评之达梦数据库测评

一、达梦数据库介绍 达梦数据库管理系统属于新一代大型通用关系型数据库,全面支持 ANSI SQL 标准和主流编程语言接口/开发框架。行列融合存储技术,在兼顾 OLAP 和 OLTP 的同时,满足 HTAP 混合应用场景。 本次安装环境为Windows10专业版操作…...

集成mcuboot后测试和验证的方法

本文介绍一些在实际项目中集成的 MCUboot后测试和验证的方法和步骤: 功能测试 启动测试 正常启动验证 : 多次上电启动设备,观察 MCUboot 是否能够正常加载并跳转到应用程序。检查启动过程中的日志输出(如果有)&#…...

Vulhub zico 2靶机详解

项目地址 https://download.vulnhub.com/zico/zico2.ova实验过程 将下载好的靶机导入到VMware中,设置网络模式为NAT模式,然后开启靶机虚拟机 使用nmap进行主机发现,获取靶机IP地址 nmap 192.168.47.1-254根据对比可知Zico 2的一个ip地址为…...

宠物医院微信小程序源码

文章目录 前言研究背景研究内容一、主要技术?二、项目内容1.整体介绍(示范)2.系统分析3.数据表信息4.运行截图5.部分代码介绍 总结 前言 随着当代社会科技的迅速发展,计算机网络时代正式拉来帷幕,它颠覆性的影响着社会…...

[教程]Crystal源码下载及编译

描述: 随着 Crystal Source 代码的更新,用于构建源代码和编译它们的指南已经过时,这导致了很多混淆和寻求帮助。 本指南将是一个完整的分步指南,从下载 Visual Studio 到启动到您的服务器。 此外,请确保下载此存储库中…...

【Android 14源码分析】WMS-窗口显示-流程概览与应用端流程分析

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…...

双指针---(部分地更新)

双指针 复写零 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改,不要从函数返回任何东西。 …...

【Windows】自定义显示器的分辨率

背景 由于本人更新驱动导致2个显示器里面,有一个显示器的分辨率只剩下2个可以调节 这样就导致2个显示器分辨率不同,更新了多次驱动都修复不了,所以想着看能不能自定义分辨率 工具下载 显示器自定义分辨率工具 或者百度搜索 Custom Resolu…...

基于springboot个人二手书交易平台设计与开发(源码+精品论文+答辩PPT等资料)

博主介绍:CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…...

用 Google Stitch 重构设计系统

大多数 AI 设计工具在你尝试将它们接入真实产品工作流之前都感觉像玩具,然后一切都崩塌了。Google Stitch 有趣的地方在于它试图将设计视为可编程的表面,而不仅仅是一个漂亮的画布。 1、Google Stitch 到底是什么 如果忽略营销宣传,Stitch …...

逻辑回归毕设效率优化实战:从特征工程到推理加速的全流程提速方案

最近在帮学弟学妹们看逻辑回归相关的毕业设计,发现一个普遍问题:大家把重点都放在了模型原理上,但代码一跑起来,训练慢、预测卡,整个流程效率低下,非常影响实验进度和最终演示效果。其实,逻辑回…...

ChatTTS 语音合成中如何高效添加语气词:原理与实战指南

最近在做一个语音播报项目,用到了ChatTTS,发现生成的语音虽然清晰,但总感觉少了点“人味儿”。特别是那些“嗯”、“啊”、“哦”之类的语气词,插进去之后特别生硬,像机器人在念稿,用户体验大打折扣。这让我…...

3大核心能力实现高效水印移除:WatermarkRemover-AI全解析

3大核心能力实现高效水印移除:WatermarkRemover-AI全解析 【免费下载链接】WatermarkRemover-AI AI-Powered Watermark Remover using Florence-2 and LaMA Models: A Python application leveraging state-of-the-art deep learning models to effectively remove …...

STM32硬件定时器中断库:零HAL依赖多实例调度

1. 项目概述STM32_TimerInterrupt是一个面向 STM32 全系列微控制器(覆盖 F0/F1/F2/F3/F4/F7/L0/L1/L4/G0/G4/H7/WB/MP1 等主流型号)的轻量级、高可靠硬件定时器中断驱动库。其核心设计目标是在不依赖 HAL 库底层阻塞逻辑的前提下,提供稳定、低…...

ChatTTS WebUI 字数限制解析与高效处理方案

最近在项目中用到了 ChatTTS 的 WebUI 接口进行语音合成,发现了一个挺实际的问题:它是有字数限制的。直接丢一篇长文章过去,经常会因为超限而失败,用户体验和开发流程都受到了影响。经过一番摸索和实践,我总结了一套处…...

LFM2.5-1.2B-Thinking-GGUF精彩案例:100字产品介绍生成质量实测分享

LFM2.5-1.2B-Thinking-GGUF精彩案例:100字产品介绍生成质量实测分享 1. 模型简介与测试背景 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的一款轻量级文本生成模型,特别适合在资源有限的环境中快速部署和使用。这款模型采用了GGUF格式和llama.cpp运行时…...

如何解决多显示器DPI缩放混乱?SetDPI工具实战指南

如何解决多显示器DPI缩放混乱?SetDPI工具实战指南 【免费下载链接】SetDPI 项目地址: https://gitcode.com/gh_mirrors/se/SetDPI 在现代办公环境中,多显示器配置已成为提升工作效率的标准方案。然而,当你将4K显示器与1080P显示器组合…...

【华为OD机试真题】手牌接龙 · 最大出牌次数(Python /JS)

一、真题题目描述:手里给一副手牌,数字从0-9,有(红色),g(绿色),b(蓝色),y(黄色)四种颜色,出牌规则为每次打出的牌必须跟上一张的数 字或者颜色相同,否则不能抽选。 选手应该怎么选才…...