【发布时间】:2019-09-24 20:08:45
【问题描述】:
我必须将多个文件中的多个页面合并到一个新的 PDF 中。所有页面的页面方向必须是纵向的。
完成这项工作后,我正在使用几个程序将旋转重置为零,而无需真正旋转页面。
我想用 itext 去除旋转值。
取自 itext 示例,我尝试过这样的事情:
protected void manipulatePdf(String dest) throws Exception {
PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(DEST));
int n = pdfDoc.getNumberOfPages();
PdfPage page;
PdfNumber rotate;
for (int p = 1; p <= n; p++) {
page = pdfDoc.getPage(p);
rotate = page.getPdfObject().getAsNumber(PdfName.Rotate);
page.setRotation(0);
pdfDoc.close();
}
}
这个:
PdfDictionary diccionario = page.getPdfObject();
diccionario.Remove(iText.Kernel.Pdf.PdfName.Rotate);
而函数CopyPagesTo 的结果相同:页面方向已更改。
这里有一个 0、90、180 y 270 度的示例文件。
目标是将所有页面的旋转值设置为零保持纵向模式:
https://filebin.ca/4vep0uuU1p2s/1.pdf
任何建议将不胜感激。
【问题讨论】:
-
"protected voidurgicalPdf(String dest) throws Exception" 嗯,这不是 C#,它是 Java。编辑:这个问题中的每一行代码都是Java。为什么这被标记为 C#?
-
有什么问题?如果您删除 90° 或 270° 的页面旋转,纵向页面根据定义变为横向。如果您想要纵向页面,请保持旋转。
-
请打开示例文件。您将看到 4 个相同的页面。但它们有 0、90、180 和 270 度。
-
“您将看到 4 个相同的页面。但它们有 0、90、180 和 270 度。” - 是的。显然,通过删除 90° 或 270° 旋转值,您将获得横向页面。如果您想抵消这种情况,您将不得不大幅更改页面。您必须在内容流前面加上一个与缺少的旋转等效的转换。您必须调整所有应用页面框,至少是媒体框。您必须调整所有注释的位置(和其他坐标属性);如果它们有外观,则必须对其应用旋转。除非他们...
-
除非他们设置了 NoRotate 标志,在这种情况下,您将不得不重新定位他们。您必须使用坐标调整所有目的地。当然还有其他一些任务。 ... 您确定您真的需要将页面轮换条目设为 0 吗?可能更容易改进您想要执行此操作的过程以便能够使用页面旋转进行操作...