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

apache pdfbox

在博客文章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的“可用的命令”的支持, 解密 , 加密 , 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

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

20160708-blackHillsFourImagesExtracted fromPDF

如上一个屏幕快照所示,运行此命令将从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”

我可以分裂third.pdf只是创建PDF PDFMerger用命令PDFSplit 。 这是一个特别简单的情况,因为要拆分的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

apache pdfbox

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

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

相关文章

【WebRTC---源码篇】(六)NACK判断包位置的关键算法

首先保证a与b不相等 template <typename T, T M = 0> inline bool AheadOf(T a, T b) {static_assert(std::is_unsigned<T>::value,"Type must be an unsigned integer.");return a != b && AheadOrAt<T, M>(a, b); } template <type…

spring集成mq_使用Spring Integration Java DSL与Rabbit MQ集成

spring集成mq我最近参加了在拉斯维加斯举行的2016年Spring大会 &#xff0c;很幸运地看到了我在软件世界中长期敬佩的一些人。 我亲自遇到了其中的两个人&#xff0c;他们实际上合并了几年前我与Spring Integration相关的一些次要贡献– Gary Russel和Artem Bilan &#xff0c;…

MyEclipse 如何使用断点调试

文章目录1、在需要的代码行处打断点右键添加断点双击添加断点快捷键添加断点2、以debug模式开启服务器通过debug执行列表&#xff0c;选择服务器启动当前程序按右键&#xff0c;选择debug as&#xff0c;再选择服务器启动开发视图底部server列表选择服务器开启debug视图&#x…

【WebRTC---源码篇】(八)音频数据采集

ADM的创建 1.Audio Device Module是在逻辑层与硬件设备层之间进行了转换,需要使用什么功能,调用什么接口就可以,不要管底层平台实现。 2.AudioDeviceModule是一个接口类,定义了一系列接口。最终实现由子类AudioDeviceModuleForTest实现,其中包括一些测试函数(对设备的…

jsf netbeans_NetBeans Java EE技巧9:从数据库创建JSF应用程序

jsf netbeans您需要非常快速地创建数据库前端吗&#xff1f; NetBeans IDE允许人们以很少的代码就为一组数据库表开发JSF应用程序前端。 现在&#xff0c;本教程是一个老歌&#xff0c;但是一个好东西……对于那些不了解它的人来说&#xff0c;值得再次提及。 首先&#xff0c…

cloud foundry_介绍“又一个” Cloud Foundry Gradle插件

cloud foundry在与两个同事&#xff08;感谢Mark Alston和Dave Malone &#xff01;&#xff09;一起使用自动Jenkins管道部署Cloud Foundry应用程序的过程中&#xff0c;我决定尝试编写Gradle插件来执行一些通常需要完成的任务使用命令行Cloud Foundry Client完成 。 引入一个…

Oracle/MySQL/Java数据类型对应表

文章目录数据类型对照表MySQL 的 int、bigint、mediumint、smallint、tinyint 的对比关于 MySQL 整型显示位数的问题关于 MySQL 的 timestamp关于 JDBC 类型数据类型对照表 MysqlOracleJavaBIGINTNUMBER(19,0)java.lang.LongBITRAWbyte[]BLOBBLOB RAWbyte[]CHARCHARjava.lang.…

java10个基础错误_我们处理了10亿个Java记录的错误-这是导致97%的错误的原因

java10个基础错误97&#xff05;的记录错误是由10个唯一错误引起的 在2016年&#xff0c;一件事在30年内没有改变。 开发和运营团队仍依靠日志文件对应用程序问题进行故障排除。 由于某些未知原因&#xff0c;我们隐式信任日志文件&#xff0c;因为我们认为事实隐藏在其中。 如…

3制造数据集_基于MBD的产品设计制造技术研究

本篇节选自论文《基于MBD的产品设计制造技术研究》&#xff0c;发表于《中国电子科学研究院学报》第8卷第6期&#xff0c;作者为中国电子科技集团公司第14研究所专家朱建军。本文经授权转载自公众号学术plus&#xff0c;版权归原作者所有。作者&#xff1a;中国电子科技集团公司…

【WebRTC---源码篇】(九)媒体协商

1.媒体协商的过程 2. 重要的接口类 3.时序图 4.几个关键点 5.code if (InitializePeerConnection()) {peer_id_ = peer_id;//参数1:观察者,创建成功后回调OnSuccess//参数2:消息类型,自动推导peer_connection_->CreateOffer(this, webrtc::PeerConnectionInterface::RTCOff…

【WebRTC---源码篇】(七)NACK的处理流程

NACK调用栈 从分发器接收Packet包 void RtpVideoStreamReceiver::ReceivePacket(const RtpPacketReceived& packet) {if (packet.payload_size() == 0) {// Padding or keep-alive packet.// TODO(nisse): Could drop empty packets earlier, but need to figure out how…

java实现资源监视器_实现Java监视的12个步骤程序存在缺陷

java实现资源监视器Java监视的当前状态最大的问题是什么&#xff1f; 生产中的错误很像喝醉的短信。 您只有在事情已经发生之后才意识到出了点问题。 发短信日志通常比应用程序错误日志更有趣&#xff0c;但是……两者可能同样难以修复。 在本文中&#xff0c;我们将执行一个…

hystrix应用 博客_使用Hystrix DSL创建弹性骆驼应用程序

hystrix应用 博客Apache Camel是一个成熟的集成库&#xff08;到现在已有9年的历史了&#xff09;&#xff0c;它实现了Enterprise Integration Patterns一书中的所有模式。 但是Camel不仅是EIP实现库&#xff0c;它还是一个不断发展&#xff0c;添加新模式并适应行业变化的现代…

notebook打开外部文件_CAD外部参照真是个好东西!

好课推荐&#xff1a;零基础CAD&#xff1a;点我CAD室内&#xff1a;点我 周站长CAD&#xff1a;点我CAD机械&#xff1a;点我 Bim教程&#xff1a;点我CAD建筑&#xff1a;点我CAD三维&#xff1a;点我全屋定制&#xff1a;点我 ps教程&#xff1a;点我苹果版CAD:点我 3dmax教…

JSP动作元素/活动元素

文章目录jsp:forwardjsp:includejsp:paramjsp:useBeanjsp:setPropertyjsp:setProperty name"" property"" value""jsp:setProperty name"" property"" param""jsp:setProperty name"" property"*&…

gradle groovy_适用于Java开发人员的Groovy吗? 认识Gradle,Grails和Spock

gradle groovyJava开发人员最感兴趣的Groovy用例有哪些&#xff1f; 尽管已经有一段时间了&#xff0c;但似乎只有Groovy最近才开始使用Groove。 对于某些人来说&#xff0c;它基本上只是另一种深奥的JVM语言&#xff0c;但是由于一些流行的工具可以帮助您使用Java&#xff0c…

JSP 指令元素

文章目录page 指令import 属性pageEncoding 属性contentType 属性session 属性isELIgnored 属性errorPage 属性isErrorPage 属性include 指令file 属性taglib 指令uri 属性prefix 属性jsp 源文件转换成对应的 .java 文件时&#xff0c;jsp 的指令会影响 Java 源代码的生成&…

indesign中调出字符样式快捷键_Word中十大黄金快捷键,你会用几个?

在使用Word文档时&#xff0c;熟练使用快捷键能够有效的提升我们的工作效率&#xff0c;但是&#xff0c;Word中快捷键也比较多&#xff0c;要想全部掌握&#xff0c;那不太现实&#xff0c;这里&#xff0c;易老师给大家挑选了10组黄金快捷键&#xff0c;非常实用。01 快速移动…

couchbase集群_使用CLI扩展和重新平衡Couchbase集群

couchbase集群Couchbase通过多种方式提供高可用性和灾难恢复 &#xff1a; 同质簇 复写 集群内复制 备份还原 机架区意识 该博客将展示如何使用Couchbase命令行界面&#xff08;CLI&#xff09;创建Couchbase集群。 此外&#xff0c;还可以使用Couchbase REST API和Couchba…

maya室内模型_C4d和3dmax、maya相比有什么优势?

C4D和3dmax、maya都是三维软件&#xff0c;功能都是非常的nice&#xff0c;很多新手小伙伴就在好奇它们有什么区别&#xff0c;对比之下&#xff0c;c4d有哪些优势&#xff1f;c4d和3dmax的主要应用领域就是区分它们的地方。C4D一般用于栏目包装&#xff0c;影视后期&#xff0…