首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在PdfBox2中将页面原点转换为左上角?

在PdfBox2中,可以通过以下步骤将页面原点转换为左上角:

  1. 首先,需要获取PDF文档对象并加载要处理的PDF文件。可以使用PDDocument.load()方法来加载PDF文件。
  2. 接下来,获取PDF页面对象。可以使用PDDocument.getPage()方法来获取指定页面的PDPage对象。需要注意的是,PDF页面的索引从0开始。
  3. 获取页面的旋转角度。可以使用PDPage.getRotation()方法来获取页面的旋转角度。如果页面没有旋转,则返回0。
  4. 获取页面的尺寸。可以使用PDPage.getMediaBox()方法来获取页面的尺寸。返回的是一个PDRectangle对象,其中包含页面的宽度和高度。
  5. 计算页面的偏移量。根据页面的旋转角度和尺寸,可以计算出页面的偏移量。如果页面的旋转角度为0或180度,则偏移量为(0, 0)。如果页面的旋转角度为90或270度,则偏移量为(0, 页面高度)。
  6. 转换页面内容。可以使用PDPageContentStream.transform()方法来转换页面内容。需要传入一个AffineTransform对象,该对象定义了页面内容的转换规则。可以使用AffineTransform.getTranslateInstance()方法来创建一个平移变换,将页面的原点移动到左上角。

下面是一个示例代码,演示了如何将页面原点转换为左上角:

代码语言:java
复制
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.common.PDRectangle;

import java.awt.geom.AffineTransform;
import java.io.File;
import java.io.IOException;

public class PdfBoxExample {
    public static void main(String[] args) {
        try {
            // 加载PDF文档
            PDDocument document = PDDocument.load(new File("input.pdf"));

            // 获取第一页
            PDPage page = document.getPage(0);

            // 获取页面的旋转角度
            int rotation = page.getRotation();

            // 获取页面的尺寸
            PDRectangle mediaBox = page.getMediaBox();
            float pageWidth = mediaBox.getWidth();
            float pageHeight = mediaBox.getHeight();

            // 计算页面的偏移量
            float offsetX = 0;
            float offsetY = 0;
            if (rotation == 90 || rotation == 270) {
                offsetY = pageHeight;
            }

            // 转换页面内容
            PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.PREPEND, false);
            AffineTransform transform = new AffineTransform();
            transform.translate(offsetX, offsetY);
            contentStream.transform(transform);
            contentStream.close();

            // 保存修改后的PDF文档
            document.save("output.pdf");
            document.close();

            System.out.println("转换完成!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

请注意,上述示例代码仅演示了如何将页面原点转换为左上角,并保存为新的PDF文件。具体的应用场景和推荐的腾讯云相关产品和产品介绍链接地址需要根据实际需求来确定。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Threejs入门之二十二:Threejs中的屏幕坐标标准设备坐标

:用户显示器屏幕左上角。...screenX:鼠标点击位置相对于电脑屏幕左上角的水平偏移量。 screenY:鼠标点击位置相对于电脑屏幕左上角的垂直偏移量。...2 page坐标系 坐标原点:整个页面左上角(整个页面的意思就是你整个网页的全部,按照整个html文档的长度和宽度来计算)。...3 client 坐标原点:浏览器内容区域左上角(即浏览器中用户所看到区域的左上角,内容区域不包括工具栏和滚动条)。...用.offsetX、.offsetY可以直接表示canvas画布屏幕坐标,但是如果用.clientX、.clientY表示,这时候要注意,把.clientX、.clientY转化为以canvas画布左上角原点的坐标

2.2K10

图形编辑器开发:以光标为中心缩放画布

坐标系的原点在画布(canvas 元素)的左上角,x 轴向右,y 轴向下。 图形会被绘制到这个平面,理论上它的范围是可以 无限延展 的。(不过实际上我们会给一个上限,但这个值也非常大。...光标所在点在视图坐标系距离视口左上角的相对位置,保持不变。...就是两个坐标系中距离的转换: 场景视图,距离转换为 dist * zoom; 视图转场景,距离的转换是 dist / zoom,因为视口看到的图形都是缩放(乘以 zoom)后的结果,所以反过来就要除回去...然后二者相减,即可得到新的适口左上角坐标。...场景坐标视图坐标,首先需要将画布进行移动,让场景坐标的原点和视图坐标的原点对上(场景坐标移动 -viewport.x 和 -viewport.x),然后再进行缩放(乘以 zoom)。

20910
  • 在 Vue3 中实现飘逸的元素拖拽

    记录元素初始位置的坐标,原点位于页面左上角,用来在初始化和被拖拽结束后还原被拖拽元素的位置,固定值不发生变化: const originalPosition = reactive({ x: 10,...y: 10, }) 元素被按下时指针在元素上的坐标,原点位于被拖拽元素的左上角,通过按下时指针的坐标 - 元素初始的偏移位置得到: const mousedownOffset = reactive(...{ x: 0, y: 0, }) 元素在移动时实时更新的坐标,原点位于页面左上角,初始值应该同 originalPosition ,在 mousemove 事件发生时,通过指针的实时坐标 - mousedownOffset...得到: const elementPosition = reactive({ x: 0, y: 0, }) PS:当原点页面左上角时在图中的1号点表示 originalPosition 或...document.addEventListener('mouseup', onMouseup, true); } 在 onMousemove时,通过指针所在的坐标 - 指针在被拖拽元素上的位置得到被拖拽元素左上角距离页面左上角的距离

    1.9K20

    js鼠标事件 clientX、clientY、offsetX、offsetY、layerX、layerY、pageX、 pageY、screenX、screenY「建议收藏」

    metaKey 是否按键点击 button buttons which用来判断是鼠标的哪个键操作的 左键对应的值为 0、1、1 中键对应的值为 1、4、2 右键对应的值为 2、2、3 timeStamp 从页面打开开始到触发事件的时间...body的左上角原点: 当元素的父级都有定位属性时,以父级的左上角原点: 当元素自身有定位属性时,以自身的左上角原点: pageX, pageY pageX, pageY...相对页面左上角的距离 screenX screenY screenX screenY 相对屏幕左上角的位置 总结: clientX和clientY与x,y一样的,以浏览器显示区域的左上角开始...layerX,layerY,往上找有定位属性的父元素的左上角(自身有定位属性的话就是相对于自身),都没有的话,就是相对于body的左上角 pageX,pageY相对页面左上角的距离 screenX screenY...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2.7K20

    从零打造一个Web地图引擎

    lang=zh_cn&size=1&scale=1&style=8 目前各大地图厂商的瓦片服务遵循的规则是有不同的: 谷歌XYZ规范:谷歌地图、OpenStreetMap、地图、geoq、天地图,坐标原点左上角...TMS规范:腾讯地图,坐标原点在左下角 WMTS规范:原点左上角,瓦片不是正方形,而是矩形,这个应该是官方标准 百度地图比较特立独行,投影、分辨率、坐标系都跟其他厂商不一样,原点在经纬度都为0的位置...,非洲边上的海里,而瓦片的原点左上角: 再来看下图会更容易理解: 3857坐标系的原点相当于在世界平面图的中间,向右为x轴正方向,向上为y轴正方向,而瓦片地图的原点左上角,所以我们需要根据图上【...这个坐标怎么转换到屏幕上呢,请看下图: 中心经纬度的瓦片我们计算出来了,瓦片左上角的像素坐标也知道了,然后我们再计算出中心经纬度本身对应的像素坐标,那么和瓦片左上角的差值就可以计算出来,最后我们把画布的原点移动到画布中间...(画布默认原点左上角,x轴正方向向右,y轴正方向向下),也就是把中心经纬度作为坐标原点,那么中心瓦片的显示位置就是这个差值。

    3.9K10

    Canvas学习系列二:Canvas的坐标系统

    ,与我们数学中的直角坐标系统有所不同; 通常窗口坐标系统的原点在屏幕(一般指浏览器)的左上角 直角坐标系统: 直角坐标系统中原点沿x轴向右方向为正值,反之为负值;原点沿y轴向上方向为正值,反之为负值...窗口坐标系统: 窗口坐标系统与直角坐标系统都含有x轴,y轴,两轴的交点为坐标原点(0,0),原点沿x轴向右方向为正值,不同的是原点沿y轴方向向下为正值。...在2D绘图环境中的坐标系统,默认情况下是与窗口坐标系统相同,它以canvas的左上角为坐标原点,沿x轴向右为正值,沿y轴向下为正值。其中canvas坐标的单位都是 "px"。 ?...窗口坐标换为canvas坐标 HTML5应用程序是以事件来驱动的,浏览器通过事件对象传递给监听器的坐标是窗口坐标,开发者需要知道发生事件的点相对于canvas的位置,而不是相对于浏览器中的位置,所以必须进行转换...canvas的2D环境绘图坐标系统,原点(0,0)位于canvas元素的左上角顶点处,沿x轴向右为正值,沿y轴向下为正值,与我们数学中的直角坐标系是不同的,但是与我们的窗口坐标系(web页面的坐标)是相同的

    6.1K10

    Task02 几何变换

    坐标系变换 再看第二个问题,变换中心,对于缩放、平移可以以图像坐标原点(图像左上角原点)为中心变换,这不用坐标系变换,直接按照一般形式计算即可。...而对于旋转和偏移,一般是以图像中心为原点,那么这就涉及坐标系转换了。 我们都知道,图像坐标的原点在图像左上角,水平向右为 X 轴,垂直向下为 Y 轴。...Image 在图像中我们的坐标系通常是AB和AC方向的,原点为A,而笛卡尔直角坐标系是DE和DF方向的,原点为D。...Image 逆变换为: ? Image 于是,根据前面说的3个步骤(3次变换),旋转(顺时针旋转)的变换形式就为,3次变换就有3个矩阵: ?...另外读者可以尝试学习并实现其他几何变换,偏移。

    72940

    这是一篇很好的互动式文章,Framer Motion 布局动画

    FLIP甚至可以对 "不可动画" 的属性(justify-content)进行动画处理。Framer Motion使用FLIP来实现其布局动画。...如果我们在 play 步骤之前暂停动画,我们可以看到在 inverse 步骤中出了问题--正方形没有完全与它的原始位置对齐: 修复转换的起点 我们试着搞清楚这个问题。...现在,如果我们把变换的原点改为左上角,使其与平移相一致...... squareRef.current.style.transformOrigin = "top left"; 对了!...如果用户想要一个不同的变换原点呢?在这种情况下,布局动画应该仍然有效。 诀窍在于确保 inverse 步骤比较了两个方块的变换原点之间的距离。...换句话说,这个错误的发生是因为测量的距离和变换原点之间的差异:getBoundingClientRect()返回元素的左上角,而变换原点默认是在元素的中心。

    2.6K20

    JavaScript 获取鼠标及元素在页面上的位置

    另外,还有哪些能快速获取标签在页面中的位置信息? 在书写一些“拖拽”页面交互效果,比如常见的拖拽效果、自定滚动条、放大镜等效果,都需要用到了鼠标或元素在页面上的位置信息。...可以简单的对clientX/Y属性进行概括,它所获取的鼠标位置参考的原点就是浏览器可视区域的左上角。...就是这一点,导致我们使用起来灵活性不高,不是所有页面交互效果用到的鼠标位置都是参考浏览器可视区域的左上角,有可能是参考自身元素的左上角,那么clientX/Y属性能否胜任呢?...当触发元素设置了position属性(属性值不能是static | inherit),layerX/Y和offsetX/Y就成为了友好的朋友,基本上相同,唯一不同的是,layerX/Y属性是以border左上角原点...,offsetX/Y属性是以内容左上角原点 用getBoundingClientRect()获取页面元素位置信息 大家估计会经常用到offsetLeft、offsetTop等属性来获取元素的尺寸、位置等信息

    3.4K60

    HTML DOM的各种宽高、偏移位置的属性总结

    8.Window.scrollX 返回文档/页面水平方向滚动的像素值。...Event事件对象 1.clientX和clientY 这对属性是当事件发生时,鼠标点击位置相对于浏览器(可视区)的坐标,即浏览器左上角坐标的(0,0),该属性以浏览器左上角坐标为原点,计算鼠标点击位置距离其左上角的位置...2.screenX和screenY 事件发生时鼠标相对于屏幕的坐标,以设备屏幕的左上角原点,事件发生时鼠标点击的地方即为该点的screenX和screenY值,如下所示:可以看到尽管浏览器窗口被缩到很小...3.offsetX和offsetY 这一对属性是指当事件发生时,鼠标点击位置相对于该事件源的位置,即点击该div,以该div左上角原点来计算鼠标点击位置的坐标,如下所示: 可以看到,点击该div的靠近左上角处...如果 start 或 length 为负数,那么它将被替换为 0。 数组的splice和slice slice /slaɪs/  v. 把……切成薄片;n.

    1.6K30

    php读取pdf文件_php怎么转换成pdf

    SetXY,移动横坐标跟纵坐标: X:横坐标,可设为$pdf->GetX()+数字 Y:纵坐标,可设为$pdf->GetY()+数字 Rtloff:true,左上角会一直作为坐标轴的原点...Format:设置此页面的打印格式。 Keepmargins:true,以当前的边幅代替默认边幅来重写页面边幅。 Tocpage:true,所添加的页面将被用来显示内容表。...X:左上角或右上角的横坐标。 Y:左上角或右上角的纵坐标。 W:设置图片的宽度,为空或为0,则自动计算。...0,伸展到右边幅的距离 H:设置单元格最小的高度 X:以左上角原点的横坐标 Y:以左上角原点的纵坐标 Html:html文本 Border...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    13.1K10

    【iVX 初级工程师培训教程 10篇文拿证】01 了解 iVX 完成新年贺卡

    首先我们选择前台表示在前台下添加组件,随后点击页面,接下来咱们在页面上进行组件的添加。...在对象树中点击添加的文本组件,可在属性面板中更改对应的文本内容: 更改完文本后即可在舞台区中看到对应更改的内容: 此时咱们可以看到这个元素的属性面板中有 xy 值,这个 xy 值是以舞台区左上角原点...轴进行水平翻转: 此时将会得到一张完全翻转的图片: 最后再把这个图片移动至合适的位置即可: 接着添加一张门的图片: 若你想这个图片完全居中,那么可以在属性中找到 x 轴原点...,将其置于 50% 处;因为在 ivx 中,图片的左上角为起始点,需要将图片的x原点置于中间,给予屏幕宽度大小的一半,即可完成居中: 接着更改 x 坐标为屏幕的一半即可,屏幕宽度尺寸可以在对象树之上进行更改或查看...接着在动效组件中咱们可以选择某一个动效类型,接着选择预览即可进行查看效果,若觉得动效时间太长,可以增加动画时长,此时动画播放就会变慢,最后打开循环播放即可: 随后我们右键复制这个动态效果,复制到其他图片之中将会是页面更加生动

    1.1K20

    flutter画布绘制图片和文字

    何在 Canvas 中绘制文字,并完善坐标系刻度。...src 表示从资源图片 image 上抠出一块矩形域,所以原点是图片的左上角。 dst 表示将抠出的图片填充到画布的哪个矩形域中,所以原点是画布原点。...center 表示从资源图片image上一块可缩放的矩形域,所以原点是图片的左上角。 dst 表示将抠出的图片填充到画布的哪个矩形域中,所以原点是画布原点。...= oldDelegate.image; } 【3】图形的变换 我们在定义 Sprite 时,可以将变换的属性放在其中,平移、缩放、透明度等。...image-20201030124040144 ---- 5.绘制原始图集:drawRawAtlas 这个方法是drawAtlas的底层实现,其中变换列表、矩形域列表都换为Float32List,颜色数组换为

    2.4K30

    第4章-变换-4.1-基础变换

    第一步是乘以置,即 的逆。然后进行实际的缩放,跟着进行反向变换。变换公式4.14所示: image.png 4.1.4 剪切 另一类变换是剪切矩阵的集合。...绕 轴(在右手坐标系中,从本书的页面向外指向)逆时针旋转 弧度。这些矩阵可以通过两种方式相乘,结果完全不同。这两种情况如图4.4所示。 图4.4. 这说明了矩阵相乘时的顺序依赖性。...将这两个矩阵组合在一起, ,并替换为中间结果是有效的。因此,矩阵级联满足结合律。...因此,要计算逆,左上角3×3 的矩阵被置,T的平移值改变符号。这两个新矩阵以相反的顺序相乘以获得逆矩阵。...逆的置可用于变换法线。旋转矩阵的定义是它的置是它的逆矩阵。代入法线变换,两个置(或两个逆)给出原始旋转矩阵。综上所述,在这些情况下,原始变换本身也可以直接用于变换法线。

    4K110
    领券