2016-09-06 10 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

Проверьте этот вопрос: [link] (http://stackoverflow.com/questions/14591689/itext-rotate-page-content-while-creating-pdf) и официальную документацию iText [link] (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 (событие); 'и класс Rotate. что я не могу понять, я не получаю страницы SEASCAPE, и он отлично работает с некоторыми простыми примерами, которые я пробовал. – ahmed

+0

ОК, тогда вы должны исправить свой вопрос: добавьте 'document.open()', объясните, что вы не получаете никаких ошибок и объясните, что страницы не вращаются. В идеале вы также должны добавить PDF-файл, который показывает поведение, чтобы мы могли проверить словарь страниц (а не снимок экрана, а фактический PDF-файл). Без этого никто не сможет вам помочь, потому что **, как вы сами признаете **, примеры работают отлично. Только ваш конкретный код не работает. Мы не видим, что конкретно для вашего кода основано на вашем сломанном образце копирования/вставки. –

Смежные вопросы