精华内容
下载资源
问答
  • java后台生成pdf文件

    千次阅读 2019-12-07 17:04:52
    第一种需要定制模板,然后生成pdf下载打印。因为模板有可能随时改动,样式内容都可以发生变化。所以我这边在用doc做模板,先变量替换进去,生成新的doc 再讲新的doc转换为pdf让用户下载。随时可以修改模板 ,不要...

    已经实践两种方法,第一种用doc模板 生成的时候替换模板中需要替换的内容,再讲替换好的doc转换成pdf。

    第二种生成html页面将页面转pdf,这种更直观,所见即所得。

    第一种需要定制模板,然后生成pdf下载打印。因为模板有可能随时改动,样式内容都可以发生变化。所以我这边在用doc做模板,先将变量替换进去,生成新的doc 再讲新的doc转换为pdf让用户下载。随时可以修改模板 ,不要需要修改代码,导出的pdf就会自动跟着改动。

    doc替换文字用的网上找的别人的方法。

    用模板和数据替换生成新的doc

       public void toWord(String infilePath, String outfilePath, Map<String, Object> map) {
            File intfile = new File(infilePath);
            FileInputStream fileInputStream = null;
            File outfile = new File(outfilePath);
            FileOutputStream out;
            try {
                fileInputStream = new FileInputStream(intfile);
                template = new WordTemplate(fileInputStream);
    
                template.replaceTag(map);// 鏇挎崲瀛楃涓叉ā鐗�
    
                out = new FileOutputStream(outfile);
                BufferedOutputStream bos = new BufferedOutputStream(out);
                template.write(bos);
            } catch (IOException exception) {
                exception.printStackTrace();
            }
        }

     下面的代码是替换的代码,需要poi-3.16.jar,poi-ooxml-3.15.jar,poi-ooxml-schemas-3.15.jar,poi-scratchpad-3.16.jar,poi-tl-0.0.3.jar,注意下版本,我在这里踩了坑 有的版本会影响到原有处理excel的功能 ,有的会导致pdf 没法导出。

    
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    import org.apache.poi.xwpf.usermodel.XWPFParagraph;
    import org.apache.poi.xwpf.usermodel.XWPFRun;
    import org.apache.poi.xwpf.usermodel.XWPFTable;
    import org.apache.poi.xwpf.usermodel.XWPFTableRow;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
    import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
    
    public class WordTemplate {
    
        private XWPFDocument document;
    
        public WordTemplate(InputStream inputStream) throws IOException {
            document = new XWPFDocument(inputStream);
        }
    
        public void replaceTag(Map<String, Object> map) {
            for (Entry<String, Object> item : map.entrySet()) {
                if (item.getKey().equals("String")) {// 鐩爣涓烘枃鏈�
                    Map<String, String> tempMap = (Map<String, String>) item.getValue();
                    replaceParagraphs(tempMap);
                    replaceTables(tempMap);
                } else if (item.getKey().equals("Table")) {// 鐩爣涓鸿〃鏍�
                    replaceKeyToTables((Map<String, Object>) item.getValue());
                }
    
            }
    
        }
    
        public void write(OutputStream outputStream) throws IOException {
            document.write(outputStream);
        }
    
        /**
         * 鏇挎崲娈佃惤閲岀殑淇℃伅顒�
         * 
         * @param map
         */
        private void replaceParagraphs(Map<String, String> map) {
            List<XWPFParagraph> allXWPFParagraphs = document.getParagraphs();
            for (XWPFParagraph XwpfParagrapg : allXWPFParagraphs) {
                XWPFParagraphHandler XwpfParagrapgUtils = new XWPFParagraphHandler(XwpfParagrapg);
                XwpfParagrapgUtils.replaceAll(map);
            }
        }
    
        /**
         * 鏇挎崲琛ㄦ牸閲岀殑淇℃伅顒�
         * 
         * @param map
         */
        private void replaceTables(Map<String, String> map) {
            List<XWPFTable> xwpfTables = document.getTables();
            for (XWPFTable xwpfTable : xwpfTables) {
                XWPFTableHandler xwpfTableUtils = new XWPFTableHandler(xwpfTable);
                xwpfTableUtils.replace(map);
            }
        }
    
        /**
         * 鏇挎崲琛ㄦ牸
         *
         * @author huangdongkui
         * @param map
         */
        public void replaceKeyToTables(Map<String, Object> param) {
            List<XWPFParagraph> paragraphList = document.getParagraphs();
            if (paragraphList != null && paragraphList.size() > 0) {
                for (XWPFParagraph paragraph : paragraphList) {
                    String text = paragraph.getParagraphText();
                    for (Entry<String, Object> entry : param.entrySet()) {
                        String key = entry.getKey();
                        if (text.indexOf(key) != -1) {
    
                            Object value = entry.getValue();
                            if (value instanceof List) {// 琛ㄦ牸
                                text = text.replace(key, "");
    
                                XWPFTable tableOne = document.insertNewTbl(paragraph.getCTP().newCursor());
    
                                //娣诲姞鍒�
                                for (int col = 1; col < ((Map<String, String>) ((List) value).get(0)).entrySet().size(); col++) {
                                    tableOne.addNewCol();
                                }
    
                                // 濉厖鍒楀ご
                                XWPFTableRow crow = tableOne.createRow();
                                int k = 0;
                                for (Entry<String, String> col : ((Map<String, String>) ((List) value).get(0)).entrySet()) {
                                    String skey = col.getKey();
                                    if (skey!=null&&!skey.equals("")) {
                                        crow.getCell(k).setText(skey);
    
                                        k++;
                                    }
                                }
    
                                for (int i = 1; i < ((List) value).size(); i++) {
                                    // 娣诲姞琛�
                                    XWPFTableRow rrow = tableOne.createRow();
                                    int j = 0;
                                    for (Entry<String, String> col : ((Map<String, String>) ((List) value).get(i)).entrySet()) {
                                        String sValue = col.getValue();
                                        if (sValue!=null&&!sValue.equals(""))  {
                                            rrow.getCell(j).setText(sValue);
    
                                            j++;
                                        }
                                    }
    
                                }
    
                                tableOne.removeRow(0);
                                setTableWidthAndHAlign(tableOne, "8000", STJc.CENTER);
    
                            }
                            List<XWPFRun> runs = paragraph.getRuns();
    
                            for (XWPFRun xwpfrun : runs) {
                                xwpfrun.setText("", 0);
                            }
    
                        }
                    }
    
                }
            }
        }
    
        public void setTableWidthAndHAlign(XWPFTable table, String width, STJc.Enum enumValue) {
            CTTblPr tblPr = getTableCTTblPr(table);
            CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr.addNewTblW();
            if (enumValue != null) {
                CTJc cTJc = tblPr.addNewJc();
                cTJc.setVal(enumValue);
            }
    
            tblWidth.setW(new BigInteger(width));
            tblWidth.setType(STTblWidth.DXA);
    
        }
    
        /**
         * @Description: 寰楀埌Table鐨凜TTblPr,涓嶅瓨鍦ㄥ垯鏂板缓
         */
        public CTTblPr getTableCTTblPr(XWPFTable table) {
            CTTbl ttbl = table.getCTTbl();
            CTTblPr tblPr = ttbl.getTblPr() == null ? ttbl.addNewTblPr() : ttbl.getTblPr();
            return tblPr;
        }
    
    }

    生成doc没有问题之后 转换pdf   ,用到jar 有org.apache.poi.xwpf.converter.core-1.0.4.jar,org.apache.poi.xwpf.converter.pdf-1.0.4.jar

             template = "c:/合同模板/"+categoryCode+".docx";
            WordTemplateUtilities.GetInstance().toWord(template, outfilePath, map);
                String pdfPath = filePath + UUID.randomUUID() + ".pdf";
                WordTemplateUtilities.GetInstance().convertWordToPdf(outfilePath, pdfPath);
                return pdfPath;

    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import org.apache.poi.xwpf.converter.pdf.PdfConverter;
    import org.apache.poi.xwpf.converter.pdf.PdfOptions;
    import org.apache.poi.xwpf.usermodel.XWPFDocument;
    
    public class WordTemplateUtilities {
       
    	public static void convertWordToPdf(String wordPath, String pdfPath) throws IOException {
    
    		FileInputStream inpuFile = new FileInputStream(wordPath);
    		File outFile=new File(pdfPath);		
    	    //从输入的文件流创建对象
    	    XWPFDocument document = new XWPFDocument(inpuFile);
    	    //创建PDF选项
    	    PdfOptions pdfOptions = PdfOptions.create();//.fontEncoding("windows-1250")
    	    //为输出文件创建目录
    	    outFile.getParentFile().mkdirs();
    	    //执行PDF转化
    	    PdfConverter.getInstance().convert(document, new FileOutputStream(outFile), pdfOptions);	    
    	    System.out.println("成功转换:"+pdfPath);
    
    	}
    }

     

    第二种 过两天在写

     

    展开全文
  • 然后,将html页面中需要变换的部分使用freemarker.template的语法替换掉,如${},<#list>。 使用freemarker.template生成html页面 具体方法可以参照word生成工具类。 该页面的内容应该...
        

    html模板

    首先,根据pdf模板文件建立html网页。如果有word的文档,可以在线转换成html页面,之后自己进行微调就行。
    然后,将html页面中需要变换的部分使用freemarker.template的语法替换掉,如${},<#list>。

    使用freemarker.template生成html页面

    具体方法可以参照word生成工具类
    该页面的内容应该和pdf模板一样的。

    将html转换成word文件

    使用phantomjs软件,它可以支持windows,Linux(64,32),具体信息可以查看官网。
    调用软件可以参考同文集下的java 网页截图工具

    展开全文
  • Java生成PDF文档

    2019-12-04 13:16:44
    利用java实现excel转pdf文件 JAVA语言实现excel转pdf文件 Itext+POIExcel转换为PDF 直接根据数据生成pdf Java生成PDF文档 iText使用PDF模板一 java根据模板导出pdf 动态生成数据太麻烦。 java根据模板HTML...
    展开全文
  • java生成pdf

    2019-09-26 23:40:05
    介绍 本篇博客主要是为了介绍如何使用:flying-saucer+itext+freemark实现导出复杂点的pdf文件。...使用flying-saucer生成pdf文件 下载jar包 <dependency> <groupId>org.xhtmlrende...

    介绍

    本篇博客主要是为了介绍如何使用:flying-saucer+itext+freemark实现导出复杂点的pdf文件。

    思路

    • 先把pdf的内容以html形式准备好
    • 使用freemarker将html中的动态内容替换掉
    • 使用flying-saucer生成pdf文件

    下载jar包

    <dependency>
        <groupId>org.xhtmlrenderer</groupId>
        <artifactId>flying-saucer-pdf</artifactId>
        <version>9.1.5</version>
    </dependency>

    下载中文字体

    搜索:simsun.ttc
    宋体(对应css中的 属性 font-family: SimSun; /宋体/)

    准备好pdf的模板

    把这个模板放到
    506422-20180718160107783-2109646324.png

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>准考证</title>
    <style>
    @page {  size: 13.8in 10.4in; }
    </style>
    <!--@page {  size: 13.8in 10.4in; } 这个可以调整pdf页面的大小很好用-->
    </head>
    <body>
    <div style="width: 1200px; margin:0 auto; background: #fff; position: relative">
        <img src="/isuyang/images/steam/students.jpg" width="1200px;" alt=""/>
        <span style="color:#333; font-size:12.0pt; font-family: ; position: absolute; top: 63px; left:154px;">${certificateNumber}</span>
        <span style="color:#333; font-size:20.0pt; font-family: SimSun; font-weight: bold; position: absolute; top: 320px; left:236px;width: 160px; text-align: center">${realName}</span>
        <span style="color:#333; font-size:20.0pt; font-family: SimSun; font-weight: bold; position: absolute; top: 426px; left:236px;width: 140px; text-align: center">${division}</span>
        <span style="color:#333; font-size:20.0pt; font-family: SimSun; font-weight: bold; position: absolute; top: 426px; left:428px;width: 140px; text-align: center">${grade}</span>
    
        <span style="color:#333; font-size:20.0pt; font-family: SimSun; font-weight: bold; position: absolute; top: 426px; left:612px;width: 140px; text-align: center">${prize}</span>
    </div>
    </body>
    </html>

    配置Freemaker

    添加引用

    <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>2.3.20</version>
             </dependency>

    在src/main/resource目录下创建ftl.properties文件

    506422-20180718160128650-723411683.png

    这个文件不一定非得放在这里,只是maven项目约定资源文件的目录是在这。
    ftl的文件内容:

    classic_compatible=true      
    ##如果变量为null,转化为空字符串,比如做比较的时候按照空字符做比较 
    whitespace_stripping=true    
    ##去掉多余的空格,非常有用 
    ##模版更新事件,设置为1秒,正式环境设置为3600秒  
    #template_update_delay=3600 
    template_update_delay=1        
    ##模版更新时间,这里配置是1秒更新一次,正式环境,模版不会改变,可以将这个值设很大,提高效率
    ##locale=zh_CN            
    ##中国 
    default_encoding=utf-8   
    ##编码utf8 
    url_escaping_charset=utf-8  
    ##url编码utf8 
    date_format=yyyy-MM-dd   
    ##显示日期格式 
    time_format=HH:mm:ss       
    ##显示时间格式 
    datetime_format=yyyy-MM-dd HH:mm:ss  
    ##显示日期格式 
    number_format=0.###### 
    ##数字显示格式
    boolean_format=是,否
    ## boolean显示格式
    tag_syntax=auto_detect
    ##设置标签类型 两种:[] 和 <> 。[] 这种标记解析要快些

    在ftl.xml文件里配置freemarker.template.Configuration

    506422-20180718160144715-352002783.png

    记得在spring-context.xml文件里引用这个文件,
    506422-20180718160156308-1672774003.png

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
            http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.1.xsd"
        default-lazy-init="true">
    
        <description>ftl Configuration</description>
    
        <!-- 加载配置属性文件 -->
        <context:property-placeholder ignore-unresolvable="true" location="classpath:config/config.properties" />
        
        <bean id="configuration" class="freemarker.template.Configuration"/>
        
    </beans>

    在启动的时候加载配置

    /**
     * 启动
     * <p>
     * 应用的启动入口
     *
     * @author   ZhuangJunxiang(529272571@qq.com)
     * @Date     2017年4月10日
     */
    @Component
    public class Setup implements ServletContextAware {
    
        @Override
        public void setServletContext(final ServletContext context) {
            WebApplicationContext act = ContextLoader.getCurrentWebApplicationContext();
            Configuration ftlConf = (Configuration) act.getBean("configuration");
            FtlUtil.initConfiguration(ftlConf, context, "/", "config/ftl.properties");
        }
    }
    

    编写Controller

        /**
         * 下载初赛的pdf证书
         * 
        */
        @Void //这个是自定义注解,可以删除
        @RequestMapping
        @ResponseBody
        public void downloadChuSaiPrizePdf() {
            stemViewService.downloadPdf();
        }

    编写steamViewService

       public void downloadPdf() {
            String pdfPath = generatorPdf(getSteamSignup(), "student.ftl");
            boolean exist = FileUtil.isExist(pdfPath);
            if (!exist) {
                throw ExceptionUtil.bEx("PDF不存在");
            }
            try {
                DownloadUtil.download(MvcUtil.getResponse(), pdfPath);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                FileUtil.deleteFile(pdfPath);
            }
        }
       /**
         * 生成pdf
         *
         * @param parameter
         * @return TODO(这里描述每个参数,如果有返回值描述返回值,如果有异常描述异常)
        */
        public String generatorPdf(Map<String, Object> parameter, String ftlPath) {
            //Pdf的存放路径:"G:\\pdf\\" 这里的路径我是通过配置获取的
            String pdfPath = pdfConfig.getValue("pdfPath") + parameter.get("certificateNumber") + ".pdf";
            //字体的存放路径 这里也是通过配置获取的:可以写:G:\\pdf\\simsun.ttc
            String font1 = pdfConfig.getValue("fontPath");
    
            OutputStream os = null;
            try {
    
                os = new FileOutputStream(pdfPath);
                ITextRenderer renderer = new ITextRenderer();
                ResourceLoaderUserAgent callback = new ResourceLoaderUserAgent(renderer.getOutputDevice());
    
                renderer.getSharedContext().setUserAgentCallback(callback);
                callback.setSharedContext(renderer.getSharedContext());
                //添加中文字体
                renderer.getFontResolver().addFont(font1, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
                //这里的ftl路径存放在WEB-INF/steam/下
                String repAfterHtml = FtlUtil.build(configuration, "steam/" + ftlPath, parameter);
                renderer.setDocumentFromString(repAfterHtml);
                // 解决图片的相对路径问题,这里也可以写:http://localhost:8080/的形式
                renderer.getSharedContext().setBaseURL("http://static.isuyang.cn/");
                renderer.layout();
                renderer.createPDF(os);
                os.close();
                os = null;
            } catch (Exception ex) {
                ex.printStackTrace();
            } finally {
                if (os != null) {
                    try {
                        os.close();
                    } catch (IOException e) {
                        // ignore
                    }
                }
            }
            return pdfPath;
        }
        /**
         * 资源加载代理
         *
         */
        private static class ResourceLoaderUserAgent extends ITextUserAgent {
            public ResourceLoaderUserAgent(ITextOutputDevice outputDevice) {
                super(outputDevice);
            }
    
            protected InputStream resolveAndOpenStream(String uri) {
                InputStream is = super.resolveAndOpenStream(uri);
                System.out.println("加载资源文件: " + uri);
                return is;
            }
        }

    DownloadUtil.java

    package com.we.core.web.util;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    
    import javax.servlet.http.HttpServletResponse;
    
    import com.we.core.common.util.ExceptionUtil;
    import com.we.core.common.util.FileUtil;
    
    /**
     * 下载方法
     * @author  lq
     * @Date     2014-7-15
     */
    public class DownloadUtil {
    
        public static HttpServletResponse download(final HttpServletResponse response, final String path) throws Exception {
            return download(response, path, null);
        }
    
        public static HttpServletResponse download(final HttpServletResponse response, final String path,
                final String fileName) throws Exception {
            File file = new File(path);
            String fn = fileName;
            if (com.we.core.common.util.Util.isEmpty(fileName)) {
                fn = file.getName();
            } else {
                if (fileName.indexOf(".") == -1) {
                    fn = fileName + "." + FileUtil.getSuffix(file.getName());
                }
            }
            InputStream fis = new BufferedInputStream(new FileInputStream(path));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            response.reset();
            response.addHeader("Content-Disposition", "attachment;filename="
                    + new String(fn.getBytes("gb2312"), "ISO8859-1"));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
            return response;
        }
    
        public static HttpServletResponse viewWord(final HttpServletResponse response, final String path) throws Exception {
            try {
                File file = new File(path);
                String filename = file.getName();
                InputStream fis = new BufferedInputStream(new FileInputStream(path));
                byte[] buffer = new byte[fis.available()];
                fis.read(buffer);
                fis.close();
                response.reset();
                response.addHeader("Content-Disposition", "inline;filename="
                        + new String(filename.getBytes("gb2312"), "ISO8859-1"));
                OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
                response.setContentType("application/pdf");
                toClient.write(buffer);
                toClient.flush();
                toClient.close();
            } catch (Exception e) {
                throw ExceptionUtil.bEx("文件损坏,预览失败");
            }
            return response;
        }
    
        public HttpServletResponse viewTxt(final HttpServletResponse response, final String path) throws Exception {
            try {
                BufferedReader bis = null;
                File file = new File(path);
                InputStream in = new FileInputStream(file);
                bis = new BufferedReader(new InputStreamReader(in));
                StringBuffer buf = new StringBuffer();
                String temp;
                while ((temp = bis.readLine()) != null) {
                    buf.append(temp);
                    response.getWriter().write(temp);
                    if (buf.length() >= 1000) {
                        break;
                    }
                }
                bis.close();
            } catch (Exception e) {
                throw ExceptionUtil.bEx("文件损坏,预览失败");
            }
            return response;
        }
    }
    

    效果

    506422-20180718160216683-2132289366.jpg

    建议

    最好参考官方文档,因为好多写的都是不全,还有就是在搜索百度的时候一定要搜索博客靠前的文章,可以使用百度的搜索工具过滤一下。
    https://developers.itextpdf.com/examples/xml-worker-itext5/html-images

    转载于:https://www.cnblogs.com/wangsen/p/9329687.html

    展开全文
  • java篇——java导出pdf文件

    千次阅读 多人点赞 2016-01-12 09:09:51
    我这里使用的是利用iText将html模板强制转换为pdf文件 File f = new File("d:/"); File htmlFile =  new File(f,“test.html”);//html文件 File pdfFile = new File(f,"test.pdf");//生成pdf文件 //读入html文件...
  • Java生成pdf,兼容富文本内容使用技术,freemark + jsoup + flying saucer使用freemark替换模板文件中指定的占位符,生成一个完整的的html字符串,使用jsoup对html进行格式化,使用flying saucer整个html进行pdf...
  • 前台是页面展示的数据图标什么的生成PDF 前台代码: function downloadofpdf(){ var varname = $("#taskid").text(); if(confirm("您确认下载该PDF文件吗?")){ var target = document....
  • 通过iText不仅可以生成PDF或rtf的文档,而且可以XML、Html文件转化为PDF文件。如果PDF是标记的且包含一个结构树,就可以借助于iTextPDF文档转换成XML文档(这往往取决于PDF文档是如何创建的)。另外还可以从页面中...
  • 一、程序导出word文档的方法web/html内容导出为world文档,再...php中也有一些相应的方法,但在python中将web/html内容生成world文档的方法是很少的。其中最不好解决的就是如何使用js代码异步获取填充的数据,...
  • 需求:网页内容导出为pdf...原理:利用freemarker模板与数据渲染所得到的html内容,通过ITextRenderer对象解析html内容生成pdf 参考地址: 导出pdf https://my.oschina.net/lujianing/blog/894365 带有图片 ...
  •  iText简介 iText是一个开放源码的Java类库,可以用来方便地生成PDF文件。大家通过访问http://sourceforge.net/project/showfiles.php?group_id=15255&release_id=167948下载最新版本的类库,下载完成之后会得到一...
  • [最近在项目需要,需要将html内容转换成pdf文件,采用itextpdf总是不显示中文。 找了很多方法都没搞定,然后在网上看到了有个帖子说改源码解决这个问题,但是经过测试还Java iText 动态 生成 PDF 文档 表格 中文...
  • 详解如何利用iText在JSP中生成PDF报表

    千次阅读 2008-05-22 11:07:00
    前久做了一个通过JSP生成PDF报表的小项目,算得上开了一次眼界。企业的一些信息通过网络形成Html报表,虽然...1、iText简介iText是一个开放源码的Java类库,可以用来方便地生成PDF文件。大家通过访问http://sourceforge
  • 1、概述 企业的一些信息通过网络形成Html报表,虽然IE可以直接打印显示在...2、iText简介 iText是一个开放源码的Java类库,可以用来方便地生成PDF文件。大家通过访问http://sourceforge.net/project/showfiles....
  • Java Word 文档处理API 先进功能执行邮件合并使用邮件合并生成报表插入格式户文本,段落,图像,表格以及其他内容到Word文档中使用数据库的检索数据填充到Word文档中的表格创建邮件标签关联文档,文档间移动部分内容...
  • 1.背景 前不久做了一个通过JSP生成PDF报表的小项目,算得上开了一次眼界。企业的一些信息通过网络形成Html报表,虽然IE可以直接... iText是一个开放源码的Java类库,可以用来方便地生成PDF文件。大家通过访问http:
  • 问题的由来 前不久做了一个通过JSP生成PDF报表的小项目,算得上开了一次眼界。企业的一些信息通过网络形成Html报表... iText简介 iText是一个开放源码的Java类库,可以用来方便地生成PDF文件。大家通过访问http://s
  • 如何利用iText在JSP中生成PDF报表- -

    千次阅读 2004-10-15 09:16:00
    1.背景 前不久做了一个通过JSP生成PDF报表的小项目,算得上开了一次眼界。企业的一些信息通过网络形成Html报表,虽然IE可以...2.iText简介 iText是一个开放源码的Java类库,可以用来方便地生成PDF文件。大家通过访
  • Java2核心技术第7版全两卷.pdf中文高清

    千次下载 热门讨论 2012-09-14 14:22:28
    本资源内有两本书《Java2核心技术卷I:基础知识(第7版)》和《JAVA2核心技术,卷II:高级特性(第7版)》,大小分别为 88MB 和 112 BM,均为 PDF 格式,高清影印版。两本书分别介绍如下: 《Java2核心技术卷I:基础知识...
  • HTMlPDF

    2019-09-16 16:55:11
    背景 公司需要官网上的文章都打包成pdf,由于文章是通过后台富文本生成的,内容中带有HTML标签。...iText是非常著名的快速产生PDF文件Java类库 优点: 1.非常成熟的Java类库,相关帮助文档...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 125
精华内容 50
关键字:

java将html内容生成pdf文件

java 订阅