我想旋转多个PDF页面以获得SEASCAPE或LANDSCAPE肖像,但我无法弄清楚我缺少什么。这是我的代码
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 :(得分:1)
您忘记打开文档了。设置事件后,您需要添加以下行:
document.open();
因为您忘记了这一行,所以您会收到一个异常,通知您在添加图片时文档未打开。
下次发帖时请详细说明。例如:共享运行代码时引发的异常。当我第一次阅读你的代码时,我想:这段代码完全取自官方文档,为什么它不起作用?
我认为页面旋转有问题但是在第三次看完你的问题后,我意识到你没有告诉我们出了什么问题,所以我再看看你的代码,然后我看到了罪魁祸首:发布open()
声明。如果您共享了抛出的异常,我会立即看到它。
答案 1 :(得分:0)
试试这个
Document document = new Document(PageSize.A4_LANDSCAPE.rotate(),5,5,5,5);