使用 itextpdf 时,横向和纵向 PDF 的页面大小始终相同

2023-11-30

我有一个 PDFReader,其中包含一些横向模式的页面和其他纵向模式的页面。

我需要区分它们以进行一些处理...但是,如果我调用 getOrientation 或 getPageSize,则该值始终相同(页面大小为 595,方向为 0)。

为什么横向页面的值没有不同?

我尝试寻找其他方法来检索页面宽度/方向,但没有任何效果。

这是我的代码:

for(int i = 0; i < pdfreader.getNumberOfPages(); i++)
{
    document = PdfStamper.getOverContent(i).getPdfDocument();

    document.getPageSize().getWidth; //this will always be the same
}

Thanks !


有两种方便的方法,名为getPageSize() and getPageSizeWithRotation().

让我们看一个例子:

PdfReader reader =
    new PdfReader("src/main/resources/pages.pdf");
show(reader.getPageSize(1));
show(reader.getPageSize(3));
show(reader.getPageSizeWithRotation(3));
show(reader.getPageSize(4));
show(reader.getPageSizeWithRotation(4));

在此示例中,show()方法如下所示:

public static void show(Rectangle rect) {
    System.out.print("llx: ");
    System.out.print(rect.getLeft());
    System.out.print(", lly: ");
    System.out.print(rect.getBottom());
    System.out.print(", urx: ");
    System.out.print(rect.getRight());
    System.out.print(", lly: ");
    System.out.print(rect.getTop());
    System.out.print(", rotation: ");
   System.out.println(rect.getRotation());
}

这是输出:

llx: 0.0, lly: 0.0, urx: 595.0, lly: 842.0, rotation: 0
llx: 0.0, lly: 0.0, urx: 595.0, lly: 842.0, rotation: 0
llx: 0.0, lly: 0.0, urx: 842.0, lly: 595.0, rotation: 90
llx: 0.0, lly: 0.0, urx: 842.0, lly: 595.0, rotation: 0
llx: 0.0, lly: 0.0, urx: 842.0, lly: 595.0, rotation: 0

第 3 页(请参见代码示例 3.8 中的第 4 行)是一个 A4 页面,就像第 1 页一样,但它是横向的。这/MediaBox条目与第一页使用的条目相同[0 0 595 842],这就是为什么getPageSize()返回相同的结果。

该页面是横向的,因为\Rotate页字典中的条目设置为90。该条目的可能值为0(如果条目丢失,则这是默认值),90, 180 and 270.

The getPageSizeWithRotation()方法考虑该值。它交换宽度和高度,以便您意识到差异。它还为您提供了价值/Rotate entry.

第 4 页也具有横向方向,但在这种情况下,通过调整/MediaBox入口。在这种情况下,值/MediaBox is [0 0 842 595]如果有一个/Rotate条目,其值为0.

这解释了为什么输出getPageSizeWithRotation()方法与输出相同getPageSize() method.

当我读到你的问题时,我发现你正在寻找轮换。这可以通过getRotation() method.

Remark:这段文字是从我的书中复制的《PDF 基础知识》(本书正在编写中;您可以免费下载前几章)。代码示例可以找到here.

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

使用 itextpdf 时,横向和纵向 PDF 的页面大小始终相同 的相关文章

  • 使用 Maven 生成 Eclipse 项目文件

    当我尝试使用生成 Eclipse 项目文件时mvn eclipse eclipse我收到以下错误 插件管理器执行目标时出现内部错误 org apache maven plugins maven eclipse plugin 2 9 SNAP
  • Java 字符串哈希码缓存

    字符串不变性的优点之一是哈希码缓存以实现更快的访问 在这种情况下 如何处理具有相同哈希码的字符串的缓存 在这种情况下它真的能提高性能吗 在这种情况下 如何处理具有相同哈希码的字符串的缓存 被缓存的是字符串的哈希码 它被缓存在私有的int字符
  • 如何使用retrofit2动态设置超时?

    public class Router private static Retrofit retrofit null public Retrofit getRetrofit if retrofit null OkHttpClient clie
  • Java中的文字赋值[重复]

    这个问题在这里已经有答案了 定义上有什么区别 double example 23 1d or double example 23 1 为什么long float double可以以l f d结尾 之间没有区别double example 2
  • Spring boot 2.0.5.RELEASE和mongo 4.0连接问题

    我正在关注使用 MongoDB 访问数据教程春季网站 https spring io guides gs accessing data mongodb 我将 Mongo DB 服务器版本 4 安装为服务当我使用客户端连接到它时 它的身份验证
  • Glassfish:在部署期间修改 EAR 的部署描述符

    经过几天的搜索 尝试和摇头 我将这个问题发布到 SO 尽管它seems已经得到答复 这是场景 我有一个 EAR 应用程序 目前 包含一个 WAR 和一个 EJB 模块 EJB 模块使用 JPA persistence xml 并且一些无状态
  • 如何为java注释处理器编写自动化单元测试?

    我正在尝试使用 java 注释处理器 我可以使用 JavaCompiler 编写集成测试 事实上我现在正在使用 hickory 我可以运行编译过程并分析输出 问题 即使我的注释处理器中没有任何代码 单个测试也会运行大约半秒 对于以 TDD
  • 全静态方法和应用单例模式有什么区别?

    我正在创建一个数据库来存储有关我的网站用户的信息 我正在使用 stuts2 因此使用 Java EE 技术 对于数据库 我将创建一个 DBManager 我应该在这里应用单例模式还是将其所有方法设为静态 我将使用这个 DBManager 进
  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • net.sf.jasperreports.engine.JRRuntimeException:java.io.IOException:无法读取字体数据

    我正在尝试通过 JasperReport 创建 PDF 报告 但读取字体数据时出现问题 我有 jasperreports extension properties 和 ClassPath 中的相关 TTF 文件 这是错误 java io I
  • Java 中的 MP4 容器编写器

    我想找到一个免费的 Java MP4 容器 编写器 我不需要编码器 只需要能够根据预期值写入正确原子的编码器 Bonus对于这样一个库 也可以编写 有效 F4V 我更喜欢纯 Java 解决方案 而不是使用 JNI 或外部可执行文件的解决方案
  • 为什么下面代码的输出是Thread[main,5,main]

    public class test1 public static void main String args TODO Auto generated method stub Thread t Thread currentThread Sys
  • 反应式 Spring Webflux REST 控制器内部重定向

    我正在为 spring 反应项目创建简单的控制器服务器 在设置重定向到另一个位置时 我在调用时发现错误http localhost 8080 There was an unexpected error type Internal Serve
  • Servlet 调度程序当前不可用

  • JFrame Glasspane 也优于 JDialog,但不应该

    我有一个带有 Glasspane 的 JFrame 未装饰 该框架打开一个 JDialog 也未装饰 也有一个 glassPane 并隐藏自身 setVisible false Glasspanes 通过 setGlassPane 设置 对
  • “___ 中的方法 ___() 是在无法访问的类或接口中定义的”编译错误

    我发现了一个奇怪的编译限制 我无法解释 并且我不明白这个限制的原因 示例1 考虑这些类 In package e1 public class C1 enum E1 A B C public E1 x In package e2 import
  • 如何列出hadoop hdfs中目录及其子目录中的所有文件

    我在 hdfs 中有一个文件夹 其中有两个子文件夹 每个子文件夹大约有 30 个子文件夹 最后 每个子文件夹都包含 xml 文件 我想列出所有 xml 文件 仅给出主文件夹的路径 在本地我可以这样做apache commons io 的 h
  • ASTParser:解析绑定后查找声明节点

    我创建了一个启用了绑定的 AST 当我稍后解析绑定时 我得到了一个有效的 ITypeBinding 但是 当我想要获取绑定的声明 Node 时 它 总是返回 null 除非 ITypeBinding 在 sourceFile 中声明 这是我
  • 获取Java中ResultSet返回的行数

    我用过一个ResultSet返回一定数量的行 我的代码是这样的 ResultSet res getData if res next System out println No Data Found while res next code t
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下

随机推荐

  • Google Maps API,所有标记打开相同的信息窗口

    我有一个页面 可以检索一堆位置和一些有关其关联标记的数据 并将它们放在 Google 地图上 单击时 每个按钮都会弹出自己的小消息 但是 单击其中任何一个都会在最近添加的标记处弹出最近添加的消息 是什么赋予了 我没有正确编写点击事件脚本吗
  • 可可 NSView 模糊背景

    我知道可以在 Cocoa 中创建透明窗口 尽管可以模糊其后面的内容吗 我知道有过类似的问题 但它们处理的内容更加模糊实际 NSView 中的内容 而不是其背后的内容 这是否可能 如果可以 我需要研究什么方法 Possible Impossi
  • Math ML 的 .NET 组件,可以编辑公式,将其呈现为图像

    目前最受欢迎的组件 MathML Net 无法下载 我想知道是否有其他 Net 组件可以帮助解决此问题 可以编辑公式 将其渲染为图像 I found g分子 就在不久前 它应该呈现 MathML 并且它是用 C 为 Winforms 编写的
  • 使用 R 3.6.0 编译 stan 文件时出错。和赢10

    Error in compileCode f code language language verbose verbose Compilation ERROR function s method s not created Error in
  • 将组件放置在玻璃板上

    我有一个 JLabel 的子类 它构成了我的 GUI 的一个组件 我已经实现了将组件从一个容器拖放到另一个容器的功能 但没有任何视觉效果 我想让这个 JLabel 在将项目从一个容器拖动到另一个容器时跟随光标 我想我可以创建一个玻璃板并在上
  • 禁用iOS弹性体滚动并保持本机滚动工作[重复]

    这个问题在这里已经有答案了 我目前正在开发一个针对触摸设备 主要是 iOS 进行优化的单页 Web 应用程序 我已经通过以下方式实现了新的 iOS 原生滚动 webkit overflow scrolling touch 一切运行良好 除了
  • Powershell 数组扁平化是如何工作的?

    请注意 C gt x 1 C gt x x 2 C gt x x 3 C gt x x 4 C gt x x 5 C gt x Length 2 C gt x Length 3 C gt x Length 2 LongLength 2 Ra
  • 如何在c#中导出注册表

    我一直在尝试将注册表文件导出并保存到任意位置 代码正在运行 但是 在指定路径并保存时 该功能不起作用 并且不会导出任何注册表 也没有显示错误 private static void Export string exportPath stri
  • git 子模块检查相同的提交

    After I git submodule update它总是检查相同的提交 例如34561 I do git checkout master对于子模块 然后git submodule sync 然后它指向最新的提交a2344 但是之后up
  • 在哪里可以查看 TensorFlow 梯度下降主循环?

    抱歉 如果这听起来有点天真 我想看看里面的肉TensorFlowGradientDescent 的实现 亲自看看它们如何处理终止条件 步长自适应性等 我追踪了代码training ops apply gradient descent但我找不
  • 不可变对象的名称如何重新绑定到增强赋值的结果?

    不可变对象的名称如何重新绑定到增强赋值的结果 对于可变对象 例如 如果x 1 2 3 并且 y 4 5 那么当我们执行 x y 时 它的执行方式为x iadd y 它修改了x in place并做了名字x再次重新绑定到它 它是如何工作的x是
  • 比“尝试”和“例外”更快的方法? - Python

    我经常将代码写成如下 try self title item title content string except AttributeError e self title None 有没有更快的方法来处理这个问题 一行 您遇到了哪些例外情
  • 在jspdf中添加自定义字体

    我想在 jsPDF 中使用自定义字体 例如 Comic Sans MS 或 Calibri 字体 我发现了类似的问题here 但我的不工作 我已经添加了最新的jspdf 我的代码如下 var doc new jsPDF p mm a4 do
  • swt表改变选择项颜色

    我正在使用一个标准的 swt 表 您可能知道 默认情况下 选择一个项目时颜色为蓝色 Windows 标准 当选择处于非活动状态时 它会变成浅灰色 我想覆盖这两种颜色 我在整个网络上进行了搜索 但只能找到一些非常旧的代码 这些代码似乎不再适用
  • PrototypeJS:如何选择动态创建的元素?

    该网站使用 Prototype JS 库 页面加载后 它立即执行 Ajax 请求 该请求会拉出并显示页面的更多元素 我需要能够选择那些动态创建的元素并将它们隐藏 hide method 我尝试使用选择并隐藏它们document observ
  • 从 XML 反序列化为列表对象

    我正在执行将 XML 文件转换为列表对象的程序 我已成功完成从 List 到 XML 的序列化 但是在进行反序列化时遇到问题 请任何人告诉我我在这段代码中做错了什么 这是我的 XML 代码
  • 设计可以标记多个数据库表的标记系统

    我希望允许用户标记项目 以便他们可以使用标签搜索它们 干净地实现这一目标的最佳方法是什么 到目前为止 我提出的解决方案仅涉及向我当前的数据库系统添加两个额外的表
  • 绘制 SEM 模型中与 R 中观察到的变量的交互效应

    我正在估计一个已观察到变量的 SEM 模型 我正在使用 SEM 来使用 FIML 处理缺失数据 我的模型有一个交互项来测试适度性 这是一个说明问题的玩具示例 library lavaan library car library dplyr
  • Cakephp生成xml错误-空格

    我正在尝试在 CakePHP 中生成动态 xml 文档以输出到浏览器 这是我的控制器代码 Configure write debug 0 this gt layout null header Content type text xml ec
  • 使用 itextpdf 时,横向和纵向 PDF 的页面大小始终相同

    我有一个 PDFReader 其中包含一些横向模式的页面和其他纵向模式的页面 我需要区分它们以进行一些处理 但是 如果我调用 getOrientation 或 getPageSize 则该值始终相同 页面大小为 595 方向为 0 为什么横