js 将html转为图片格式,phantomjs 将html 转换为图片或者pdf-Go语言中文社区

本文介绍了如何利用PhantomJS将前端展示的网页内容转换为PNG图片和PDF文件。首先,需要从官网下载并配置PhantomJS环境。接着,通过示例代码展示了如何将指定URL的博客文章渲染成图片和PDF。转换图片的代码中,使用`page.render()`方法生成PNG,而转换PDF的代码则设置了页面大小、纸张格式和渲染延迟,最后使用`page.render()`生成PDF文件。
摘要由CSDN通过智能技术生成

通常我们有需求将前端展示的报表下载为图片或者pdf,那么就需要将html 转为png/jpeg 或者pdf。

下面讲解phantomjs 如何将html转图片和pdf.

到官网下载对应的版本 :下载链接

我下载的是window版 phantomjs2.1.1

将安装目录下的bin目录添加到环境变量,这个在全局都可以使用phantomjs 命令

phantomjs 相关文档请查看官网api

以我的csdn一篇博客为例

我的博客地址: http://blog.csdn.net/luosai19910103/article/details/70820904

转换为图片

代码如下:

var page = require('webpage').create();

page.open('http://blog.csdn.net/luosai19910103/article/details/70820904',function(status){

if(status=='success'){

page.render('luosai_blog1.png');

console.log('success');

}else{

console.log('渲染失败');

}

phantom.exit();

})保存为 myblog.js

在cmd 命令行下运行命令  phantomjs myblog.js 生成图片

cc549a47ac9fdaba9b9fc4ca79c7627c.png

html生成pdf

代码如下:

var page = require('webpage').create();

page.viewportSize = {

width: 2400,

height: 20000

};

page.paperSize = {

format: 'A4', //A4 纸张

orientation: 'portrait',

margin: '0.8cm'

};

page.zoomFactor = 1;//放大比例

page.settings.loadImages = true;

page.settings.userAgent = 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36';

page.open('http://blog.csdn.net/luosai19910103/article/details/70820904',function(status){

if(status=='success'){

var cookies = page.cookies;

console.log('Listing cookies:');

for(var i in cookies) {

console.log(cookies[i].name + '=' + cookies[i].value);

}

window.setTimeout(function (){

page.render("myblog.pdf");

phantom.exit();

}, 5000);

console.log('success');

}else{

console.log('faild');

}

})保存为 myblogpdf.js

在命令行中 运行 phantomjs myblogpdf.js

生成pdf 图片

a5f5bef73da4df251d22fd400189cb83.png

这是截取得部分pdf 图片。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Apache POI和iText库来实现将带有图片的富文本转换为.docx和.pdf文件。 1. 将富文本转换为.docx文件 使用Apache POI库可以将富文本转换为.docx文件,具体代码如下: ```java import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; public class HtmlToDocxConverter { public static void convert(String htmlFilePath, String docxFilePath) throws IOException { XWPFDocument doc = new XWPFDocument(); XWPFParagraph paragraph = doc.createParagraph(); XWPFRun run = paragraph.createRun(); InputStream in = new FileInputStream(htmlFilePath); run.setText(org.apache.commons.io.IOUtils.toString(in, "UTF-8")); OutputStream out = new FileOutputStream(docxFilePath); doc.write(out); out.close(); doc.close(); } } ``` 2. 将富文本转换为.pdf文件 使用iText库可以将富文本转换为.pdf文件,具体代码如下: ```java import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; import com.itextpdf.layout.element.Paragraph; import org.jsoup.Jsoup; import org.jsoup.nodes.Document.OutputSettings; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class HtmlToPdfConverter { public static void convert(String htmlFilePath, String pdfFilePath) throws IOException { PdfWriter writer = new PdfWriter(new FileOutputStream(pdfFilePath)); PdfDocument pdf = new PdfDocument(writer); Document document = new Document(pdf); org.jsoup.nodes.Document htmlDoc = Jsoup.parse(new File(htmlFilePath), "UTF-8"); OutputSettings settings = new OutputSettings(); settings.prettyPrint(false); for (Element element : htmlDoc.body().children()) { if ("img".equals(element.tagName())) { byte[] imageBytes = getImageBytes(element.attr("src")); if (imageBytes != null) { com.itextpdf.layout.element.Image image = new com.itextpdf.layout.element.Image( com.itextpdf.io.image.ImageDataFactory.create(imageBytes)); document.add(image); } } else { Elements pElements = element.getElementsByTag("p"); for (Element pElement : pElements) { Paragraph p = new Paragraph(pElement.html()); document.add(p); } } } document.close(); } private static byte[] getImageBytes(String imageUrl) { // 将图片url转换为字节数组 } } ``` 3. 将富文本转换图片 将富文本转换图片可以使用第三方工具,如wkhtmltoimage或phantomjs。这里以wkhtmltoimage为例,具体代码如下: ```java import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class HtmlToImageConverter { public static void convert(String htmlFilePath, String imageFilePath) throws IOException { List<String> cmd = new ArrayList<>(); cmd.add("wkhtmltoimage"); cmd.add("--quality"); cmd.add("100"); cmd.add(htmlFilePath); cmd.add(imageFilePath); ProcessBuilder pb = new ProcessBuilder(cmd); pb.redirectErrorStream(true); Process process = pb.start(); try { process.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值