java - iText7 setRotation()无法正常工作
问题描述
我正在制作一个可以修改现有 PDF 的小型 Java 程序,并使用 iTextPDF 7 将更改保存在新 PDF 中。我从使用setRotation()
on a的旋转功能开始PdfDocument
,但我的 PDF 输出旋转 90 度小于我作为参数输入的值。
所以setRotation(90)
不做任何改变,
setRotation(180)
做一个顺时针改变,
setRotation(270)
做一个双转(180度旋转)。
ETC..
这是我的代码:
import java.io.IOException;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
public class rotateMyPDF {
public static void main(String[] args) throws IOException {
PdfReader in_pdf = new PdfReader("in.pdf");
PdfDocument pdfDoc = new PdfDocument(in_pdf, new PdfWriter("out.pdf"));
for (int i=1; i<=pdfDoc.getNumberOfPages(); i++) {
pdfDoc.getPage(i).setRotation(270); //error here?
}
pdfDoc.close();
System.out.println("done.");
}
}
看起来像一个错误?还是我的代码有错误?或者这是预期的功能?
如果我输入setRotation(0)
,PDF 页面会逆时针旋转 90 度!
解决方案
您似乎误解了该setRotation
方法。它不会添加到当前旋转,但会设置旋转值。
因此,如果您的页面已经应用了页面旋转,则设置相同的值setRotation
不会改变任何内容等。
您的源页面似乎已经旋转了 90°。这可以解释观察结果:
所以
setRotation(90)
不做任何改变,setRotation(180)
做一个顺时针改变,setRotation(270)
做一个双转(180度旋转)。ETC..
只需首先使用 读取当前旋转值getRotation
,添加所需的额外旋转,然后使用 设置该总和setRotation
。
推荐阅读
- python - 模式匹配从字符串中获取列表和字典
- php - 为什么 print_r 会重置 mysqli 对象?
- php - 在 Laravel 中使用条码号作为主键
- c# - UIAutomationClient 的 UI 支持
- javascript - jquery animate() 函数对 css height 属性不起作用
- oracle - 我的脚本有第一个无效程序和第二个有效程序。我希望脚本至少为第二个有效对象执行
- php - PHP file_get_contents 文件名以特殊字符开头
- yii2 - Yii2 - 1:M 关系的 Where 子句
- laravel - 检查从 laravel 传递到 vue 的数据是否存在
- python - CharField(editable=False) 局部变量为默认值