操作PDF相关的工具,EPUB转PDF,golang

unipdf

安装依赖
go get github.com/unidoc/unipdf/v3

示例代码
https://github.com/unidoc/unipdf-examples

获取KEY
登录 https://cloud.unidoc.io/ 注册账号,生成 KEY,但是需要收费。

chromedp

使用Golang编写,主要功能是调用浏览器内核来渲染HTML页面,也可以用它来在页面上做一些操作,还有一个附加功能是将渲染后的页面保存为PDF文件。

wkhtmltopdf

将HTML页面渲染成PDF,对应的 Go API是go-wkhtmltopdf

pdfcpu

https://github.com/pdfcpu/pdfcpu

https://pdfcpu.io/

使用Golang编写,主要功能是操作PDF文件,功能比较齐全。

go get github.com/pdfcpu/pdfcpu/...

gofpdf

主要功能是操作PDF文件,功能比较少。

unipdf

纯 Golang 实现的,需要在其平台注册账号,功能好用,但是收费

https://github.com/unidoc/unipdf

cpdf

https://community.coherentpdf.com/

mupdf

https://www.mupdf.com/index.html

xpdf

https://www.xpdfreader.com/

qpdf

http://qpdf.sourceforge.net/

PDF-Writer

https://github.com/galkahana/PDF-Writer

rsc/pdf

https://github.com/rsc/pdf

PDFium

https://www.jianshu.com/p/3459275151c3

gofpdf

https://github.com/jung-kurt/gofpdf

Package gofpdf implements a PDF document generator with high level support for text, drawing and images.

Golang实现的创建PDF文件的库,目前支持text, drawing and images,已经停止了维护。

案例

1、将多个jpg文件合并到一个PDF文件中去,直接使用 pdfcpu。

2、将 epub 转换成一个pdf:先将epub解压,得到xhtml,然后使用chromedp将xhtml转换成pdf,最后调用pdfcpu将多个pdf合并成一个pdf文件。

具体使用:https://github.com/phprao/go-pdf

参考:https://www.jb51.net/article/177661.htm

关于EPUB文件

EPUB(Electronic Publication)是一种基于XML的电子书格式,广泛用于智能手机、平板电脑和其它读取数字化书籍的设备。EPUB文件可以包含图片、文本和HTML,并且支持搜索和书签功能。

EPUB的结构文件是XML,内容一般是HTML或XHTML,里面会带有图片和CSS文件等资源,将EPUB文件使用 zip解压出来,可以直接使用浏览器打开其中的HTML页面,所以将EPUB转换成PDF就是将HTML转换成PDF。因此EPUB的最终展示效果需要用到浏览器引擎来渲染。

使用微软的 [calibre](calibre - 下载 Windows) 软件来打开EPUB文件,点击“编辑书籍”可打开详细目录。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用 zip 程序解压,下面是一个EPUB文件解压后的目录结构。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/213625.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【面试攻略】Oracle中blob和clob的区别及查询修改方法

大家好,我是小米,欢迎来到小米的技术小屋!今天我们要一起来聊聊一个在面试中常常被问到的问题——“Oracle中Blob和Clob有啥区别,在代码中怎么查询和修改这两个类型的字段里的内容?”别急,跟着小米一步步揭…

Android11适配已安装应用列表

Android11适配已安装应用列表 之前做过已安装应用列表的适配,最近国内版SDK升级到33和隐私合规遇到很多问题,于是把已安装应用列表记录一下: 1、在Android11及以上的适配: package com.example.requestinsttallapplistdemoimpo…

K210开发板之VSCode开发环境使用中添加或删除文件(编译失败时)需要注意事项

在最初开始接触,将VScode和编译环境搭载好后,就开始运行第一个程序了,为了后续方便开发测试,这里我自己对照官方提供的例子,自己调试,写了一个简单的文件系统 后续,所有关于开发的源文件都在...…

Sun Apr 16 00:00:00 CST 2023格式转换

Date date new Date(); log.info("当前时间为:{}",date); //yyyy-MM-dd HH:mm:ss SimpleDateFormat sdf new SimpleDateFormat(DateUtils.YYYY_MM_DD_HH_MM_SS); String dateTime s…

Git Bash环境下用perl脚本获取uuid值

在Linux环境下,比如在ubuntu就直接有uuidgen命令直接获取uuid值。在Windows环境下常用的git bash中没有对应的命令,略有不便。这里用脚本写一个uuidgen,模拟Linux环境下的uuidgen命令。 #! /usr/bin/perl use v5.14; use Win32;sub uuidGen {…

Springboot启动原理解析

我们开发任何一个Spring Boot项目,都会用到如下的启动类 SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);} } 从上面代码可以看出,Annotation定义&#x…

大数据技术学习笔记(七)—— Zookeeper

目录 1 Zookeeper 概述1.1 Zookeeper 定义1.2 Zookeeper 工作机制1.3 Zookeeper 特点1.4 数据结构1.5 应用场景 2 Zookeeper 安装3 客户端命令行操作4 Zookeeper 的 Java 客户端操作4.1 IDEA 环境搭建4.2 初始化 ZooKeeper 客户端4.3 创建子节点4.4 获取子节点4.5 判断Znode是否…

详解SpringAop开发过程中的坑

😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783…

Kubernetes实战(六)-多系统架构容器镜像构建实战

1 背景 最近在一个国产化项目中遇到了这样一个场景,在同一个 Kubernetes 集群中的节点是混合架构的,即其中某些节点的 CPU 架构是 x86 的,而另一些节点是 ARM 的。为了让镜像在这样的环境下运行,一种最简单的做法是根据节点类型为…

使用Java语言实现字母之间的大小写转换

这个类的作用为实现字母之间的大小写转换,通过加减32来完成。 输入的代码 import java.util.Scanner; public class WordChangeDemo {public static void main(String[] args){try (Scanner in new Scanner(System.in)) {System.out.println("请输入您要进…

springboot单元测试关闭日志

在logback中关闭日志 在test目录下新建文件夹resources&#xff0c;新增文件logback-test.xml文件 在logback-test.xml 文件中&#xff0c;添加内容&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <configuration><include resourc…

接口测试的简介及测试用例的设计

一&#xff0c;什么是接口 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。 二&#xff0c;接口…

《python每天一小段》--(1)与GPT-3.5-turbo 模型进行对话

对话如图&#xff1a; 配置环境变量 APIKey如何获得这边不做说明 在Windows操作系统中&#xff0c;你可以按照以下步骤设置环境变量&#xff1a; 打开“控制面板”。在控制面板中&#xff0c;选择“系统和安全”。选择“系统”。在系统窗口中&#xff0c;选择“高级系统设置”…

6-3 求3*3整数矩阵对角线元素之和

#include<stdio.h>int main(){int a[3][3],sum0;int i ,j;printf("输入元素&#xff1a;\n");for(i0;i<3;i)for(j0;j<3;j)scanf("%d",&a[i][j]);for(i0;i<3;i)sumsuma[i][i];printf("总和为&#xff1a;%d",sum);return 0;}

Python:私人定制密码保险库 - Vault

简介&#xff1a;Vault是一种用于安全访问机密的工具。秘密是您想要严格控制访问权限的任何内容&#xff0c;例如API密钥、密码、证书等等。Vault为任何机密提供了统一的界面&#xff0c;同时提供了严格的访问控制并记录了详细的审核日志。 历史攻略&#xff1a; Python&…

C++基础 -36- 模板之模板函数

模板函数格式 template <class T> void allexchange(T a,T b) {T c;c*a;*a*b;*bc; }模板函数可以增强函数的通用性 举例说明&#xff0c;使用一个模板函数实现了两个的函数的功能 #include "iostream"using namespace std;void myexchangeint(int* a,int* …

Mac卸载、安装Python

卸载 说明 对于删除 Python&#xff0c;我们首先要知道其具体都安装了什么&#xff0c;实际上&#xff0c;在安装 Python 时&#xff0c;其自动生成&#xff1a; Python framework&#xff0c;即 Python 框架&#xff1b;Python 应用目录&#xff1b;指向 Python 的连接。 …

【Tkinter 入门教程】

【Tkinter 入门教程】 1. Tkinter库的简介&#xff1a;1.1 GUI编程1.2 Tkinter的定位 2. Hello word! 程序起飞2.1 第⼀个程序2.2 字体颜色主题 3. 组件讲解3.1 tkinter 的核⼼组件3.2 组件的使⽤3.3 标签Label3.3.1 标签显示内容3.3.2 多标签的应⽤程序3.3.3 总结 3.4 按钮but…

leetcode 201 数字范围按位与

leetcode 201 题目题解代码 题目 给你两个整数 left 和 right &#xff0c;表示区间 [left, right] &#xff0c;返回此区间内所有数字 按位与 的结果&#xff08;包含 left、right 端点&#xff09;。 具体示例如下&#xff1a; 题解 本题是一个在思维上的方法&#xff0c;不…

Ant Design Pro 框架设置API Token拦截器的功能

分享记录一个解决方法&#xff0c;希望对大家有帮助。 找到文件&#xff0c;然后定义一个方法。最后调用一下即可。 代码我也给你贴上了。 // 获取token 拦截方法 const setTokenRequest (config: any) > {const token 30|eh5GNXWRe5rO4XLjbbnqy132RABfiKqI338EoIhqc790a…