【问题标题】:iText Document : Rotate the pageiText 文档:旋转页面
【发布时间】:2013-06-10 22:40:21
【问题描述】:

文档旋转后,我失去了页面中数据的顺序:

package com.mkyong.common.view;


    import java.io.File;
    import java.io.IOException;
    import java.util.Map;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.web.servlet.view.document.AbstractPdfView;
    import com.lowagie.text.Document;
    import com.lowagie.text.DocumentException;
    import com.lowagie.text.PageSize;
    import com.lowagie.text.Table;
    import com.lowagie.text.pdf.PdfWriter;
    import com.lowagie.text.Image;
    public class PdfRevenueReportView extends AbstractPdfView{

        @Override
        protected void buildPdfDocument(Map model, Document document,
            PdfWriter writer, HttpServletRequest request,
            HttpServletResponse response) throws Exception {

            Image im= Image.getInstance("D:\\tree2.png");
             // setSize
             im.scaleToFit(130, 150);


            Map<String,String> revenueData = (Map<String,String>) model.get("revenueData");

            Table table = new Table(2);
            table.addCell("Month");
            table.addCell("Revenue");

            for (Map.Entry<String, String> entry : revenueData.entrySet()) {
                table.addCell(entry.getKey());
                table.addCell(entry.getValue());
                    }
            document.setPageSize(PageSize.A4.rotate());
            document.newPage();
            document.add(im);
            document.add(table);

        } 
    }

给我这个:

当我改变这两行的位置时:

document.setPageSize(PageSize.A4.rotate());
document.newPage();

它返回到默认位置。问题出在哪里?

谢谢。

【问题讨论】:

    标签: spring-mvc itext


    【解决方案1】:

    试试这个:

    Document document = new Document(PageSize.A4.rotate());
    

    【讨论】:

    • 但是对象 Document 是方法protected void buildPdfDocument的参数
    • 你能在你的函数中改变和创建文档吗?去尝试一下。或者使用上面的构造函数,在此函数之外创建 Document。
    • 我给参数取了另一个名字,我在函数内部实例化,它给了我这个错误:Etat HTTP 500 - Request processing failed; nested exception is com.lowagie.text.DocumentException: The document is not open yet; you can only add Meta information.
    • 调用构造函数后添加document.open();
    • 另一个例外Etat HTTP 500 - Request processing failed; nested exception is ExceptionConverter: java.io.IOException: The document has no pages. 甚至我把这个放在打开方法之后:document.newPage();
    【解决方案2】:

    通过这种方式解决:

                document.setPageSize(PageSize.A4.rotate());
            document.open();
            document.newPage();
    

    谢谢@Alex。

    【讨论】:

      【解决方案3】:

      这是在(新的)itext 7 中旋转页面的代码:

          PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));
      
          for (int i = 1; i <= pdfDoc.getNumberOfPages(); i++) {
              PdfPage page = pdfDoc.getPage(i);
              page.setRotation(180);
          }
      
          pdfDoc.close();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-13
        • 2017-09-20
        相关资源
        最近更新 更多