c# - 将具有 90 度旋转的横向页面叠加到具有 0 度旋转的横向页面上
问题描述
我使用了叠加示例将一个 pdf 叠加到另一个上。尝试将旋转 90 度的源文件中的页面叠加到旋转为 0 但为横向的目标页面上时遇到了一些麻烦(它的宽度大于高度)。
当我第一次尝试像示例中那样标记内容时,它使内容旋转 -90,如下图左侧示例所示。当我尝试设置目标页面的旋转时,源内容被放置在正确的方向但目标页面已经转动(下图中的正确示例)。
var sourcePageRotation = sourcePage.GetRotation();
destinationPage.SetRotation(sourcePageRotation);
如何在不实际更改显示方式的情况下操纵源页面或目标页面来更改旋转值?
解决方案
(当您引用 Java 示例时,我还将引用 iText for Java。)
在SuperImpose
示例中,要叠加的页面是使用添加的
canvas.addXObject(page, 0, 0);
但也有其他的PdfCanvas.addXObject
重载,特别是
public PdfCanvas addXObject(PdfXObject xObject, float a, float b, float c, float d, float e, float f)
6 float
s 表示应用于 XObject 的仿射变换,例如旋转。因此,您可以旋转源文档中导入的页面 XObject 以匹配目标文档页面的方向,例如替换
canvas.addXObject(page, 0, 0);
经过
canvas.addXObject(page, 0, 1, -1, 0, page.getHeight(), 0);
或者,如果这使页面内容倒置,则
canvas.addXObject(page, 0, -1, 1, 0, 0, page.getWidth());
就像您引用的示例一样,我在这里假设所涉及页面的左下角是各自的坐标系原点。如果该假设是错误的,则需要float
分别调整上面替换中的最后两个参数。
推荐阅读
- r - 根据变量的唯一组合将数据拆分为列表
- javascript - 如何将 async/await 与文件系统模块一起使用
- angular - 我可以在我的收藏中添加更多数字到我的字段编号值吗?
- git - 在 Azure 中,如何克隆在不同服务器中使用 git-lfs 存储库的存储库?
- php - WP_Query:在特定时间以特定顺序显示帖子
- c++ - 删除和替换 .txt 文件中的特定行
- javascript - 模态中日期选择器的问题
- webpack - Webpack 加载器:如何在加载器为每个文件运行后发出单个文件?
- ansible - 如果 Windows 中不存在目录,Ansible 会使剧本失败
- keras - keras compile 需要源参数,除非指定该参数,否则不会运行