栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何重新排列PDF文件的页面?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何重新排列PDF文件的页面?

您的公式是错误的。你有:

sourcePDFReader.selectPages(String.format("%d-%d, 2-%d", tocStartsPage, totalNoPages-1, tocStartsPage -2);

但这会将您的目录放在第一页。根据您的描述,这不是您想要的。

您想要这样的东西:

PdfReader reader = new PdfReader(baos.toByteArray());int startToc = 13;int n = reader.getNumberOfPages();reader.selectPages(String.format("1,%s-%s, 2-%s, %s", startToc, n-1, startToc - 1, n));PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));stamper.close();

此代码使用测试ReorderPage在16页PDF文件例如,具有文本

Page1
Page 2
......,
Page 16
作为内容。结果是以下PDF:(reordered.pdf)
[http://itextpdf.com/sites/default/files/reordered.pdf]

页面现在按此顺序排列:第1页,第13页,第14页,第15页,第2页,第3页,第4页,第5页,第6页,第7页,第8页,第9页,第10页,第11页第12页,第16页。这是您在问题中描述的顺序。

更新:

在一条评论中,您正在询问

String.format()
在这种情况下如何工作。

让我们看看我们首先要实现的目标。我们的页面顺序如下:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16

我们想像这样对它们重新排序:

1, 13, 14, 15, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 16

这意味着我们需要以下模式:

1, 13-15, 2-12, 16

这是一种硬编码模式,其中两个变量很重要:

  • 目录的开始:第13页(
    startToc
  • 最后一页:16(
    n

从这些变量中,我们可以得出另外两个变量:

  • 目录的最后一页。这是最后一页减去一页,即16-1 = 15(
    n - 1
  • 目录前的最后一页:13-1 = 12(
    startToc - 1

我们现在可以这样重写模式:

1, startToc-(n - 1), 2-(startToc - 1), n

我们需要将其设置为

String
,这就是为什么我们使用
String.format()

String.format("1,%s-%s, 2-%s, %s", startToc, n-1, startToc - 1, n)

的第一次出现

%s
由后面的第一个参数替换
String
,第二次出现
%s
由后面的第二个参数替换
String
,依此类推…

如果

startToc = 13
n = 16
,则结果为:

1, 13-15, 2-12, 16


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/455397.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号