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,一经查实,立即删除!

相关文章

Java数组的学习

文章目录数组的声明和定义数组的特点如何使用数组数组的声明和定义 int[] ary new int[4] //动态初始化&#xff0c;长度4 int[] ary new int[]{1,2,3} //直接使用元素创建数组&#xff0c;也是动态初始化 int[] ary {1,2,3} //静态初始化// 数组变量的声明 int[] ary; in…

C++ 11 深度学习(十七)condition_variable、wait

简介 条件变量std::condition_variable的作用是阻塞线程&#xff0c;然后等待通知将其唤醒。我们可以通过某个函数判断是否符合某种条件来决定是阻塞线程等待通知还是唤醒线程&#xff0c;由此实现线程间的同步。所以简单来说condition_variable的作用就两个——等待(wait)、通…

【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;…

blt功能_BitBlt实现TransparentBlt

文章用BitBlt实现了TransparentBlt的功能&#xff0c;主要的工作如下&#xff1a;void TransparentBlt2(HDC hdcDest, // 目标DCint nXOriginDest, // 目标X偏移int nYOriginDest, // 目标Y偏移int nWidthDest, // 目标宽度int nHeightDest, // 目标高度HDC hdcSrc, // 源DCint…

MyEclipse 如何使用断点调试

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

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

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

openlayers地图旋转_地图切换动画#openlayers入门笔记#

本博客合集是我的openlayers学习笔记&#xff0c;希望能帮助到刚开始接触openlayers的同学commnet 所用openlayers版本&#xff1a;v5.3.0commnet 阅读本文前需要对前端知识有一定的了解comment 本文内容只提供参考&#xff0c;建议结合openlayers官网的API和examples来学习com…

6种漂亮的线条

第一种&#xff1a; <hr style" height:2px;border:none;border-top:2px dotted #185598;" /> height:2px;是hr的高度 border:none;是没有边框 border-top:2px dotted #185598;是设置横线的样式 dotted 点线 #185598 颜色 第二种&#xff1a; <hr st…

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

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

python内置属性类_Python内置类属性,元类研究

Python内置类属性我觉得一切都是对象&#xff0c;对象和元类对象&#xff0c;类对象其实都是一样的&#xff0c;我在最后进行了证明&#xff0c;但是只能证明一半&#xff0c;最后由于元类的父类是type&#xff0c;他可以阻挡对object属性的访问&#xff0c;告终__dict__ : 类的…

java向后兼容吗_Java向后不兼容历史的观察

java向后兼容吗在大多数情况下&#xff0c;Java是一个非常向后兼容的编程语言。 这样做的好处是&#xff0c;与大规模破坏兼容性相比&#xff0c;大型系统通常可以相对轻松的方式升级为使用Java的较新版本。 这样做的主要缺点是Java坚持了一些设计决策&#xff0c;这些决策自那…

转义字符的整理

文章目录转义符号 \转义字符清单换行符横向制表符空格编码符转义符号 \ 反斜杠\在程序设计中称为转义符&#xff0c;用来表示那些不能直接显示的字符。例如&#xff1a;换行。 在不同的系统中换行的表示又不相同&#xff0c;在Unix中换行符是\n,而在Windows中换行符是\r\n&…

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

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

C++ 11 深度学习(十八)模板概念,函数模板定义、调用

模板作为一个框架&#xff0c;通过传入的参数&#xff0c;来具体实例化想要的东西。 1.模板定义是用template关键字开头的&#xff0c;后跟<>,<>里面叫模板参数列表(模板实参)&#xff0c;如果模板参数列表中有多个参数使用逗号隔开。 2.<>里面至少要有一个…

kotlin将对象转换为map_Kotlin 集合框架:常用集合工具函数(Map 部分)

kotlin.collections.Maps.kt 文件定义了许多针对 Map 接口的工具函数&#xff0c;其中大多数是涉及函数式编程的高阶函数&#xff0c;我们在这里先不讲&#xff0c;等到集合框架结束后进入高阶函数时再讲。今天只讲几个简单的函数。Pair 类和 to() 函数Map 接口表示一种“键 -&…

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;因为我们认为事实隐藏在其中。 如…