在博客文章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时,将提供一种帮助形式,其中列出了可用命令。 这显示在下一个屏幕快照中。

此屏幕快照显示此版本的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。

从PDF提取图像:“ ExtractImages”

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

可以使用java -jar pdfbox-app-2.0.2.jar ExtractImages C:\pdf\BlackHillsSouthDakotaAndSurroundingSights.pdf命令使用PDFBox提取此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-3.jpg BlackHillsSouthDakotaAndSurroundingSights-4.jpg

加密PDF:“加密”

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

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

解密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。

合并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

分割PDF:“ PDFSplit”

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

快照表明,从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命令行工具:无需Java编码相关推荐

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

    apache pdfbox 在博客文章Apache PDFBox 2中 ,我演示了将Apache PDFBox 2用作从Java代码中调用的库来操作PDF. 事实证明,Apache PDFBox 2还 ...

  2. jcmd 命令_jcmd:一个可以全部统治的JDK命令行工具

    jcmd 命令 我在过去的几篇文章中都引用了方便的JDK工具jcmd ,但是像我以前对jps所做的那样,只专注于它的实用性 . jcmd工具是随Oracle Java 7引入的,通过使用它来识别Jav ...

  3. jcmd:一个可以全部统治的JDK命令行工具

    我在过去的几篇文章中都引用了方便的JDK工具jcmd ,但是像我以前对jps所做的那样,仅专注于其实用性 . jcmd工具是随Oracle Java 7引入的,在通过使用Java标识Java进程的ID ...

  4. java 编写命令行工具_编写命令行工具

    1.使用common-cli编写命令行工具 commons-cli是Apache开源组织提供的用于解析命令行参数的包. 先引用common-cli依赖包: commons-cli commons-cl ...

  5. 使用 Apache Commons CLI 开发命令行工具

    http://www.ibm.com/developerworks/cn/java/j-lo-commonscli/index.html 使用 Apache Commons CLI 开发命令行工具 杨 ...

  6. 深入理解Java虚拟机-如何利用 JDK 自带的命令行工具监控上百万的高并发的虚拟机性能...

    虚拟机系列文章 深入理解 Java 虚拟机(第一弹) - Java 内存区域透彻分析 深入理解 Java 虚拟机(第二弹) - 常用 vm 参数分析 深入理解 Java 虚拟机-如何利用 Visual ...

  7. Java虚拟机学习(8):查看JVM参数及值的命令行工具

    查看JVM各个参数值方式 1. HotSpot vm中的各个globals.hpp文件  查看jvm初始的默认值及参数 globals.hpp globals_extension.hpp c1_glo ...

  8. 深入理解Java虚拟机-如何利用 JDK 自带的命令行工具监控上百万的高并发的虚拟机性能

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:打卡活动第二期来啦,100% 能获得奖品个人原创+1博客:点击前往,查看更多 虚拟机系列文章 深入理解 Java ...

  9. java venus_来认识一下venus-init——一个让你仅需一个命令开始Java开发的命令行工具...

    前言 不知道你是否有过这样的经历.不管你是什么岗位,前端也好,后端也罢,想去了解一下Java开发到底是什么样的,它是不是真的跟传说中的一样. 于是你拿起键盘,用触控板 ? '' : 抄起鼠标',开始了 ...

最新文章

  1. 网站迁移的一般步骤、常见问题及解决措施
  2. [再寄小读者之数学篇](2014-11-14 矩阵的应用: 多项式)
  3. Codeforces Round #212 (Div. 2) C. Insertion Sort 思维
  4. 被问到有没有内核开发经验_一个人就是一个开发团队!成电硬核毕业生自制迷你电脑走红!...
  5. 变更控制管理流程图_制度是最好的老板,流程就是最好的管理!流程建立法则(附案例)...
  6. mysql运维机制_《MySQL运维内参》节选 | InnoDB日志管理机制(一)
  7. ambiguous package name 'libglib2.0-0' with more than one installed instance
  8. bootstrap table 主子表 局部数据刷新(刷新子表)
  9. JavaScript:单选钮的事件处理
  10. js休眠5秒_JS 之秒开方案大全
  11. OpenCV的图像分类基础知识
  12. 程序员过了 35 岁还能干嘛?这是我听过最棒的建议!
  13. Layui表单的验证
  14. 基于单片机的打地鼠游戏仿真设计(#0040)
  15. 详解wait/waitpid的参数:status
  16. 坚果云 不在计算机显示图标,在Ubuntu18.04系统顶栏不显示坚果云图标的解决办法...
  17. 怎么把微信公众号的文章里的音频或视频下载到电脑和手机
  18. 浅谈Ubuntu 18.04.1 LTS x86_64安装,美化配置及常用软件安装配置的历程
  19. 计算机导论的平时分多少,学霸养成 | 大一期末考试经验第二弹,千万别错过!...
  20. 8个让程序员追悔莫及的职业建议

热门文章

  1. Java 9 中的 GC 调优基础
  2. Java 正则表达式匹配模式[贪婪型、勉强型、占有型]
  3. 复制vmware overLay网络无法ping通 ping www.baidu.com可以
  4. IDEA导入Maven项目,pom.xml文件中 有inspects a maven model for resolution problems报错 !!!!!!!!!!有用
  5. 2020年日历电子版(打印版)_“温故知新”——2020年《故宫日历》(青少版)正式发布...
  6. python股票自动买卖视频教程_十分钟学会用Python交易股票
  7. Spring MVC : 概念模型 HandlerMethod(转载)
  8. poj doubles_余数运算符在Java中用于Doubles
  9. 基于Spring Boot配置文件的日志记录示例样本
  10. autovalue_AutoValue:生成的不可变值类