使用 pdfbox 旋转
Rotation with pdfbox
我是 java 的新手,我正在尝试让 PDFBOX 旋转 PDF 文件。我似乎无法正确理解错误。我知道这一定很简单,但它在这一行上说 The operator < is undefined for the argument type(s) int, Dimension
:
for (int i = 0; i < pages.size(); i++) {
而且它贯穿了尺寸..
我的代码:
import java.awt.List;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class PdfRotator {
private static final String pdfFile = null;
public static void main(String[] args) throws IOException {
PDDocument document = PDDocument.load("PDFrotatorTEST.pdf");
//public static void main(String[] args) throws Exception {
List pages = (List) document.getDocumentCatalog().getAllPages();
for (int i = 0; i < pages.size(); i++) {
PDPage page = (PDPage) ((java.util.List) pages).get(i);// PDPage page = (PDPage) pages.get(i);
if ((i + 1) % 2 == 0) {
page.setRotation(0);
}
}
File f = new File(pdfFile);// File f = new File(pdfFile);
String newFile = f.getParent() + File.separator + "out.pdf";
document.save(newFile);
document.close();
}
}
如有任何帮助,我们将不胜感激
您将 class List
导入为
import java.awt.List;
但这不是你想要的List
。相反你想要
import java.util.List;
由于 OP 是 java 的新手,一些背景:
在 java API 中有几个 class 称为 List
,在第三方 API 中甚至更多。因此,在导入 List class
时,您必须确保导入正确的
特别是有:
java.awt.List
,一个 组件向用户展示了来自 Abstract Window 工具包 [=55] 的文本项滚动列表 =], 最早的 Java GUI API;和
java.util.List
,来自 Java 的 有序集合(也称为 'sequence') 的接口集合框架.
在您的代码中,您正在处理 document.getDocumentCatalog().getAllPages()
的结果,其中 returns java.util.List
对象中 PDPage
个实例的列表。
错误消息 The operator < is undefined for the argument type(s) int, Dimension 是由于 java.awt.List
(如 java.util.List
) 有一个方法 size()
但这个方法 returns 一个 java.awt.Dimension
(一个 class 那个 封装了组件的宽度和高度 ) 而不是 int
.
因此,i < pages.size()
尝试比较那些自然无法比较的实体。
我是 java 的新手,我正在尝试让 PDFBOX 旋转 PDF 文件。我似乎无法正确理解错误。我知道这一定很简单,但它在这一行上说 The operator < is undefined for the argument type(s) int, Dimension
:
for (int i = 0; i < pages.size(); i++) {
而且它贯穿了尺寸..
我的代码:
import java.awt.List;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.pdfbox.cos.COSDocument;
import org.apache.pdfbox.pdfparser.PDFParser;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
public class PdfRotator {
private static final String pdfFile = null;
public static void main(String[] args) throws IOException {
PDDocument document = PDDocument.load("PDFrotatorTEST.pdf");
//public static void main(String[] args) throws Exception {
List pages = (List) document.getDocumentCatalog().getAllPages();
for (int i = 0; i < pages.size(); i++) {
PDPage page = (PDPage) ((java.util.List) pages).get(i);// PDPage page = (PDPage) pages.get(i);
if ((i + 1) % 2 == 0) {
page.setRotation(0);
}
}
File f = new File(pdfFile);// File f = new File(pdfFile);
String newFile = f.getParent() + File.separator + "out.pdf";
document.save(newFile);
document.close();
}
}
如有任何帮助,我们将不胜感激
您将 class List
导入为
import java.awt.List;
但这不是你想要的List
。相反你想要
import java.util.List;
由于 OP 是 java 的新手,一些背景:
在 java API 中有几个 class 称为 List
,在第三方 API 中甚至更多。因此,在导入 List class
时,您必须确保导入正确的
特别是有:
java.awt.List
,一个 组件向用户展示了来自 Abstract Window 工具包 [=55] 的文本项滚动列表 =], 最早的 Java GUI API;和java.util.List
,来自 Java 的 有序集合(也称为 'sequence') 的接口集合框架.
在您的代码中,您正在处理 document.getDocumentCatalog().getAllPages()
的结果,其中 returns java.util.List
对象中 PDPage
个实例的列表。
错误消息 The operator < is undefined for the argument type(s) int, Dimension 是由于 java.awt.List
(如 java.util.List
) 有一个方法 size()
但这个方法 returns 一个 java.awt.Dimension
(一个 class 那个 封装了组件的宽度和高度 ) 而不是 int
.
因此,i < pages.size()
尝试比较那些自然无法比较的实体。