使用 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() 尝试比较那些自然无法比较的实体。