`
zysnba
  • 浏览: 191451 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java生成pdf

 
阅读更多
1.首先,新建一个word文档,内容如下,另存为pdf格式,我的命名:test.pdf


2.用Adobe Acrobat Pro 打开刚刚制作的pdf文件。

3.点击创建-->PDF表单-->使用当前文档-->使用当前文档,一直点下一步完成。(有的版本Adobe Acrobat Pro软件右边有准备表单,直接点击准备表单是同样的效果


4.上面好多给框,双击黑框可以修改名称,还可以设置字体大小。


5.图片的地方没有黑框,我们可以在空白处点击右键,选择文本域,给图片的域起名为img

6.如下图是制作好的pdf模板,直接保存即可。注意:黑框里面的名称,是后面程序要用到的,程序根据名称给对应的位置赋值的。不管你去什么名字,只要保证和程序里面的名字一直即可


7,引入开发包
  <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.4.3</version>
        </dependency>  


8.工具类文件:
我的模板是放在d盘下面的,所以路径是d:/test.pdf,另外,我还在d盘下面放了一张图片 c:/123.jpg ,字体使用的是系统的字体,也可以自己到网上下载自己喜欢的字体文件,路径指向自己下载的字体文件路径即可.

  /**
     * 生成pdf
     * @param o
     * @param
     * @return
     */
    public  String exportPdf(Map<String, Object> o) {
         
     
        //标识是否成功
        boolean bool=true;
         String templatePath = "d:/mytest.pdf";
       // 生成的新文件路径 
        String newPDFPath = "d:/testout.pdf";
        // 1.指定解析器
        System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
                "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl");

        OutputStream os = null;
        PdfStamper ps = null;
        PdfReader reader = null;
        try {
//          
            os = new FileOutputStream(newPDFPath);
            // 2 读入pdf表单
            reader = new PdfReader(templatePath);
            // 3 根据表单生成一个新的pdf
            ps = new PdfStamper(reader, os);
            // 4 获取pdf表单
            AcroFields form = ps.getAcroFields();
            // 5给表单添加中文字体 这里采用系统字体。不设置的话,中文可能无法显示
       
      
BaseFont bf = BaseFont.createFont("c://windows//fonts//simsun.ttc,1" , BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
          
            form.addSubstitutionFont(bf);
            // 6查询数据================================================
            Map<String, String> datemap = (Map<String, String>) o.get("datemap");
            // 7遍历data 给pdf表单表格赋值
            for (String key : datemap.keySet()) {
                form.setField(key, datemap.get(key));
            }
            Map<String, String> imgmap = (Map<String, String>) o.get("imgmap");
            for (String key : imgmap.keySet()) {
                String value = imgmap.get(key);
                String imgpath = value;
                int pageNo = form.getFieldPositions(key).get(0).page;
                Rectangle signRect = form.getFieldPositions(key).get(0).position;
                float x = signRect.getLeft();
                float y = signRect.getBottom();
//                //根据路径读取图片
                Image image = Image.getInstance(imgpath);
//                //获取图片页面
                PdfContentByte under = ps.getOverContent(pageNo);
//                //图片大小自适应
//                image.scaleToFit(signRect.getWidth(), signRect.getHeight());
                image.scaleAbsolute(signRect.getWidth(),signRect.getHeight());
//                //添加图片
                image.setAbsolutePosition(x, y);
                under.addImage(image);
            }
            ps.setFormFlattening(true);
            log.info("PDF导出成功",);
        } catch (Exception e) {
            bool=false;
            log.info("PDF导出失败:{}",e);
        } finally {
            try {
                ps.close();
                reader.close();
                os.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
      

    }




  public static void main(String[] args) {
        Map<String,String> map = new HashMap();
        map.put("name","张三");
        map.put("creatdate","2018年1月1日");
        map.put("weather","晴朗");
        map.put("sports","打羽毛球");

        Map<String,String> map2 = new HashMap();
        map2.put("img","d:/123.jpg");

        Map<String,Object> o=new HashMap();
        o.put("datemap",map);
        o.put("imgmap",map2);
        pdfout(o);
    }

分享到:
评论

相关推荐

    Java生成pdf文件,解决中文乱码问题.pdf

    Java 生成 PDF 文件,解决中文乱码问题 Java 生成 PDF 文件,解决中文乱码问题是 Java 编程中常见的问题。解决这个问题的关键是正确地设置中文字体,以避免乱码问题。本文将通过一个完整的示例代码,详细讲解如何...

    JAVA生成PDF报表.pdf

    JAVA生成PDF报表.pdf 在企业的信息系统中,报表处理一直占据着重要的作用。本文将介绍一种生成PDF报表的Java组件--iText。通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超链接显示或下载得到生成的报表...

    java生成PDF字体库包+PDF包亲测成功

    Java生成PDF字体库包与PDF相关的技术涉及到Java编程语言、PDF文档处理以及特定的库,如iText。本文将深入探讨这些关键知识点,以便你更好地理解如何在Java环境中创建和处理PDF文档。 首先,让我们从Java开始。Java...

    java生成pdf工具类

    例如,一个简单的Java生成PDF工具类可能包含以下方法: ```java public class PdfGenerator { public void generatePdf(String dest, List&lt;String&gt; contentList) { // 初始化PDF文档和页面 PdfDocument pdfDoc =...

    java生成pdf字体和模板

    在Java开发中,生成PDF...总的来说,Java生成PDF字体和模板涉及了从创建文档、设置字体、设计布局到添加内容和导出文件等一系列步骤。理解并熟练运用这些工具和概念,可以帮助你高效地创建专业且富有个性化的PDF文档。

    JAVA生成PDF文件(Demo+jar),可加密及设置安全性

    首先,我们关注的是"JAVA生成PDF文件"。Java中常用的PDF库有iText、Apache PDFBox、 Flying Saucer等。这里提到了iText,它是一个强大的开源库,可以方便地创建、修改和操作PDF文档。使用iText,你可以添加文本、...

    Java 生成PDF工具类 免费版

    Java 生成PDF是一个常见的需求,特别是在企业级应用中,用于生成报告、合同或者任何需要以电子文档形式存储或传输的数据。在这个场景下,`iText`是一个非常流行且功能强大的库,尤其对于Java开发者来说。`iText ...

    aspose-17.8 Java 生成 pdf 工具类

    在IT行业中,生成PDF文档是常见的需求之一,特别是在Java开发中。Aspose是一家知名的软件公司,提供了一系列API来处理各种格式的文件,包括PDF。在本篇内容中,我们将聚焦于"Aspose-17.8 Java 生成PDF工具类",了解...

    java生成PDF 然后加密压缩文件

    前段时间由于项目需要,使用java生成PDF文件,然后将文件压缩成ZIP格式,同时对压缩文件进行加密,先将代码及jar包上传供大家参考,并希望大家共同完善和学习。 java生成PDF,java加密压缩文件并,java生成PDF后压缩...

    java生成PDF417条码

    Java作为一种广泛使用的编程语言,拥有丰富的库和框架来生成PDF417条码。在给定的博文链接中,虽然没有提供具体的内容,但我们可以推测作者可能分享了如何在Java环境中创建和使用PDF417条码的方法。通常,这会涉及到...

    Java 生成pdf文件加盖公章图片,上传阿里云

    以上就是使用Java生成PDF文件并加盖公章图片,以及上传阿里云的基本步骤和涉及的关键技术点。实际开发中可能还需要根据具体需求进行调整,例如,公章的透明度、旋转角度等,都需要通过代码进行精确控制。

    使用java生成pdf文件

    Java 生成 PDF 文件是开发过程中常见的一种需求,用于将数据以规范化的格式导出或打印。在本例中,我们看到使用的是 `iText` 库,这是一个强大的 Java 库,专门用于创建和修改 PDF 文档。以下是 `iText` 的核心概念...

    java生成pdf文件包含表格

    在Java编程中,生成PDF文件是一项常见的任务,特别是在需要创建报告、发票或任何其他类型的数据文档时。PDF(Portable Document Format)是一种通用的文件格式,能够保持文档的原始布局和样式,便于分享和打印。本篇...

    JAVA生成PDF报表

    ### JAVA生成PDF报表:利用iText的深度解析 在企业级应用中,报表处理是信息管理系统的核心组成部分之一,尤其在B/S架构系统中,如何高效地生成并展示报表成为了一个关键的技术挑战。本文将深入探讨如何使用Java...

    java生成PDF工具代码

    这个“java生成PDF工具代码”显然利用了`iText`库来解决一个特定的问题:在PDF中正确处理中文文本的换行。 在默认情况下,`iText`可能无法完美地处理中文字符的换行,因为中文字符间的分词和换行规则与英文有很大...

    java生成pdf文件

    Java生成PDF文件是一种常见的需求,特别是在企业级应用中,用于生成报告、发票、合同等文档。iText是一个广泛使用的开源库,专为Java和.NET设计,用于创建和修改PDF文档。在Java中生成PDF文件,iText库是首选工具之...

    java生成pdf文件分页输出并添加水印

    在Java开发中,生成PDF文件是一项常见的需求,特别是在报表、文档和证书的生成场景中。Itext库是一个广泛使用的开源库,它允许开发者通过简单的API来创建和编辑PDF文档。本篇文章将深入探讨如何利用Itext库在Java中...

Global site tag (gtag.js) - Google Analytics