使用 itext 对 PDF 页面重新排序

2024-01-20

我在用文本 pdf图书馆。有谁知道如何移动现有 pdf 中的页面吗?

其实我想移动文件开头的最后几页。

它类似于下面的内容,但我不明白它是如何工作的。

 reader = new PdfReader(baos.toByteArray());
 n = reader.getNumberOfPages();
 reader.selectPages(String.format("%d, 1-%d", n, n-1));
 PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(filename));
 stamper.close();

有谁能详细解释一下吗?


The selectPages()方法解释于第6章 http://manning.com/lowagie2/samplechapter6.pdf我的书(见第 164 页)。在代码片段 6.3 和 6.11 的上下文中,它用于减少正在读取的页面数PdfReader供消费PdfStamper or PdfCopy。但是,它也可用于重新排序页面。首先请允许我解释一下语法。

里面有不同的口味selectPages() method:

你可以通过一个List<Integer>包含您要保留的所有页码。该列表可以包含递增的页码 1, 2, 3, 4,... 如果您更改顺序,例如:1, 3, 2, 4,...PdfReader将按照更改后的顺序提供页面。

您还可以使用以下语法传递字符串(这是在代码片段中完成的操作):

[!][o][odd][e][even]start[-end]

您可以有多个范围,并用逗号分隔,并且 !修改器删除页面 从已经选择的内容中。范围变化是增量的;数字被添加 或在出现范围时删除。开始或结束可以省略;如果你省略 两者,您至少需要 o(奇数;选择所有奇数页)或 e(偶数;选择所有偶数页)。

对于您的情况,我们有:

String.format("%d, 1-%d", n, n-1)

假设我们有一个10页的文档,那么n等于10,格式化操作的结果为:"10, 1-9"。在这种情况下,PdfReader将把最后一页显示为第一页,然后显示第 1 至第 9 页。

现在假设您有一个从第 8 页开始的目录,并且您想将此目录移至第一页,那么您需要如下所示的内容:8-10, 1-7, or if toc等于 8 且n等于 10:

String.format("%d-%d, 1-%d", toc, n, toc -1)

有关的更多信息format()方法,请参阅 API 文档String http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#format%28java.lang.String,%20java.lang.Object...%29格式字符串语法 http://docs.oracle.com/javase/6/docs/api/java/util/Formatter.html#syntax.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 itext 对 PDF 页面重新排序 的相关文章

  • Java中字符串中特殊字符的替换

    Java中如何替换字符串 E g String a adf sdf 如何替换和避免特殊字符 您可以删除除此之外的所有字符可打印的 ASCII 范围 http en wikipedia org wiki ASCII ASCII printab
  • Hibernate注解放置问题

    我有一个我认为很简单的问题 我见过两种方式的例子 问题是 为什么我不能将注释放在字段上 让我举一个例子 Entity Table name widget public class Widget private Integer id Id G
  • 在文本文件中写入多行(java)

    下面的代码是运行命令cmd并使用命令行的输出生成一个文本文件 下面的代码在 Eclipse 的输出窗口中显示了正确的信息 但在文本文件中只打印了最后一行 谁能帮我这个 import java io public class TextFile
  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • 使用 AES SecretKey 的 Java KeyStore setEntry()

    我目前正在 Java 中开发一个密钥处理类 特别是使用 KeyStore 我正在尝试使用 AES 实例生成 SecretKey 然后使用 setEntry 方法将其放入 KeyStore 中 我已经包含了代码的相关部分 The KS Obj
  • Calendar.getInstance(TimeZone.getTimeZone("UTC")) 不返回 UTC 时间

    我对得到的结果真的很困惑Calendar getInstance TimeZone getTimeZone UTC 方法调用 它返回 IST 时间 这是我使用的代码 Calendar cal Two Calendar getInstance
  • 如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?

    我对 java 和 Maven 都是全新的 所以这可能非常简单 如果我遵循maven2hello world此处的说明 http maven apache org guides getting started maven in Five m
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • Java 中的“Lambdifying”scala 函数

    使用Java和Apache Spark 已用Scala重写 面对旧的API方法 org apache spark rdd JdbcRDD构造函数 其参数为 AbstractFunction1 abstract class AbstractF
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • Javafx过滤表视图

    我正在尝试使用文本字段来过滤表视图 我想要一个文本字段 txtSearch 来搜索 nhs 号码 名字 姓氏 和 分类类别 我尝试过在线实施各种解决方案 但没有运气 我对这一切仍然很陌生 所以如果问得不好 我深表歉意 任何帮助将不胜感激 我
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 如何在JSTL中调​​用java方法? [复制]

    这个问题在这里已经有答案了 这可能是重复的问题 我只想调用不是 getter 或 setter 方法的方法例如 xyz 类的 makeCall someObj stringvalue Java类 Class XYZ public Strin
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • HQL Hibernate 内连接

    我怎样才能在 Hibernate 中编写这个 SQL 查询 我想使用 Hibernate 来创建查询 而不是创建数据库 SELECT FROM Employee e INNER JOIN Team t ON e Id team t Id t
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • 为什么这个作业不起作用?

    我有课Results which extends ArrayList

随机推荐

  • .net 4 向后兼容性

    在 net 4 中开发的 Windows 应用程序引用在 net 3 5 中开发的程序集 是否需要安装 net 4 和 net 3 5 才能运行该应用程序 我怀疑是这样 正如我的观察之一 此外 这感觉很合乎逻辑 因为两者的执行都需要不同的运
  • 使用 Kerberos 对 Windows 进行 Ansible 不起作用

    我尝试使用 Ansible 1 9 0 1 使用域用户名配置 Windows 服务器 我已经成功设置了 Linux Ansible 控制盒 并且能够使用基本身份验证来运行 ansible ansible playbook play 但是 使
  • 如何从剪贴板中清除指定格式的数据?

    我将一些数据放入剪贴板 从剪贴板复制数据后 我想清除数据而不清除整个剪贴板 像这样的东西 wchar t buf NULL if OpenClipboard NULL 0 HANDLE hData GetClipboardData CF U
  • 如何在以 struct 作为参数的 Ruby FFI 方法中包装函数?

    我正在尝试使用 ruby ffi 从共享对象调用函数 我将以下内容编译成共享对象 include
  • Laravel 的数据表服务器端 php 类

    我希望我的数据表在服务器端处理数据 我引用了这个示例 服务器端示例 http www datatables net examples data sources server side html 然而 本例中给出的服务器端 php 类 ssp
  • Internet Explorer 10 后退按钮缓存

    在 Internet Explorer 10 中 如果您按后退按钮 它会尝试从浏览器缓存中获取上一页 此行为与几乎所有其他浏览器 包括 IE9 不同 在 IE9 中 按后退按钮将完全重新加载上一页 而不是重用缓存 我如何从网站与 IE10
  • 错误 22 无法从程序集中加载“EnsureBindingRedirects”任务

    我使用 vs 2013 克隆了一个项目 当我运行它时 我收到此错误 Error 1 The EnsureBindingRedirects task could not be loaded from the assembly D BMaste
  • dplyr 输出类 data.frame

    我可以总结一个数据框dplyr像这样 mtcars gt group by cyl gt summarise mean mpg 将输出转换回类data frame 我目前的做法是这样的 as data frame mtcars gt gro
  • 如何使用 --set 来设置 Prometheus 图表的值?

    例如 设置alertmanager ingress annotations要添加两个项目 这两种方法都不起作用 helm install stable prometheus set alertmanager ingress enabled
  • AES CBC 加密/解密仅解密前 16 个字节

    我正在使用 AES CBC 和 openssl 进行一些工作 目前 我遇到了一个问题 我无法猜测出什么问题 一如既往 如果消息长度小于 16 字节 则加密和解密过程可以正常工作 但当消息大于 16 字节时 解密仅对第 16 个字节有效 当我
  • 由于递归隐式,spray-json 中的 NPE(上下文绑定问题?)

    也许我发现了一个bug http goo gl C79j8在 Spray json 中 当我尝试获取具有自身类型字段的对象的 json 时 出现空指针异常 例子是 case class TestItem subitems Option Li
  • System.Windows.Media.RenderCapability.Tier 返回的不是渲染模式

    I use System Windows Media RenderCapability Tier http msdn microsoft com en us system windows media rendercapability tie
  • MPMusicPlayerController 未正确准备/预加载

    我正在使用 MPMusicPlayerController 因此我的应用程序可以播放用户通过 iTunes 购买的音乐 当我选择一首歌曲并开始播放时 声音开始之前有一段延迟 我假设这首歌是从云端缓冲的 问题是我还没有找到一种方法来知道缓冲何
  • socket.io 通过 XHR 轮询强制断开连接

    我有一个客户端 服务器应用程序 在服务器上使用nodejs 并使用socket io 作为连接机制 出于与我的应用程序相关的原因 我希望每个浏览器只有一个活动连接 并拒绝来自稍后可能在会话期间打开的其他选项卡的所有连接 这对于 WebSoc
  • 在.Net 3.5中写入app.config?

    我需要能够写入 Net 3 5 Windows 应用程序中的 app config 文件来存储一些系统设置 我可以从文件中读取但无法写入它 我发现的所有内容都是针对 2 0 的 与 3 5 看起来不一样 NET 2 0 是 NET 3 5
  • startkey 和 endkey 在 CouchDB 中到底是如何工作的?

    我正在使用 CouchDB 中的位置数据库 我创建了一个视图 其中我的键是一个带有纬度和经度舍入值的数组 现在我根据以下条件进行选择 Startkey 52 34 4 883 Endkey 52 37 4 903 在这里 我预计只会收到纬度
  • Parse.com 查询的主线程问题

    我正在尝试在我的 Unity 游戏中使用 parse com 服务 我的问题是根据查询收到的结果实例化对象 例如 当我运行以下代码时 var queryCurrent ParseObject GetQuery Levels WhereEqu
  • 自定义我的位置叠加层更新时间

    我正在努力实施MyLocationOverlay http code google com android add ons google apis reference com google android maps MyLocationOv
  • 从外部文件链接 svg 路径以 HTML 形式显示

    我有一堆 svg 路径 用于图标 如果直接放在 html 中 它们可以正常工作 但由于有这么多 我想将它们放入外部文件中 我不能使用object or img因为我正在使用 css 来设置它们的样式 有任何想法吗
  • 使用 itext 对 PDF 页面重新排序

    我在用文本 pdf图书馆 有谁知道如何移动现有 pdf 中的页面吗 其实我想移动文件开头的最后几页 它类似于下面的内容 但我不明白它是如何工作的 reader new PdfReader baos toByteArray n reader