zoukankan      html  css  js  c++  java
  • 【java】itext pdf 分页

    importjava.io.FileOutputStream;

    importcom.lowagie.text.Document;

    importcom.lowagie.text.Element;

    importcom.lowagie.text.ExceptionConverter;

    importcom.lowagie.text.Font;

    importcom.lowagie.text.PageSize;

    importcom.lowagie.text.Paragraph;

    importcom.lowagie.text.pdf.BaseFont;

    importcom.lowagie.text.pdf.PdfContentByte;

    importcom.lowagie.text.pdf.PdfPageEventHelper;

    importcom.lowagie.text.pdf.PdfTemplate;

    importcom.lowagie.text.pdf.PdfWriter;

    public classPdfExport extendsPdfPageEventHelper {

            publicPdfTemplate tpl;

            publicBaseFont bf;

            public static voidmain (String[] args) {

                Document document = newDocument (PageSize.A4, 20, 20, 20, 20);

                try{

                    PdfWriter writer = PdfWriter.getInstance(document, newFileOutputStream ("D:\\HelloItext.pdf") );

                    writer.setPageEvent (newPdfExport() );

                    BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

                    document.open();

                    Paragraph title = newParagraph ("测试内容。。。。", newFont (bfChinese,15) );

                    title.setAlignment (Element.ALIGN_CENTER);

                    document.add (title);

                } catch(Exception de) {

                    de.printStackTrace();

                }

                document.close();

            }

            public voidonOpenDocument (PdfWriter writer, Documentdocument) {

                try{

                    tpl= writer.getDirectContent().createTemplate(100, 100);

                    bf= BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

                } catch(Exception e) {

                    throw newExceptionConverter (e);

                }

            }

            public voidonEndPage (PdfWriter writer, Documentdocument) {

                //在每页结束的时候把“第x页”信息写道模版指定位置

                PdfContentByte cb =writer.getDirectContent();

                cb.saveState();

                String text = "第"+writer.getPageNumber() + "页,共";

                cb.beginText();

                cb.setFontAndSize (bf, 8);

                cb.setTextMatrix (460, 786); //定位“第x页,共” 在具体的页面调试时候需要更改这xy的坐标

                cb.showText (text);

                cb.endText();

                cb.addTemplate (tpl, 492, 786); //定位“y页” 在具体的页面调试时候需要更改这xy的坐标

                cb.saveState();

                cb.stroke();

                cb.restoreState();

                cb.closePath();//sanityCheck();

            }

            public voidonCloseDocument (PdfWriter writer, Documentdocument) {

                //关闭document的时候获取总页数,并把总页数按模版写道之前预留的位置

                tpl.beginText();

                tpl.setFontAndSize (bf, 8);

                tpl.showText (Integer.toString(writer.getPageNumber() - 1) + "页");

                tpl.endText();

                tpl.closePath();//sanityCheck();

            }

    }


  • 相关阅读:
    跟我学SpringCloud | 第十二篇:Spring Cloud Gateway初探
    跟我学SpringCloud | 第十一篇:使用Spring Cloud Sleuth和Zipkin进行分布式链路跟踪
    跟我学SpringCloud | 第十篇:服务网关Zuul高级篇
    跟我学SpringCloud | 第九篇:服务网关Zuul初
    跟我学SpringCloud | 第八篇:Spring Cloud Bus 消息总线
    跟我学SpringCloud | 第七篇:Spring Cloud Config 配置中心高可用和refresh
    跟我学SpringCloud | 第六篇:Spring Cloud Config Github配置中心
    跟我学SpringCloud | 第五篇:熔断监控Hystrix Dashboard和Turbine
    跟我学SpringCloud | 第四篇:熔断器Hystrix
    跟我学SpringCloud | 第三篇:服务的提供与Feign调用
  • 原文地址:https://www.cnblogs.com/ae6623/p/4416614.html
Copyright © 2011-2022 走看看