使用java在pdf文件中旋转文档

时间:2014-10-30 06:38:05

标签: java

我遇到了一个问题,即我在我的应用程序中使用Iframe标签显示pdf文档。我的要求是当用户点击旋转按钮时我需要旋转pdf文档。我使用下面的代码来实现这个。

package com.resmac.ldms.action;

import java.io.FileOutputStream;

import java.io.IOException;

import java.text.ParseException;

import com.itextpdf.text.Document;

import com.itextpdf.text.DocumentException;

import com.itextpdf.text.Image;

import com.itextpdf.text.PageSize;

import com.itextpdf.text.pdf.PdfImportedPage;

import com.itextpdf.text.pdf.PdfReader;

import com.itextpdf.text.pdf.PdfWriter;


public class DocumentRotation {

      public static void main(String[] args) throws ParseException, DocumentException, IOException {
          PdfReader pdfReader = new PdfReader("C://Users//resmac//Desktop//rotate92.pdf"); 
          Document document = new Document(); 
          PdfWriter pdfWriter = PdfWriter.getInstance(document,new FileOutputStream("C://Users//resmac//Desktop//rotate93.pdf")); 
          pdfWriter.setStrictImageSequence(false); 
 document.setPageSize(PageSize.A4.rotate()); 



document.open(); 

          int pageCount = pdfReader.getNumberOfPages(); 

          for (int i = 1; i <= pageCount; i++) { 

                  document.newPage(); 
                  PdfImportedPage page = pdfWriter.getImportedPage(pdfReader, i); 
                  Image image = Image.getInstance(page); 
                  image.setRotationDegrees(90); 
                  image.setAbsolutePosition(0, 0); 
                  document.add(image); 
          } 
          document.close();
      }
}

当我运行上面的代码文档时第一次旋转90度。如果我通过替换源文档(使用我在第一次执行后得到的输出文档)运行相同的代码然后文档旋转180。如果我每次拿到180度旋转的文件时都继续这样做。但是我的要求总是它应该始终只旋转90度。可以帮助我。我已经被困在这两天了。请帮忙我:)

1 个答案:

答案 0 :(得分:0)

您当前的代码告诉页面翻转90度,无论观众认为上下都是如此。当你翻转90度时,翻转的图像是&#34;正常&#34;图像,它将继续旋转到无限。

你应该有一个 if 的情况和一个布尔值来测试图像是否已被翻转。

示例代码:

boolean flipped = false;

if(!flipped){
   image.setRotationDegrees(90);
   flipped = true;
}
else if(flipped){
   image.setRotationDegrees(-90);
   flipped = false;
}