广告
返回顶部
首页 > 资讯 > 精选 >JAVA如何生成pdf文件
  • 911
分享到

JAVA如何生成pdf文件

2023-07-04 14:07:57 911人浏览 安东尼
摘要

这篇“JAVA如何生成pdf文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JAVA如何生成pdf文件”文章吧。一、简介P

这篇“JAVA如何生成pdf文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JAVA如何生成pdf文件”文章吧。

    一、简介

    PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中。

    二、实操

    生成pdf文件成功,但是文字对不上。当修改”GethtmlContent“部分的编码之后,再次执行生成PDF文件即可完成正确的实现。

    JAVA如何生成pdf文件

    Edit Configurations

    JAVA如何生成pdf文件

    三、原理解析

    从这几点深入剖析和总结这个小项目

    1.是什么?

    该项目实现了解析一个模板html文件,将其转为pdf文件并输出到相应的目录中。

    1.1.关键技术

    freemarker,FreeMarker是模板引擎,一个Java类库。
    itextpdf,iText是一种生成PDF报表的Java类库,可以将Xml,Html文件转化为PDF文件。
    类 XMLWorkerHelper,(用于解析 XHTML/CSS 或 XML 流到 PDF 的帮助器类)。

    2.怎么做?为什么?

    相关依赖

    <dependency>    <groupId>com.itextpdf</groupId>    <artifactId>itextpdf</artifactId>    <version>5.5.13.2</version></dependency><dependency>    <groupId>com.itextpdf.tool</groupId>    <artifactId>xmlworker</artifactId>    <version>5.5.13.2</version></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-freemarker</artifactId>    <version>2.1.1.RELEASE</version></dependency><dependency>    <groupId>org.freemarker</groupId>    <artifactId>freemarker</artifactId>    <version>2.3.28</version></dependency>

    模板文件:generationpdf.html,所在目录为src/main/resources/templates/generationpdf.html

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8"/>    <title>Title</title>    <style>        body{font-family:SimSun;}        .title{align-content: center;text-align: center;}        .signature{float:right }    </style></head><body><div>    <h2 class="title">标题</h2>    <h5 class="title">副标题</h5>    <span>当前时间: ${date_time} </span>    <div class="signature">日期:${date}</div></div></body></html>

    GetHtmlContent.java:获取模板内容

    import freemarker.template.Configuration;import freemarker.template.Template;import java.io.*;import java.net.URL;import java.time.LocalDateTime;import java.time.fORMat.DateTimeFormatter;import java.util.HashMap;import java.util.Map;public class GetHtmlContent {        public static String getTemplateContent(String templateDirectory, String templateName, Map<String, Object> paramMap) throws Exception {        Configuration configuration = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);//不兼容配置        try {            configuration.setDirectoryForTemplateLoading(new File(templateDirectory));//加载模板        } catch (Exception e) {            System.out.println("-- exception --");        }        Writer out = new StringWriter();        Template template = configuration.getTemplate(templateName,"UTF-8");//缓存        template.process(paramMap, out);        out.flush();        out.close();        return out.toString();    }    public static void main(String[] args) throws Exception {        Map<String, Object> paramMap = new HashMap<>();        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");        paramMap.put("date_time", dateTimeFormatter.format(LocalDateTime.now()));        paramMap.put("date", dateTimeFormatter.format(LocalDateTime.now()).substring(0, 10));        ClassLoader classLoader = GetHtmlContent.class.getClassLoader();        URL resource = classLoader.getResource("templates");        String templateDirectory  =resource.toURI().getPath();        String templateContent = GetHtmlContent.getTemplateContent(templateDirectory, "generationpdf.html", paramMap);        System.out.println(templateContent);    }}

    生成pdf文件,将date_time和date存储到HashMap中,然后将数据输出到pdf中

    import com.itextpdf.text.Document;import com.itextpdf.text.pdf.PdfWriter;import com.itextpdf.tool.xml.XMLWorkerHelper;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.FileOutputStream;import java.NIO.charset.Charset;import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;import java.util.HashMap;import java.util.Map;public class GeneratePDF {        public static boolean html2Pdf(String content, String outPath) {        try {            Document document = new Document(); //创建一个标准的A4纸文档            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(outPath));//书写器与ducument文档关联            document.open();//打开文档            XMLWorkerHelper.getInstance().parseXHtml(writer, document,                    new ByteArrayInputStream(content.getBytes()), null, Charset.forName("UTF-8"));            document.close();//关闭文档        } catch (Exception e) {            System.out.println("生成模板内容失败"+e.fillInStackTrace());            return false;        }        return true;    }        public static byte[] html2Pdf(String content) {        ByteArrayOutputStream outputStream = null;        try {            Document document = new Document();            outputStream = new ByteArrayOutputStream();            PdfWriter writer = PdfWriter.getInstance(document, outputStream);            document.open();            XMLWorkerHelper.getInstance().parseXHtml(writer, document,                    new ByteArrayInputStream(content.getBytes()), null, Charset.forName("UTF-8"));            document.close();        } catch (Exception e) {            System.out.println("------生成pdf失败-------");        }        return outputStream.toByteArray();    }    public static void main(String[] args) throws Exception {        Map<String, Object> paramMap = new HashMap<>();        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");        paramMap.put("date_time", dateTimeFormatter.format(LocalDateTime.now()));        paramMap.put("date", dateTimeFormatter.format(LocalDateTime.now()).substring(0, 10));        String outPath = "D:\\A.pdf";        String templateDirectory = "src/main/resources/templates";        String templateContent = GetHtmlContent.getTemplateContent(templateDirectory, "generationpdf.html", paramMap);        GeneratePDF.html2Pdf(templateContent, outPath);    }}

    以上就是关于“JAVA如何生成pdf文件”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

    --结束END--

    本文标题: JAVA如何生成pdf文件

    本文链接: https://www.lsjlt.com/news/345685.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • JAVA如何生成pdf文件
      这篇“JAVA如何生成pdf文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JAVA如何生成pdf文件”文章吧。一、简介P...
      99+
      2023-07-04
    • 【Java】使用iText生成PDF文件
      iText介绍   iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。   项目要使用iT...
      99+
      2023-09-11
      java pdf python
    • 如何利用java实现生成PDF文件
      目录1.PDF文件简介2.生成PDF2.1 基于freemarker框架实现HTML转PDF2.1.1 引入jar包依赖:2.1.2 创建html模板test_template:2....
      99+
      2022-11-13
      java生成pdf文档 java生成pdf文件表格 java生成pdf
    • PHP生成PDF文件
      吾生也有涯,而知也无涯~欢迎优化补充、指正! 近期有需求是:前端签名后结合平台协议生成签名文件 本例实现方法为:借助canvas生成签名图片,然后贴至协议底部保存为pdf文档 (本例在TP6环境下)借助TCPDF实现  官方提供多个例子点击...
      99+
      2023-09-05
      前端
    • Android 生成pdf文件
      Android 生成pdf文件 1.使用官方的方式 使用官方的方式也就是PdfDocument类的使用 1.1 基本使用   @RequiresApi(api = Build.VERSION_CODES.KITKAT)   priv...
      99+
      2023-09-08
      android pdf gitee
    • JAVA怎么根据流生成PDF文件
      Java中可以使用iText库来根据流生成PDF文件。iText是一个开源的Java库,用于处理PDF文件。首先,需要下载iText...
      99+
      2023-08-15
      JAVA
    • JAVA生成pdf文件的实操指南
      目录一、简介二、实操三、原理解析1.是什么?1.1.关键技术2.怎么做?为什么?3.参考总结 一、简介 PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形...
      99+
      2022-11-13
      java生成pdf文件 java生成pdf文件表格 java生成pdf并打印
    • JAVA生成pdf文件的实操教程
      目录一、简介二、实操三、原理解析1.是什么?1.1.关键技术2.怎么做?为什么?3.参考总结 一、简介 PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形...
      99+
      2022-11-16
      java生成pdf文件 自己实现JAVA生成PDF文件 java实现pdf
    • 使用mpdf生成pdf文件
      本文主要需求是将html页面转换为pdf文档 1、安装mpdf工具类 (composer方式) composer require mpdf/mpdf:8.0.3 2、控制器里调用 ...
      99+
      2023-09-23
      servlet javascript 前端
    • 使用Python生成pdf文件
          Python平台的优秀PDF报表类库Reportlab。它不属于Python的标准类库,所以必须手动下载类库包并安装:       yum install python-reportlab -y    这篇文章将介绍reportla...
      99+
      2023-01-31
      文件 Python pdf
    • C#如何利用PdfSharp生成Pdf文件
      这篇文章给大家分享的是有关C#如何利用PdfSharp生成Pdf文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。PdfSharp一款开源的用于创建,操作PDF文档的.Net类库。PdfSharp下载在本例中,主...
      99+
      2023-06-14
    • 如何在Java中利用iTextPDF生成一个PDF文件
      这篇文章主要介绍了如何在Java中利用iTextPDF生成一个PDF文件,编程网小编觉得不错,现在分享给大家,也给大家做个参考,一起跟随编程网小编来看看吧!Java可以用来干什么Java主要应用于:1. web开发;2. Android开发...
      99+
      2023-06-06
    • Java中如何生成带有二维码的PDF文件?
      在现代社会,二维码已经成为了非常普遍的一种信息传递方式。而PDF文件也是一种非常常见的文档格式。那么,如何在Java中生成带有二维码的PDF文件呢?本文将为大家介绍一种基于iText库的方法。 iText是一个开源的Java PDF库,它...
      99+
      2023-06-24
      文件 二维码 shell
    • 【教程】如何使用Java生成PDF文档?
      在如今数字化时代,越来越多的人使用PDF文档进行信息传递和共享。而使用Java生成PDF文档也成为了一个非常重要的技能,因为Java作为一种通用的编程语言,可以在不同的操作系统和平台上运行。下面,我们将为您介绍如何使用Java生成PDF文档...
      99+
      2023-09-02
      java servlet jvm
    • 【生成PDF】【JAVA】纯后台生成Echarts图片,并将图片生成到PDF文档
      目录 前言 一、如何后台生成Echarts图片? 1.PhantomJS 2.PhantomJS的下载  3.用phantomjs调用echarts-converts.js生成图片 二、Java如何将Echarts图生成到PDF 1.生成P...
      99+
      2023-09-07
      pdf java echarts
    • Java根据word模板生成word文档并转成PDF文件
      1. 处理word模板 1.1 定义word模版 1.2 定义完我们的模板之后,我们要将文档保存为xml的格式 定义完我们的模板之后,我们要将文档保存为xml的格式 1.3 xml格式化 ...
      99+
      2023-09-09
      java word pdf chart
    • 从Java应用程序动态生成PDF文件(转)
      从Java应用程序动态生成PDF文件(转)[@more@]如果应用程序需要动态生成 PDF 文档,则需要 iText 库。开放源码的 iText 库使 PDF 文档的创建能够在瞬间完成。本文介绍了 iText 并提供了使用它从 Java ...
      99+
      2023-06-03
    • python中解析和生成pdf文件
      python中可以对pdf文件进行解析和生成,分别需要安装pdfminer/pdfminer3k和reportlab文件库。 一、pdf文件的解析 pdfminer安装文件路径,分别使用于python2.0/3.0版本: https:...
      99+
      2023-01-31
      文件 python pdf
    • 如何生成PDF
      这篇文章将为大家详细讲解有关如何生成PDF,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、后台生成PDFthinkphp利用MPDF插件示例代码:public ...
      99+
      2022-10-19
    • python生成一个简单的pdf文件
      from reportlab.graphics.shapes import Drawing, Stringfrom reportlab.graphics import renderPDF d = Drawing(200, 200)s = S...
      99+
      2023-01-31
      简单 文件 python
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作