精华内容
下载资源
问答
  • 我们在项目当中经常要导出pdf文档,pdf文档还要按一定的格式导出,以下介绍导出pdf文档功能: 1)支持A4纸大小导出 2)指定文字显示的位置 3)支持表格展示数据 4)添加水印 5)代码全开源,在多个项目中使用,放心...
  • java 导出pdf

    2009-12-26 15:15:41
    java 导出 pdf itext包 导出图片,文字等
  • java导出pdf.zip

    2021-07-22 10:08:18
    java 将数据导出pdf格式
  • Java导出PDF和PDF转JPG

    2020-01-08 17:26:00
    该案例是某银行java代码实现导出PDF功能,所需的jar包和代码都在包中,里面有4个PDF案例和1个炒生成jpg案例,直接导入到Eclipse即可运行,希望能够帮助大家。
  • itext java 导出pdf工具

    2011-07-08 10:04:58
    itext java 导出pdf工具 itext java 导出pdf工具 itext java 导出pdf工具
  • java导出pdf文件

    2014-06-17 16:24:57
    java导出pdf文件
  • java导出PDF文件

    2013-07-22 20:51:10
    java导出PDF文件
  • java导出PDF文件的例子

    2017-07-31 13:49:47
    包含导出所需要的jar包,并且包含直接导出数据库和传参两种方式 java导出PDF文件实例.rar java导出PDF文件实例.rar
  • java导出pdf

    2016-08-17 11:37:35
    给出一个导出pdf的通用接口的demo,底层通用,业务层按照自己的需要自己定义。运行时将导出路径换成你本地计算机存放的路径
  • java导出excel pdf 报表

    2010-05-26 10:49:15
    java导出excelpdf等各种报表!做报表必用的!
  • java导出docx导出pdf

    2018-08-22 17:29:50
    亲自可用,包含jar包导入项目即可用,可以生成docx也可以生成pdf
  • java导出表格PDF

    千次阅读 2018-03-13 14:26:24
    第一次写博客,有很多不足的地方请多多指教,话不多说,直接上代码。1.建立PDF模板import ...import java.awt.Color;import java.util.List;import java.util.Map;import javax.servlet.http.HttpServletR...

    第一次写博客,有很多不足的地方请多多指教,话不多说,直接上代码。

    1.建立PDF模板

    import com.lowagie.text.*;
    import com.lowagie.text.pdf.*;


    import java.awt.Color;
    import java.util.List;
    import java.util.Map;


    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;






    /**
     * <p>Title: 生成PDF文件</p>
     * <p>Description: 本实例通过使用iText包生成一个表格的PDF文件</p>
     * <p>Copyright: Copyright (c) 2018</p>
     * <p>Filename: DbspreadDataPDF.java</p>
     * @author ly
     * @version 1.0
     */
    public class DbspreadDataPDF {
        /**
         *<br>方法说明:写PDF文件
         *<br>输入参数:
         *<br>返回类型:
         *@param pdfname 文件名称
         *@param headName 表头名称
         *@param headcount 表头信息
         *@param list 数据源
         *@param names 对应数据源的属性
         */
          public void write(HttpServletRequest request, HttpServletResponse response,String pdfname,String headName,String headcount[],List<Map<String, Object>> list,String[] names){
           try{
             Document document=new Document(PageSize.A4, 50, 50, 100, 50);
             Rectangle pageRect=document.getPageSize();
             response.setContentType("application/x-msdownload;charset=UTF-8");
             response.setHeader("Content-Disposition","attachment;filename="+pdfname+"");
             PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream());
             //创建汉字字体
             BaseFont bfSong = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
             Font fontSong = new Font(bfSong, 10, Font.NORMAL);
             
              // 为页增加页头信息
             HeaderFooter header = new HeaderFooter(new Phrase(""+headName+"",fontSong), false);
             header.setBorder(2);
             header.setAlignment(Element.ALIGN_RIGHT);
             document.setHeader(header);
             
           // 为页增加页脚信息
             HeaderFooter footer = new HeaderFooter(new Phrase("第 ",fontSong),new Phrase(" 页",fontSong));
             footer.setAlignment(Element.ALIGN_CENTER);
             footer.setBorder(1);
             document.setFooter(footer);


              // 打开文档
             document.open(); 
             //构造表格
             Table table = new Table(headcount.length);
             table.setAlignment(Element.ALIGN_MIDDLE);
             table.setBorder(Rectangle.NO_BORDER);
             int hws[] = new int[headcount.length] ;
             for (int i = 0; i < headcount.length; i++) {
                 hws[i]=20;
             }
             table.setWidths(hws);
             table.setWidth(100);
             //表头信息
             for (String i : headcount) {
                 Cell cellleft= new Cell(new Phrase(i,new Font(bfSong, 10, Font.ITALIC,new Color(0,0,255))));
                 cellleft.setUseAscender(true); 
                 cellleft.setColspan(1);
                 cellleft.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置字体垂直居中;
                 cellleft.setHorizontalAlignment(Element.ALIGN_CENTER);//设置字体水平居中,只能通过cell来居中;
                 table.addCell(cellleft);
             }
             //收货和订货人信息,表体内容
             for (Map<String, Object> map : list) {
                 for (int i = 0; i < names.length; i++) {
                     if (map.get(names[i]) != null) {
                         Cell cellleft= new Cell(new Phrase(map.get(names[i]).toString(),fontSong));
                         cellleft.setUseAscender(true); 
                         cellleft.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置字体垂直居中;
                         cellleft.setHorizontalAlignment(Element.ALIGN_CENTER);//设置字体水平居中,只能通过cell来居中;
                         table.addCell(cellleft);
                     }else{
                         Cell cellleft= new Cell(new Phrase("",fontSong));
                         cellleft.setUseAscender(true); 
                         cellleft.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置字体垂直居中;
                         cellleft.setHorizontalAlignment(Element.ALIGN_CENTER);//设置字体水平居中,只能通过cell来居中;
                         table.addCell(cellleft);
                     }
                 }
             }
             //将表格添加到文本中
             document.add(table);
             //关闭文本,释放资源
             document.close(); 
             
           }catch(Exception e){
             System.out.println(e);   
           }
          }

    }


    2.我们写一个测试类

     public static void main(String[] args) {
            List<T>  list=new ArrayList<T>(); //建立一个list集合,将你的数据源存储到改历史集合中
            List<Map<String, Object>> dbServicestypesMaplist  = new ArrayList<Map<String,Object>>();
            dbServicestypesMaplist = BeanToMapUtil.convertListBean2ListMap(list,A.class);//将list集合转换成list map集合
            DbspreadDataPDF dbspreadDataPDF=new DbspreadDataPDF();
            String pdfname = Sys.getCtime()+".pdf";
            String headName="用户统计";
            String[] headcount={"编号","用户名","地址","手机号"};
            String[] names={"sid","username","address","phone"};
            dbspreadDataPDF.write(request, response, pdfname, headName, headcount, dbServicestypesMaplist, names);

        }


    3.Map 对象与 JavaBean 对象互转工具类

    import java.beans.BeanInfo;
    import java.beans.IntrospectionException;
    import java.beans.Introspector;
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.sql.Timestamp;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;


    /**
     * Map 对象与 JavaBean 对象互转工具类
     */
    public class BeanToMapUtil<T> {


    private BeanToMapUtil()


    {
    // 私有的构造方法
    }


    /**
    * 将一个 JavaBean 对象转化为一个 Map

    * @param bean
    * @return
    * @throws IntrospectionException
    * @throws IllegalAccessException
    * @throws InvocationTargetException
    */
    public static Map<String, Object> convertBean2Map(Object bean) throws IntrospectionException, IllegalAccessException, InvocationTargetException {
    Class<? extends Object> type = bean.getClass();
    Map<String, Object> returnMap = new HashMap<>();
    BeanInfo beanInfo = Introspector.getBeanInfo(type);


    PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
    for (int i = 0; i < propertyDescriptors.length; i++) {
    PropertyDescriptor descriptor = propertyDescriptors[i];
    String propertyName = descriptor.getName();
    if (!"class".equals(propertyName)) {
    if (propertyName.contains("time")) {
    Method readMethod = descriptor.getReadMethod();
    Object result = readMethod.invoke(bean, new Object[0]);
    if (result != null) {
    Timestamp ts = Timestamp.valueOf(result.toString());
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    result = sdf.format(ts);
    returnMap.put(propertyName, result);
    } else {
    returnMap.put(propertyName, null);
    }
    } else {
    Method readMethod = descriptor.getReadMethod();
    Object result = readMethod.invoke(bean, new Object[0]);
    if (result != null) {
    returnMap.put(propertyName, result);
    } else {
    returnMap.put(propertyName, null);
    }
    }
    }
    }
    return returnMap;
    }


    /**
    * 将 List<JavaBean>对象转化为List<Map>

    * @param beanList
    * @return
    * @throws Exception
    */
    public static <T> List<Map<String, Object>> convertListBean2ListMap(List<T> beanList, Class<T> T) throws Exception {
    List<Map<String, Object>> mapList = new ArrayList<>();
    for (int i = 0, n = beanList.size(); i < n; i++) {
    Object bean = beanList.get(i);
    Map<String, Object> map = convertBean2Map(bean);
    mapList.add(map);
    }
    return mapList;
    }
    }

    展开全文
  • Java 导出 PDF 文件

    千次阅读 2019-03-04 17:40:22
    Java 导出 PDF 文件前言导出 PDF相关依赖代码解决 PDF 中文乱码的问题的关键 前言 在开发中,导出 PDF 文件是经常会遇到的问题。难度不大,但是有些繁琐。这里简单记录一下。 本博客主要是记录解决中文乱码的问题的...

    前言

    • 在开发中,导出 PDF 文件是经常会遇到的问题。难度不大,但是有些繁琐。这里简单记录一下。
    • 本博客主要是记录解决中文乱码的问题的方法。PDF 文件的高级操作请小伙伴们参考其他博客

    导出 PDF

    相关依赖

    •       <dependency>
                <groupId>com.itextpdf</groupId>
                <artifactId>itextpdf</artifactId>
                <version>5.5.4</version>
            </dependency>
            <dependency>
                <groupId>com.itextpdf</groupId>
                <artifactId>itext-asian</artifactId>
                <version>5.2.0</version>
            </dependency>
      
    • itextpdf 是基础依赖包; 引入 itext-asian 是为了支持中文

    代码

    •       /**
         * 向 输出流 写入一个 pdf 文件
         *
         *
         * @param out
         * @author: Andy
         * @time: 2019/3/4 14:54
         * @since
         */
        private void setDefaultPDF(OutputStream out){
        	try(ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
        		Document document = new Document();
        		PdfWriter.getInstance(document, byteArrayOutputStream);
      
        		/**
        		 * 新建一个字体,iText的方法 STSongStd-Light 是字体,在iTextAsian.jar 中以property为后缀
        		 * UniGB-UCS2-H 是编码,在iTextAsian.jar 中以cmap为后缀 H 代表文字版式是 横版, 相应的 V
        		 * 代表竖版
        		 */
        		BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        		Font font = new Font(baseFont, 12, Font.NORMAL);
        		document.open();
        		document.add(new Paragraph("XXXX!请联系您的管理员", font));
        		document.close();
      
        		byteArrayOutputStream.writeTo(out);
        	} catch (Exception e) {
        		LOGGER.error("获取XXX文件失败!", e);
        	}
        }
      

      解决 PDF 中文乱码的问题的关键

      • itext-asian 依赖包
      •     BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        	Font font = new Font(baseFont, 12, Font.NORMAL);
        	document.open();
        	document.add(new Paragraph("XXXX!请联系您的管理员", font));
        
    展开全文
  • java导出pdf文件jar包

    2017-02-05 14:00:36
    java导出pdf文件jar包
  • java itext导出PDF github

    2018-09-21 18:40:13
    导出PDF例子,供网友参考,导出PDF例子,供网友参考,导出PDF例子,供网友参考
  • 导出如下图的表格,该怎么实现?求教![图片说明](https://img-ask.csdn.net/upload/201603/23/1458726984_727476.png)
  • java导出PDF文件实例.rar 包含导出所需要的jar包,并且包含直接导出数据库和传参两种方式 java导出PDF文件实例.rar java导出PDF文件实例.rar
  • 采用JAVA技术导出PDF文件,配置中所需相关文件. 包括PDF导出模板demo,PDF导出文件字体配置,PDF导出图片demo等
  • java导出pdf、加表格、加水印 全开源放心下载
  • javapdf导出

    2015-05-08 08:47:07
    javapdf导出
  • java实现导出pdf文件

    2017-10-16 17:01:52
    JAVA实现页面导出PDF文件,itext页面导出技术!!!!!
  • 仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
  • java 导出pdf 证书

    2019-06-25 15:35:49
    近期在做导出pdf,但是在网上找的都是导出pdf表格或者就是根据模板导出,但是我要的是导出证书,所以我就在想了一下,直接把照片当成水印在最后面,然后把相应的数据填写在相应的位置里面,效果如下: 1.这个是生成...

    近期在做导出pdf,但是在网上找的都是导出pdf表格或者就是根据模板导出,但是我要的是导出证书,所以我就在想了一下然后参考了一下链接,直接把照片当成水印在最后面,然后把相应的数据填写在相应的位置里面,效果如下:
    在这里插入图片描述
    1.这个是生成中文内容中字体的样式封装类

    package com.springboot.wensocket.importexport.entity;
    
    import com.itextpdf.text.BaseColor;
    import com.itextpdf.text.Element;
    import com.itextpdf.text.Font;
    
    public class ContentStyle {
    
        private String TTFPath = "F:\\IdeaProject\\wensocket\\src\\main\\resources\\simhei.ttf";// 字体类型
        private float  fontSize = 12;//字体大小
        private BaseColor baseColor = new BaseColor(0, 0, 0);//默认是黑色
        private int style = Font.NORMAL;//字体样式
        private int alignment = Element.ALIGN_LEFT;
    
        public String getTTFPath() {
            return TTFPath;
        }
        public void setTTFPath(String tTFPath) {
            TTFPath = tTFPath;
        }
        public float getFontSize() {
            return fontSize;
        }
        public void setFontSize(float fontSize) {
            this.fontSize = fontSize;
        }
        public BaseColor getBaseColor() {
            return baseColor;
        }
        public void setBaseColor(BaseColor baseColor) {
            this.baseColor = baseColor;
        }
        public int getStyle() {
            return style;
        }
        public void setStyle(int style) {
            this.style = style;
        }
        public int getAlignment() {
            return alignment;
        }
        public void setAlignment(int alignment) {
            this.alignment = alignment;
        }
    }
    

    2.导出pdf工具类

    package com.springboot.wensocket.importexport.entity;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import com.itextpdf.text.Document;
    import com.itextpdf.text.DocumentException;
    import com.itextpdf.text.Font;
    import com.itextpdf.text.Image;
    import com.itextpdf.text.PageSize;
    import com.itextpdf.text.Phrase;
    import com.itextpdf.text.pdf.BaseFont;
    import com.itextpdf.text.pdf.ColumnText;
    import com.itextpdf.text.pdf.PdfContentByte;
    import com.itextpdf.text.pdf.PdfWriter;
    
    public class PDFUtil {
    
        private Document document;
        private PdfWriter writer;
    
        public void setDocument(Document document) {
            this.document = document;
        }
    
        public void setWriter(PdfWriter writer) {
            this.writer = writer;
        }
        /**
         * 开启创建PDF对象
         * @param pafPath : 生成pdf的磁盘路径
         * @return
         * @throws FileNotFoundException
         * @throws DocumentException
         */
        public PDFUtil openDocumnet(String pafPath) throws FileNotFoundException, DocumentException{
            Document document = new Document(PageSize.A4);
            writer = PdfWriter.getInstance(document,new FileOutputStream(pafPath));
            document.open();
            this.document = document;
            return this;
        }
        /**
         * 添加图片背景
         * @param imageUrl :证书图片的磁盘路径
         * @param absoluteX :左边距
         * @param absoluteY :底边距
         * @return
         * @throws MalformedURLException
         * @throws IOException
         * @throws DocumentException
         */
        public PDFUtil addImage(String imagePath,float absoluteX, float absoluteY) throws MalformedURLException, IOException, DocumentException{
            Image tImgCover = Image.getInstance(imagePath);
            tImgCover.setAbsolutePosition(absoluteX, absoluteY);
            float heigth = tImgCover.getHeight();
            float width = tImgCover.getWidth();
            // int percent=getPercent(heigth, width);
            int percent = getPercent2(heigth, width);
            // 设置图片居中显示
            // tImgCover.setAlignment(Image.MIDDLE);
            tImgCover.scalePercent(percent);// 表示是原来图像的比例;
            document.add(tImgCover);
            return this;
        }
        /**
         *
         * @param certificateContent :pdf证书的中文内容
         * @param x :左边距
         * @param y :底边距
         * @param contentStyle :中文内容的样式
         * @return
         * @throws DocumentException
         * @throws IOException
         */
        public PDFUtil addContent(String certificateContent,float x, float y,ContentStyle contentStyle) throws DocumentException, IOException{
    
            if(contentStyle == null){
                contentStyle = new ContentStyle();
            }
    
            PdfContentByte canvas = writer.getDirectContent();
            BaseFont bf = BaseFont.createFont(contentStyle.getTTFPath(),BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            Font secFont = new Font(bf, contentStyle.getFontSize(), contentStyle.getStyle(), contentStyle.getBaseColor());
            Phrase certificateContentPhrase = new Phrase(certificateContent, secFont);
            ColumnText.showTextAligned(canvas, contentStyle.getAlignment(), certificateContentPhrase, x,y, 0);
            return this;
        }
        /**
         * 添加日期内容
         * @param x 插入pdf左边距
         * @param y 插入pdf底边距
         * @param contentStyle
         * @return
         * @throws DocumentException
         * @throws IOException
         */
        public PDFUtil addDateContent(float x, float y,ContentStyle contentStyle) throws DocumentException, IOException{
    
            if(contentStyle == null){
                contentStyle = new ContentStyle();
            }
    
            Date currentDate = PDFUtil.getCurrentDate();
            String currentDateString = PDFUtil.DateToString(currentDate);
    
            PdfContentByte canvas = writer.getDirectContent();
            BaseFont bf = BaseFont.createFont(contentStyle.getTTFPath(),BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            Font secFont = new Font(bf, contentStyle.getFontSize(), contentStyle.getStyle(), contentStyle.getBaseColor());
            Phrase certificateDatephrase = new Phrase(currentDateString, secFont);
            ColumnText.showTextAligned(canvas,contentStyle.getAlignment(), certificateDatephrase, x,y, 0);
            return this;
        }
        /**
         * 释放资源
         */
        public void close(){
            document.close();
        }
        /**
         * 第二种解决方案,统一按照宽度压缩
         * 这样来的效果是,所有图片的宽度是相等的,自我认为给客户的效果是最好的
         * @param args
         */
        public int getPercent2(float h,float w)
        {
            int p=0;
            float p2=0.0f;
            p2=595/w*100;
            System.out.println("--"+p2);
            p=Math.round(p2);
            return p;
        }
        /**
         * 第一种解决方案
         * 在不改变图片形状的同时,判断,如果h>w,则按h压缩,否则在w>h或w=h的情况下,按宽度压缩
         * @param h
         * @param w
         * @return
         */
    
        public int getPercent(float h,float w)
        {
            int p=0;
            float p2=0.0f;
            if(h>w)
            {
                p2=297/h*100;
            }
            else
            {
                p2=210/w*100;
            }
            p=Math.round(p2);
            return p;
        }
    
        /**
         *  日期
         * @return
         */
        public static java.util.Date getCurrentDate(){
            return new java.util.Date(System.currentTimeMillis());
        }
        public static String DateToString(Date date) {
            if(date == null){
                return "";
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            return sdf.format(date);
        }
    
        /**
         * 测试
         * @param args
         * @throws MalformedURLException
         * @throws FileNotFoundException
         * @throws DocumentException
         * @throws IOException
         */
        public static void main(String[] args) throws MalformedURLException, FileNotFoundException, DocumentException, IOException {
            long currentDateTime = new Date().getTime();
            //背景照片的路径
            String imagePath = PDFUtil.class.getClassLoader().getResource("static/img/9.png").getPath();
            //生成的路径
            String pdfFilePath = "f:/" +getCurrentDate()+ ".pdf";
            PDFUtil pdfUtil = new PDFUtil();
            pdfUtil.openDocumnet(pdfFilePath)
                    .addImage(imagePath, 0, 400)
                    .addDateContent(340,440,null)
                    .addContent("inco",83,635,null)
                    .close();
        }
    }
    

    3.pom.xml

    <dependency>
    	    <groupId>com.itextpdf</groupId>
    	    <artifactId>itextpdf</artifactId>
    	    <version>5.5.11</version>
    	   </dependency>
    	   
    	   <dependency>
    		    <groupId>com.itextpdf</groupId>
    		    <artifactId>itext-asian</artifactId>
    		    <version>5.2.0</version>
    		</dependency>
    

    备:如果没有字体类型的话,在这里下载“字体类型”(提取码:2p2k)
    我这个是参考的“路径

    展开全文
  • java 导出pdf 证书-附件资源
  • JAVA导出TXT文件.pdf

    2021-10-04 00:01:28
    JAVA导出TXT文件.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,455
精华内容 7,782
关键字:

java导出复杂的pdf

java 订阅