如何在线把一个HTML页面转换成一个PDF文档?

我们在工作或者学习当中,经常想用到一个功能,就是想把一个HTML页面转换成一个PDF文档。我们一般的做法就是把这个HTML页面拷贝到Office的Word文档里面;然后通过Word的自带的工具把Word转换成一个PDF文档;但是有的时候,我们需要在我们的程序中把一个HTML页面或者一段能渲染程HTML页面的代码转换成PDF页面,这个时候,我们应该这么做呢?在这里可以给大家推荐一个在线的网站,https://pdfcrowd.com/html-to-pdf-api/,在这个网站上,大家可以免费注册一个账号,这个试用账号可以生成100份PDF的文档。API调用的方式非常简单,

Step1.用自己的邮箱注册一个用户账号(比如:henryzhu),被注册的邮箱将会收到一个唯一标示用户的值(比如,096c8a2953b993db5b02341274393623)。

Step2.去https://pdfcrowd.com/static/clients/java/pdfcrowd-2.6-java.zip下载一个jar包

Step3.创建一个Eclipse的项目,把Step2中的下载下来的包添加到Build Path中,然后运行下面的实例代码。

import com.pdfcrowd.*;
import java.io.*;

public class PdfcrowdTest {
    public static void main(String[] args) {
        try 
        {
            FileOutputStream fileStream;     
 
            // create an API client instance
            Client client = new Client("henryzhu", "096c8a2953b993db5b02341274393623");

            // convert a web page and save the PDF to a file
            fileStream = new FileOutputStream("google_com.pdf");
            client.convertURI("http://www.google.com/", fileStream);
            fileStream.close();

            // convert an HTML string and store the PDF into a byte array
            ByteArrayOutputStream memStream  = new ByteArrayOutputStream();
            String html = "<head></head><body>My HTML Layout</body>";
            client.convertHtml(html, memStream);

            // convert an HTML file
            fileStream = new FileOutputStream("file.pdf");
            client.convertFile("e:/pdftest/file.html", fileStream);
            fileStream.close();

            // retrieve the number of tokens in your account
            Integer ntokens = client.numTokens();
        }
        catch(PdfcrowdError why) {
            System.err.println(why.getMessage());
        }
        catch(IOException exc) {
            // handle the exception
        }
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用pdfbox将多个ByteArrayOutputStream的pdf合并成一个pdf,你可以按照以下步骤进行操作: 1. 创建一个PDDocument对象来表示最终合并的PDF文件 ``` PDDocument finalDoc = new PDDocument(); ``` 2. 循环遍历每个ByteArrayOutputStream,将它们转换成PDDocument对象 ``` for (ByteArrayOutputStream pdf : pdfList) { ByteArrayInputStream inputStream = new ByteArrayInputStream(pdf.toByteArray()); PDDocument doc = PDDocument.load(inputStream); // 将当前PDDocument对象添加到最终文档中 finalDoc.addDocument(doc); // 关闭当前PDDocument对象 doc.close(); } ``` 3. 将最终的PDDocument对象保存为一个ByteArrayOutputStream ``` ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); finalDoc.save(outputStream); ``` 4. 关闭最终的PDDocument对象 ``` finalDoc.close(); ``` 完整的代码示例如下: ``` import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.List; import org.apache.pdfbox.pdmodel.PDDocument; public class PdfMerger { public static ByteArrayOutputStream merge(List<ByteArrayOutputStream> pdfList) throws IOException { PDDocument finalDoc = new PDDocument(); for (ByteArrayOutputStream pdf : pdfList) { ByteArrayInputStream inputStream = new ByteArrayInputStream(pdf.toByteArray()); PDDocument doc = PDDocument.load(inputStream); finalDoc.addDocument(doc); doc.close(); } ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); finalDoc.save(outputStream); finalDoc.close(); return outputStream; } } ``` 你可以调用这个PdfMerger类中的merge方法,传入一个包含多个ByteArrayOutputStream对象的列表,该方法将返回一个包含所有PDF文件合并后的ByteArrayOutputStream对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值