精华内容
下载资源
问答
  • 我知道这个问题一定在这里被问到,但是通过搜索我没有找到解决方案:我的问题是:什么是最好的Java库,“完全下载任何渗透和渲染内置的JavaScript,然后以编程方式访问渲染网页(即DOM-Tree!),并将DOM树作为”HTML -...

    我知道这个问题一定在这里被问到,但是通过搜索我没有找到解决方案:

    我的问题是:什么是最好的Java库,“完全下载任何渗透和渲染内置的JavaScript,然后以编程方式访问渲染网页(即DOM-Tree!),并将DOM树作为”HTML -资源”.

    (类似地,firebug做的最终,它渲染页面,我可以访问完全渲染的DOM树,因为页面看起来像在浏览器!相反,如果我点击“显示源”,我只得到JavaScript源代码这不是我想要的,我需要访问渲染的页面…)

    (与渲染我的意思是只渲染DOM树不是可视化渲染…)

    这不一定是一个单独的库,可以使用几个可以一起完成这些功能的库(一个将下载,一个渲染),但是由于JavaScript的动态特性,很可能JavaScript库也必须具有某种下载器完全呈现任何异步JS …

    背景:

    在“好的旧时代”中,HttpClient(Apache Library)是构建您自己的非常简单的抓取工具所需的一切. (很多像Nutch或Heretrix这样的cralwers仍然围绕着这个核心原则,主要集中于标准HTML解析,所以我无法从中学到)

    我的问题是,我需要抓取一些严重依赖JavaScript的网站,并且我无法使用HttpClient解析,因为我无需执行JavaScripts之前…

    非常感谢你!!

    蒂姆

    展开全文
  • 现有需求涉及到打印pdf操作,简单找了俩种方式在现有的模板上进行编辑,操作难度比较大通过freemarker生成静态页面,在进行转换html,完美。撸起来建立springboot工程添加maven依赖org.springframework.bootspring-...

    现有需求涉及到打印pdf操作,简单找了俩种方式

    在现有的模板上进行编辑,操作难度比较大

    通过freemarker生成静态页面,在进行转换html,完美。

    撸起来

    建立springboot工程

    添加maven依赖

    org.springframework.boot

    spring-boot-starter-freemarker

    com.itextpdf

    itextpdf

    5.5.13.2

    org.xhtmlrenderer

    flying-saucer-pdf

    9.1.20

    application.properties配置freemarker,默认配置

    spring.freemarker.charset=UTF-8

    spring.freemarker.suffix=.ftl

    spring.freemarker.content-type=text/html; charset=utf-8

    spring.freemarker.template-loader-path=classpath:/templates

    spring.mvc.static-path-pattern=/static/**

    测试代码

    public class JavaToPdfHtmlFreeMarkerBet {

    private static final String DEST = "target/bet-gg.pdf";

    private static final String HTML = "index7.html";

    private static final String IMG_PATH = "file:///D:/project/javaproject/spring-boot-pdf/src/main/resources/static/";

    private static Configuration freemarkerCfg;

    static {

    freemarkerCfg = new Configuration();

    //freemarker的模板目录

    try {

    freemarkerCfg.setDirectoryForTemplateLoading(new File("src/main/resources/templates/betPrint"));

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    public static void main(String[] args) throws IOException, DocumentException, com.lowagie.text.DocumentException {

    Map data = new HashMap();

    data.put("name", "dahai");

    String content = JavaToPdfHtmlFreeMarkerBet.freeMarkerRender(data, HTML);

    JavaToPdfHtmlFreeMarkerBet.createPdf(content, DEST);

    }

    /**

    * freemarker渲染html

    */

    public static String freeMarkerRender(Map data, String htmlTmp) {

    Writer out = new StringWriter();

    try {

    // 获取模板,并设置编码方式

    Template template = freemarkerCfg.getTemplate(htmlTmp);

    template.setEncoding("UTF-8");

    // 合并数据模型与模板

    template.process(data, out); //将合并后的数据和模板写入到流中,这里使用的字符流

    out.flush();

    return out.toString();

    } catch (Exception e) {

    e.printStackTrace();

    } finally {

    try {

    out.close();

    } catch (IOException ex) {

    ex.printStackTrace();

    }

    }

    return null;

    }

    public static void createPdf(String content, String dest) throws IOException, com.lowagie.text.DocumentException {

    ITextRenderer render = new ITextRenderer();

    // 解析html生成pdf

    render.setDocumentFromString(content);

    //解决图片相对路径的问题

    render.getSharedContext().setBaseURL(IMG_PATH);

    render.layout();

    render.createPDF(new FileOutputStream(dest));

    }

    }

    web环境

    获取模板的话可以直接通过注入FreeMarkerConfigurer来获取

    @Autowired

    FreeMarkerConfigurer freeMarkerConfigurer;

    Template template = freeMarkerConfigurer.getConfiguration().getTemplate("betPrint/print_match.ftl");

    设置边距

    由于是通过模板进行渲染,所以边距需要前端来进行控制

    @page {

    margin: 0in 0.1in 0in 0.1in;

    mso-header-margin: .5in;

    mso-footer-margin: .5in;

    mso-page-orientation: landscape;

    }

    但是打印的时候如果选择实际大小,那会导致前面的配置失效

    af3435aa7ff572c0c0a58bed465b53fd.png

    pdf流形式返回

    该实例是直接在本地磁盘生成pdf,如果是web环境下,可以通过生成流的方式,直接返回给客户端,避免了磁盘io

    方式就是将

    render.createPDF(new FileOutputStream(dest));

    修改为

    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

    render.createPDF(outputStream);

    总结:

    html的格式要求符合xml格式,必须要有闭合标签。比如只能写成

    由于这是服务端生成的,自然跟客户端扯不上关系,这一点很好。但是跟window和linux还是有些细小的区别。比如linux字体的最小为12px

    CSS有些语法不支持,比如C3就不支持

    加载图片可以使用file://协议,linux也是支持的。还有,简单起见,可以直接使用http加载网络图片

    由于是通过模板渲染,边距,分页等设置就是前端的事了 比如height: 100%;box-sizing: border-box;即可实现

    展开全文
  • 说明,不论使用哪种方式,都不能引用CSS来渲染样式,而是使用style,或者将样式放在当前页面的中方法一、1、引用的jar包org.apache.poipoi4.1.02、核心代码String html = "测试内容POIFSFileSystem poifs = null;...

    说明,不论使用哪种方式,都不能引用CSS来渲染样式,而是使用style,或者将样式放在当前页面的中

    方法一、

    1、引用的jar包

    org.apache.poi

    poi

    4.1.0

    2、核心代码

    String html = "

    测试内容

    POIFSFileSystem poifs = null;

    FileOutputStream ostream = null;

    ByteArrayInputStream bais = null;

    String uuid = "测试.doc";

    File file = null;

    try {

    //HTML内容必须被

    包装

    fileParam.setcContent("

    " + html + "");

    byte[] b = fileParam.getcContent().getBytes();

    bais = new ByteArrayInputStream(b);

    poifs = new POIFSFileSystem();

    DirectoryEntry directory = poifs.getRoot();

    //WordDocument名称不允许修改

    directory.createDocument("WordDocument", bais);

    ostream = new FileOutputStream(uuid);

    poifs.writeFilesystem(ostream);//当前目录下就生成了一个测试.doc的文档

    } catch (Exception e) {

    logger.error("exception is {}", e);

    } finally {

    IOUtils.closeQuietly(poifs);

    IOUtils.closeQuietly(ostream);

    IOUtils.closeQuietly(bais);

    try {

    FileUtils.forceDelete(file);

    } catch (Exception e2) {

    }

    }

    方法二

    /**

    * word格式html的标签头

    */

    public static final String HTML_TAG_BGN = "

    ";

    public filePath downloadWordReport(String htmlForPrint) {

    try {

    String wordString = htmlForPrint.replaceAll("

    ", "").replaceAll("", HTML_TAG_BGN );

    String fileName = new String("测试文件.doc".getBytes(), "UTF-8");

    //上传文件方法

    return this.upload(new ByteArrayInputStream(wordString.getBytes()), fileName);

    } catch (Exception e) {

    return null;

    }

    }

    展开全文
  • 说明,不论使用哪种方式,都不能引用CSS来渲染样式,而是使用style,或者将样式放在当前页面的中方法一、1、引用的jar包org.apache.poipoi4.1.02、核心代码String html = "测试内容POIFSFileSystem poifs = null;...

    说明,不论使用哪种方式,都不能引用CSS来渲染样式,而是使用style,或者将样式放在当前页面的中

    方法一、

    1、引用的jar包

    org.apache.poi

    poi

    4.1.0

    2、核心代码

    String html = "

    测试内容

    POIFSFileSystem poifs = null;

    FileOutputStream ostream = null;

    ByteArrayInputStream bais = null;

    String uuid = "测试.doc";

    File file = null;

    try {

    //HTML内容必须被

    包装

    fileParam.setcContent("

    " + html + "");

    byte[] b = fileParam.getcContent().getBytes();

    bais = new ByteArrayInputStream(b);

    poifs = new POIFSFileSystem();

    DirectoryEntry directory = poifs.getRoot();

    //WordDocument名称不允许修改

    directory.createDocument("WordDocument", bais);

    ostream = new FileOutputStream(uuid);

    poifs.writeFilesystem(ostream);//当前目录下就生成了一个测试.doc的文档

    } catch (Exception e) {

    logger.error("exception is {}", e);

    } finally {

    IOUtils.closeQuietly(poifs);

    IOUtils.closeQuietly(ostream);

    IOUtils.closeQuietly(bais);

    try {

    FileUtils.forceDelete(file);

    } catch (Exception e2) {

    }

    }

    方法二

    /**

    * word格式html的标签头

    */

    public static final String HTML_TAG_BGN = "

    ";

    public filePath downloadWordReport(String htmlForPrint) {

    try {

    String wordString = htmlForPrint.replaceAll("

    ", "").replaceAll("", HTML_TAG_BGN );

    String fileName = new String("测试文件.doc".getBytes(), "UTF-8");

    //上传文件方法

    return this.upload(new ByteArrayInputStream(wordString.getBytes()), fileName);

    } catch (Exception e) {

    return null;

    }

    }

    展开全文
  • 现在就是返回的操作,一般的返回可能都是json或者什么之类的,现在要用原始的方式。先新建一个jsp页面,写一点东西:<%@ page contentType="text/html;charset=UTF-8" languag...
  • 前端与后端最初的渲染方式是后端模板渲染,就是由后端使用模板引擎渲染html后,返回给前端,前端再用js去操作dom或者渲染其他动态的部分。 这个过程大致分成以下几个步骤: 前端请求一个地址url 后端接收到...
  • latex公式渲染有两种类型,一种是HTML形式展示公式,另一种是图片形式展示公式。如果是HTML形式展示公式,渲染是在前端完成的,一般会比较缓慢。知乎采取的方式是以图片形式展示公式。codecogs是一个latex公式渲染...
  • layui渲染数据的两种方式

    千次阅读 2020-05-19 21:45:10
    一.自动渲染 自动渲染直接拼接url <%-- Created by IntelliJ IDEA. User: Fetter Time: 21:53 To change this template use File | Settings...charset=UTF-8" language="java" %> <html> <head>
  • 另外还有一种方式是通过模拟浏览器内核获取动态加载的数据,使得动态页面的数据获取与解析同静态HTML一样方便。 目前对于Java爬虫而言,最常用的浏览器内核模拟工具是做自动测试用的Selenium。然而,由于浏览器的...
  • 三种Java下生成PDF方式的比较

    万次阅读 2017-07-14 10:00:40
    用iText生成PDF有三种方式:调用iText API,用代码“写”出PDF结合XmlWorker;从HTML模板生成PDF结合FlyingSaucer;从HTML模板生成PDF。但它们的渲染效果、便利性各有优劣。
  • 已有的实现方式:采用标准的jsp模板输出实现,简单地说,就是把数据渲染进jsp页面,然后将此页面另存为doc文档,从而达到word导出效果。但是存在以下几个问题:(1) 由于导出的html网页格式,打开word后,默认显示的...
  • 实现方式一直接通过HttpServletResponse以流的方式将html字符串写到浏览器页面,注意设置Header,标志让浏览器以html方式处理。PrintWriter pw =null;response.setHeader("Content-Type","text/html;charset=UTF-8")...
  • 此方法被称为Script DOM Element方法但是这种加载方式执行完之前会阻止onload事件的触发,而现在很多页面的代码都在onload时还执行额外的渲染工作,所以还是会阻塞部分页面的初始化处理。方法二:onload时的异步加载...
  • 在程序中经常会写到字符串的拼接,最常见的一中方式就是把拼接的字符串返回到页面上,然后让浏览器渲染html代码。现在es6已经用的不少了,但是因为一些原因,有的项目只能用最原始的加号“+”拼接,所以就会出现一...
  • 已有的实现方式:采用标准的jsp模板输出实现,简单地说,就是把数据渲染进jsp页面,然后将此页面另存为doc文档,从而达到word导出效果。但是存在以下几个问题: (1) 由于导出的html网页格式,打开w...
  • 让内容更加动态,因此需要接入数据库,配合数据库的内容做展示,于是诞生了 html 模板引擎,用于把动态的数据插入到 html 中,叫做动态页面,后面我会叫它为传统的动态页面,例如 java 的 Jsp,php 的 Smarty 和 ...
  • 这样的话,使用jsoup方式无法内容元素,因为内容不是即时输出到页面上,而是通过js动态渲染。这种情况的话需要配合selenium浏览器测试工具处理,配合相关浏览器的驱动程序,也比较好用。下面先放出jsoup方式b...
  • java 发送邮件,可以选择spring接口或javamail,网上关于这两种方式的代码有很多。 如果需要发送html格式的邮件,使用模版会比较方便。 BodyPart html = new MimeBodyPart(); html.setContent...
  • 前端与后端最初的渲染方式是后端模板渲染,就是由后端使用模板引擎渲染html后,返回给前端,前端再用js去操作dom或者渲染其他动态的部分。 这个过程大致分成以下几个步骤: 说明: 前端请求一个地址url ...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
  • java22

    2018-12-11 22:21:25
    作用:渲染页面,提高工作效率 和html元素的整合: 方式一:内联样式表 通过标签的style属性设置样式 方式二:内部样式表 在当前页面中使用的样式 通过head标签的style子标签导入例如: &amp
  • Java资源包01

    2016-08-31 09:16:25
    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
  • java开源包101

    2016-07-13 10:11:08
    JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于...
  • 主要是用来做页面之间的交互和动态页面的渲染,JavaScript代码是由浏览器的js引擎解析的是一门前段语言,解释型的语言代码主要出现在js代码主要出现在html页面中的head标签中,或者是在代码最底部,常用的方式是直接...
  • 主要是用来做页面之间的交互和动态页面的渲染,JavaScript代码是由浏览器的js引擎解析的是一门前段语言,解释型的语言代码主要出现在js代码主要出现在html页面中的head标签中,或者是在代码最底部,常用的方式是直接...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 214
精华内容 85
关键字:

java渲染html方式

java 订阅