Apache PDFBox命令行工具:无需Java编码

在博客文章Apache PDFBox 2中 ,我演示了将Apache PDFBox 2用作从Java代码中调用的库来操作PDF。 事实证明,Apache PDFBox 2还提供了可以直接从命令行直接使用的命令行工具 ,而无需其他Java编码。 有几种命令行工具可用,我将在本文中演示其中一些工具。

PDFBox命令行工具通过利用PDFBox的可执行JAR (带有Main-Class: org.apache.pdfbox.tools.PDFBox java -jar Main-Class: org.apache.pdfbox.tools.PDFBox )来执行。 这是JAR,名称中带有“ app”,对于此特定博客文章,为pdfbox-app-2.0.2.jar 。 用于在java -jar pdfbox-app-2.0.2.jar <Command> [options] [files]调用这些工具的通用格式。

在不带参数的情况下执行可执行JAR时,将提供一种帮助形式,其中列出了可用命令。 这显示在下一个屏幕快照中。

pdfBoxCommandLineToolsHelp

此屏幕快照显示此版本的Apache PDFBox(2.0.2)宣传支持ConvertColorspace, Decrypt , Encrypt , ExtractText , ExtractImages , OverlayPDF , PrintPDF , PDFDebugger , PDFMerger , PDFReader , PDFSplit , PDFToImage , TextToPDF ,和WriteDecodedDoc 。

提取文本:“ ExtractText”

我正在查看的第一个命令行工具是从PDF中提取文本。 我在以前的博客文章中演示了使用PDFBox从Java代码执行此操作。 在这里,我将使用PDFBox直接在命令行中执行相同的操作,而看不到Java源代码。 以下操作通过示例从PDF Scala中提取文本。 在我以前的文章中,Java代码在线访问了此PDF,并使用PDFBox从中提取文本。 在这种情况下,我已经通过示例下载了Scala,并针对存储在我的硬盘中C:\pdf\ScalaByExample.pdf上的已下载PDF运行了PDFBox ExtractText命令行工具。

使用PDFBox从命令行从PDF中提取文本的命令是: java -jar pdfbox-app-2.0.2.jar ExtractText C:\pdf\ScalaByExample.pdf 。 接下来的两个屏幕快照演示了如何运行此命令及其生成的文件。 从这些屏幕快照中,我们可以看到此命令生成的文本文件默认与源PDF具有相同的名称,但扩展名为.txt 。 此命令支持多个选项,包括通过在源PDF的文件名之后放置该名称来指定文本文件的名称的功能,以及通过-console标志(而不是通过-console标志)将文本写入控制台而不是文件的功能。输出可以重定向)。 接下来显示有关如何指定自定义文本文件名以及如何将文本定向到控制台而不是文件的示例。

  • 明确指定文本文件名:
    • java -jar pdfbox-app-2.0.2.jar ExtractText C:\pdf\ScalaByExample.pdf C:\pdf\dustin.txt
  • 在控制台上渲染文本
    • java -jar pdfbox-app-2.0.2.jar ExtractText -console C:\pdf\ScalaByExample.pdf

来自文本的PDF:“ TextToPDF”

如果需要采用其他方法(从文本开始作为源并生成PDF),则命令TextToPDF是合适的。 为了说明这一点,我使用的是名为doi.txt的源文本文件,其中包含美国独立宣言的一部分 :

The unanimous Declaration of the thirteen united States of America,When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature's God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation.We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness

C:\pdf\doi.txt处有示例文本文件的情况下,可以对它运行PDFBox的TextToPDF 。 命令java -jar pdfbox-app-2.0.2.jar TextToPDF C:\pdf\doi.pdf C:\pdf\doi.txt (请注意,目标PDF被列为第一个参数,而源文本文件列在其中列为第二个参数)。 接下来的三个屏幕快照演示了如何运行此命令从源文本文件成功生成PDF。

20160707-正在运行PDFBoxTextToPDF

20160707-doiPdfGeneratedByPDBBoxTextToPDF

20160707-doiPdfInAdobeReader

从PDF提取图像:“ ExtractImages”

PDFBox命令行工具ExtractImages使得从PDF提取图像变得容易,而命令行工具“ ExtractText”使它可以从PDF提取文本。 我对这种功能的演示将从我使用南达科他州黑山(及其周边地区)的图像创建的PDF中提取四张图像,这些图像称为BlackHillsSouthDakotaAndSurroundingSights.pdf 。 接下来显示此PDF的屏幕快照。

20160708-黑色小山PDF

可以使用java -jar pdfbox-app-2.0.2.jar ExtractImages C:\pdf\BlackHillsSouthDakotaAndSurroundingSights.pdf命令使用PDFBox提取此PDF中的四张照片,如下一个屏幕快照所示。

20160708-blackHills四张图片摘自PDF

如上一个屏幕快照所示,运行此命令将从PDF中提取四张图像。 每个提取的图像均以源PDF命名,并在名称的末尾附加连字符和计数整数。 生成的图像也是扩展名为.jpg JPEG文件。 在这种情况下,生成的文件的名称为BlackHillsSouthDakotaAndSurroundingSights-1.jpg,BlackHillsSouthDakotaAndSurroundingSights-2.jpg,BlackHillsSouthDakotaAndSurroundingSights-3.jpg和BlackHillsSouthDakotaAndSurroundingSights-4.jpg,然后直接在提取的PDF中显示。

BlackHillsSouthDakotaAndSurroundingSights-1.jpg BlackHillsSouthDakotaAndSurroundingSights-2.jpg
BlackHillsSouthDakotaAndSurroundingSights-1 BlackHillsSouthDakotaAndSurroundingSights-2
BlackHillsSouthDakotaAndSurroundingSights-3.jpg BlackHillsSouthDakotaAndSurroundingSights-4.jpg
BlackHillsSouthDakotaAndSurroundingSights-3 BlackHillsSouthDakotaAndSurroundingSights-4

加密PDF:“加密”

Apache PDFBox使加密PDF变得容易。 例如,我可以使用以下命令对“ ExtractImages”示例中使用的PDF进行加密: java -jar pdfbox-app-2.0.2.jar Encrypt -O DustinWasHere -U DustinWasHere C:\pdf\BlackHillsSouthDakotaAndSurroundingSights.pdf ,如图所示。下一个屏幕快照:

20160714-pdfBox加密

运行crypto命令后,需要输入密码才能在Adobe Reader中打开此PDF:

20160714-pdfBoxEncryptedPDFRequiresPasswordInReader

解密PDF:“解密”

使用命令java -jar pdfbox-app-2.0.2.jar Decrypt -password DustinWasHere C:\pdf\BlackHillsSouthDakotaAndSurroundingSights.pdf解密此PDF一样容易,就像下一个屏幕快照所示, java -jar pdfbox-app-2.0.2.jar Decrypt -password DustinWasHere C:\pdf\BlackHillsSouthDakotaAndSurroundingSights.pdf 。 该图像演示了当没有提供用于解密PDF的密码(或提供了错误的密码)时,抛出了InvalidPasswordException ,然后显示了成功的解密,并且我再次能够在没有密码的情况下在Adobe Reader中打开PDF。

20160714-pdf盒解密

合并PDF:“ PDFMerger”

PDFBox允许使用“ PDFMerger”命令将多个PDF合并为一个PDF。 在下一个屏幕快照中,通过使用命令java -jar pdfbox-app-2.0.2.jar PDFMerger C:\pdf\doi.pdf C:\pdf\BlackHillsSouthDakotaAndSurroundingSights.pdf C:\pdf\third.pdf前面提到的两个单页PDF( doi.pdfBlackHillsSouthDakotaAndSurroundingSights.pdf合并到一个名为third.pdf的新PDF)中, third.pdf了这java -jar pdfbox-app-2.0.2.jar PDFMerger C:\pdf\doi.pdf C:\pdf\BlackHillsSouthDakotaAndSurroundingSights.pdf C:\pdf\third.pdf

20160714-pdf盒子合并

20160714-pdfs合并

分割PDF:“ PDFSplit”

我可以使用命令PDFSplit拆分刚刚用PDFMerger创建的third.pdf PDF。 这是一个特别简单的情况,因为要拆分的PDF只有两页。 命令 下一个屏幕快照对此进行了演示。

20160715-pdfBoxpSplit

20160715-pdfsSplitFromThirdPdf

快照表明,从third.pdf分离出来的PDF称为third-1.pdfthird-2.pdf

结论

在这篇文章中,我展示了一些现成的命令行实用程序,不需要Java编码。 还有一些其他命令行实用程序,此处未演示。 通过运行PDFBox发行版随附的可执行“ app” JAR,可以轻松使用所有这些命令。 作为命令行实用程序,这些工具具有命令行工具的优点,包括运行速度快,可以包含在脚本和其他自动化工具中。 这些工具的另一个好处是,由于它们是在开源中实现的,因此开发人员可以使用这些工具的源代码来查看如何在自己的应用程序和工具中使用PDFBox API。 Apache PDFBox的命令行工具是免费提供的,并且易于使用的PDF操作工具可以在无需编写额外的Java代码的情况下使用。

翻译自: https://www.javacodegeeks.com/2016/07/apache-pdfbox-command-line-tools-no-java-coding-required.html

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shocked的歌曲 类似shell_Shell Shocked歌词

Shell Shocked歌词添加日期&#xff1a;2014-11-04 时长&#xff1a;03分24秒 歌手&#xff1a;忍者神龟Kylie Minogue - Speakerphonewww.9ku.com 活在当下 制作LightsMindEyesHeartsLights (Flashin) Sound (Crashin)Minds (Blowin) Body (Rockin)Eyes (Lockin) Lips (Touchi…

除法上取整、下取整

C &#xff1d; A / B&#xff1b;// 默认就是下取整 C &#xff1d; (AB-1)/B; // 上取整算法

intellij idea

使用intellij idea的经验、会慢慢补全 目录 转载于:https://www.cnblogs.com/black-/p/9391846.html

ACM中Java使用总结

Java在ACM中的主要应用是大数类【个人见解】。做个小总结&#xff0c;留作模板用。 类名默认为Main。 输入&#xff1a; 声明一个输入对象cin;Scanner cinnew Scanner(System.in); 输入一个int值&#xff1a;Int acin.nextInt(); 输入一个大数&#xff1a;BigDecimal acin.next…

在分析了47,251个依赖关系之后,2016年排名前100的Java库

谁在上面&#xff0c;谁在后面&#xff1f; 我们分析了Github上的47,251个依赖关系&#xff0c;并抽取了前100个Java库 长周末我们最喜欢的消遣是浏览Github并搜索流行的Java库。 我们决定与您分享乐趣和信息。 我们分析了Github上前3,862个Java项目使用的12,059个独特Java库…

tensorflow源码编译教程_源码编译安装tensorflow 1.8

参考官方指南基本要求官网测试过的源代码配置如下&#xff1a;image也就是说&#xff0c;按照这个版本安装的话不应该再产生版本的问题了。我的配置ubuntu 16python 2.7nccl 2.3gcc 4.8.5cuda 7.1.4cudnn 9.0 (具体是9.0.176但是在./configure的那里不用输这么仔细&#xff0c;…

html2canvas关于图片不能正常截取

问题 首先说说遇到了什么问题。首先有这么一个需求。需要前端根据后端传过来数据&#xff0c;动态的生成图片。图片中的文案、背景图片、用户头像全部都是通过后端的接口获取。但是使用 html2canvas 生成的canvas有些图片成功的在canvas里生成了。但是有些图片无论如何都显示不…

tortoise清理本地分支_本地:延庆运污水环卫抽化粪池

北京兴百荣清洁公司是清理排水管道的技术服务中心。提供下水道疏通&#xff0c;化粪池清理&#xff0c;抽污水&#xff0c;化粪池清掏&#xff0c;管道清淤&#xff0c;下水道清洗&#xff0c;化粪池清理&#xff0c;抽粪&#xff0c;管道疏通&#xff0c;雨水管道清理&#xf…

C++矩阵优化算法

写在前面的话&#xff1a;此矩阵优化算法并非原创&#xff0c;笔者只是转述了一种智慧。 在C中&#xff0c;定义一个矩阵通常是这样的: class MyMatrix { ........ public: ........ float data[50000]; } 这里为了方便说明问题&#xff0c;使用固定大小的数…

win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程

由于工作需要&#xff0c;今天要在电脑上安装SQL Server 2005。以往的项目都是使用Oracle&#xff0c;MS的数据库还真的没怎么用过&#xff0c;安装Oracle已经轻车熟路&#xff0c;但装SQL Server好像还有点小麻烦&#xff0c;所以记录下来&#xff0c;以留备用。 ------------…

tensorflow中的Supervisor

tf.train.Supervisor()可以帮我们简化一些事情&#xff0c;可以保存模型参数和Summary&#xff0c;它有以下的作用&#xff1a; 1&#xff09;自动去checkpoint加载数据或初始化数据 &#xff0c;因此我们就不需要手动初始化或者从checkpoint中加载数据 2&#xff09;自身有一个…

jaxb 解析list元素_JAXB和根元素

jaxb 解析list元素XmlRootElement是人们习惯于与JAXB&#xff08;JSR-222&#xff09;一起使用的注释。 目的是将根元素与类唯一关联。 由于JAXB类映射到复杂类型&#xff0c;因此一个类有可能对应于多个根元素。 在这种情况下&#xff0c;无法使用XmlRootElement &#xff0c;…

抓娃娃机爪不动怎么办_黄子韬吃娃娃菜能把临时牙咬断?种植牙到底结实不结实?...

黄子韬的临时牙上热搜了&#xff0c;最高排名热搜榜第四位。有关牙齿的事儿瞬间让我这个口腔医生来了八卦之心&#xff0c;在看了后面的各种评论之后&#xff0c;我大概梳理清楚这到底是怎么回事了&#xff1a;小时候因为调皮所以摔断了门牙&#xff0c;前些日子门牙做了种植牙…

从SVN迁移到Git(包括SVN历史纪录)【最系统的讲解】

从SVN迁移到git有很多方法&#xff0c;最简单的就是使用git包自带的git svn命令&#xff08;git v1.7及以上&#xff09;。除此之外还有一些第三方的专门的转换工具如http://www.subgit.com/&#xff0c;https://www.atlassian.com/git/tutorials/migrating-overview/等。但是由…

反射的应用

class Teacher:OPERATE_DIC [(创建课程, create_course),(创造学生, create_student),(创建课程, create_course),(查看学生信息, check_student_info),]def __init__(self, name):self.name namedef create_course(self):print(创建课程)def create_student(self):print(创建…

抖音数据统计_26万条抖音数据背后的推荐逻辑以及严重失调的男女比例

本文作者&#xff1a;喜哥&#xff08;张佳&#xff09;易灵微课《数据分析-认知与实践》讲师新榜数据分析师人人都是产品经理、华尔街见闻专栏作家简书科技类优秀作者本文首发自公众号喜新&#xff08;noyanjiu&#xff09;,如需转载请注明出处这次是26W条数据&#xff0c;应该…

SQL SERVER 数据库主键和外键的思考

SQL SERVER 数据库主键和外键的思考 什么是主键&#xff1a; 主键是指表中一个列或者列的组合&#xff0c;其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键&#xff0c;通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建…

在Gradle 2.13中更好地处理“在插件Y上找不到属性X”

您可能从未听说过的服务缺少用户名&#xff0c;密码或令牌&#xff1f; 这通常发生在您尝试执行任何操作&#xff08;例如仅构建项目&#xff09;时&#xff0c;不仅发生在使用给定的插件&#xff08;例如在线代码覆盖工具&#xff09;时。 我不想修改我的环境&#xff0c;而只…

2018/7/31 -zznu-oj -问题 C: 磨刀- 【扩展欧几里得算法的基本应用】

问题 C: 磨刀 时间限制: 1 Sec 内存限制: 128 MB提交: 190 解决: 39[提交] [状态] [讨论版] [命题人:admin]题目描述 磨刀是一个讲究的工作&#xff0c;只能在n℃下进行&#xff0c;所以我们首先要做的就是把刀的表面温度提升到n℃。处理刀身温度有两种方式&#xff1a;1.淬火…

统计各个函数的耗时_分享一次CMS GC耗时狠高优化过程全记录

1. 背景多个业务线的应用出现LongGC告警最近一段时间&#xff0c;经常收到CAT报出来的Long GC告警(配置为大于3秒的为Longgc)。2. 知识回顾2.1 JVM堆内存划分新生代(Young Generation)新生代内被划分为三个区&#xff1a;Eden&#xff0c;from survivor&#xff0c;to survivor…