2016-09-06 96 views
-1

我想旋转几个PDF页面以获得SEASCAPE或LANDSCAPE肖像,但我无法弄清楚我缺少的东西。这里是我的代码无法旋转PDF iText页面

public void createSizedPdf(String dest) throws IOException, DocumentException { 
    Rectangle one = new Rectangle(290,120); 
    one.setBackgroundColor(BaseColor.YELLOW); 

    Document document = new Document(one,5,5,5,5); 
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest)); 

    Rotate event = new Rotate(); 
    event.setOrientation(PdfPage.SEASCAPE); 
    writer.setPageEvent(event); 
for (int i = 0; i < 5; i++) { 

    // add some paragraphs and imgs here 

    if(i != 0){ 
     event.setOrientation(PdfPage.SEASCAPE); 
     document.newPage();    
    }   
    document.add(img); 
    }   
    document.close(); 
} 

public class Rotate extends PdfPageEventHelper { 

    protected PdfNumber orientation = PdfPage.PORTRAIT; 

    public void setOrientation(PdfNumber orientation) { 
     this.orientation = orientation; 
    } 

    @Override 
    public void onStartPage(PdfWriter writer, Document document) { 
     writer.addPageDictEntry(PdfName.ROTATE, orientation); 
    } 
} 

在此先感谢。

+0

检查这个问题:[链接](http://stackoverflow.com/questions/14591689/itext-rotate-page-content-while-creating-pdf)和iText官方文档[链接](http:///developers.itextpdf.com/examples/page-events-itext5/page-orientation-and-rotation) – TimeToCode

回答

0

尝试这样

Document document = new Document(PageSize.A4_LANDSCAPE.rotate(),5,5,5,5); 
1

你忘了打开文档。您需要添加下面这行已经设置了事件之后:

document.open(); 

因为你忘了这条线,你会得到一个异常,通知你,当你添加一个图像文件未打开。

请在下次发布问题时更具体。例如:共享运行代码时抛出的异常。当我第一次阅读你的代码时,我想:这段代码是从官方文档中直接获取的,为什么它不起作用?

我认为页面旋转出现了问题,但在第三次阅读您的问题后,我意识到您没有告诉我们什么是错误的,所以我再看看您的代码,然后我看到了罪魁祸首:发布open()声明。如果您共享抛出的异常,我会立即看到它。

+0

其实我并没有忘记document.open()语句,所以我没有发现任何错误,它被删除了当我复制/粘贴代码时出错,并且是这些行来自文档'Rotate event = new Rotate(); event.setOrientation(PdfPage.SEASCAPE); writer.setPageEvent(event);'和Rotate类。我无法理解,我没有得到一个SEASCAPE页面,它应该可以正常工作,并且我已经尝试过一些简单的例子。 – ahmed

+0

好了,那么你应该解决你的问题:添加'document.open()',解释你没有得到任何错误,并解释说这些页面没有旋转。理想情况下,您还应该添加一个显示行为的PDF,以便我们可以检查页面字典(不是屏幕截图,而是实际的PDF)。没有它,没有人能够帮助你,因为**你自己承认**,这些例子完美地工作。只有您的特定代码不起作用。根据您的破解复制/粘贴示例,我们没有看到针对您的代码的特定内容。 –