学习PdfReator for Java的科学实践(二)百度搜索生成PDF

PdfReator
placeholder image
admin 发布于:2025-09-19 10:50:21
阅读:loading

PDFreactor 是一款强大的企业级 HTML 转 PDF 解决方案,由 RealObjects 公司开发。它主要用于将 HTML 和 CSS 转换为高质量的 PDF 文档,广泛应用于自动化报告生成、发票、合同、电子书制作等场景。适合需要高质量文档生成和自动化处理的企业和开发者使用。通过其丰富的特性和良好的集成能力,可以极大提升文档处理的效率和质量。

特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)

1.基本介绍

PDFreactor的API涵盖了多种编程语言的实现,本系列教程使用Java语言的实践案例,将 HTML 转换为 PDF,相关案例的实践也是覆盖到多个知识点的细节,参考部分特色功能如下:

  • 使用到了HTML5、CSS3、JavaScript的代码;

  • 使用普通的纯HTML和CSS来生成一个PDF文档;

  • 使用网络上的http和https地址的URL,转换为PDF文档;

  • 使用本地的HTML文件,HTML引用了本地的图片、CSS、JavaScript等,转换为PDF;

  • 支持HTML中的JavaScript渲染图形报表的相关实现;

  • 将HTML转换为除了PDF格式外的其它图片格式,PNG/JPG/GIF/BMP/TIFF等;

2.示例输出

利用PDFReactor提供的Java API实现将百度搜索(使用的http协议)“Java”的内容页面HTML文本,转换为PDF文档、BMP/GIF/PNG/JPG/TIFF等,以下是参考代码与示例输出:

@RunWith(JUnit4.class)
public class BaiduPdfReatorTest {

    @Test
    public void test() throws Exception {
        PDFreactor pdfReactor = new PDFreactor();
        Configuration config = new Configuration();
        config.setDocument("/s?wd=Java%20-%E6%9D%8E%E5%BD%A6%E5%AE%8F");
        {
            final Configuration.OutputFormat outputFormat = new Configuration.OutputFormat().setType(Configuration.OutputType.PDF);
            config.setOutputFormat(outputFormat);
            Result result = pdfReactor.convert(config);
            assert result != null;
            byte[] document = result.getDocument();
            File folder = new File(new File(new File("").getAbsolutePath()).getParentFile(), "resources/output");
            FileOutputStream fos = new FileOutputStream(new File(folder, "Baidu.pdf"));
            fos.write(document);
            fos.flush();
            fos.close();
        }
        {
            final Configuration.OutputFormat outputFormat = new Configuration.OutputFormat().setType(Configuration.OutputType.PNG);
            config.setOutputFormat(outputFormat);
            Result result = pdfReactor.convert(config);
            assert result != null;
            byte[] document = result.getDocument();
            File folder = new File(new File(new File("").getAbsolutePath()).getParentFile(), "resources/output");
            FileOutputStream fos = new FileOutputStream(new File(folder, "Baidu.png"));
            fos.write(document);
            fos.flush();
            fos.close();
        }
        {
            final Configuration.OutputFormat outputFormat = new Configuration.OutputFormat().setType(Configuration.OutputType.GIF);
            config.setOutputFormat(outputFormat);
            Result result = pdfReactor.convert(config);
            assert result != null;
            byte[] document = result.getDocument();
            File folder = new File(new File(new File("").getAbsolutePath()).getParentFile(), "resources/output");
            FileOutputStream fos = new FileOutputStream(new File(folder, "Baidu.gif"));
            fos.write(document);
            fos.flush();
            fos.close();
        }
        {
            final Configuration.OutputFormat outputFormat = new Configuration.OutputFormat().setType(Configuration.OutputType.JPEG);
            config.setOutputFormat(outputFormat);
            Result result = pdfReactor.convert(config);
            assert result != null;
            byte[] document = result.getDocument();
            File folder = new File(new File(new File("").getAbsolutePath()).getParentFile(), "resources/output");
            FileOutputStream fos = new FileOutputStream(new File(folder, "Baidu.jpg"));
            fos.write(document);
            fos.flush();
            fos.close();
        }
        {
            final Configuration.OutputFormat outputFormat = new Configuration.OutputFormat().setType(Configuration.OutputType.TIFF_CCITT_GROUP_4);
            config.setOutputFormat(outputFormat);
            Result result = pdfReactor.convert(config);
            assert result != null;
            byte[] document = result.getDocument();
            File folder = new File(new File(new File("").getAbsolutePath()).getParentFile(), "resources/output");
            FileOutputStream fos = new FileOutputStream(new File(folder, "Baidu.tiff"));
            fos.write(document);
            fos.flush();
            fos.close();
        }
    }

}

(Java代码示例)

image.png

(PDF格式预览)

image.png

(GIF格式预览)

image.png

(JPG格式预览)

运行示例-含水印.gif

(TIFF格式预览)

3.示例说明

(1)常规格式的图片,如:PNG/GIF/BMP/JPG等只会生成第一页大小的图片内容(也许是对API不够熟悉,不知能否生成长条图);

(2)对于TIFF格式的图片可以生成多页的内容,但是图片显示的是黑白的;

(3)所有生成的图片示例页面宽度并没有自动适应,只有A4大小(不知怎样设置页面的横向,或者页面大小自动缩放展示);

(4)官网示例的一个地址“https://www.pdfreactor.com/product/samples/textbook/textbook.html”,浏览器访问时的宽度可以自适应,所以生成的PDF及图片可以友好的展示,有一页的内容还正好就是横向显示,参考如下图所示:

image.png

4.其它说明

(1)PDFreactor是RealObjects公司出的一款产品,涵盖了多种编程语言的实现,本例使用的是Java语言实践;

(2)关于Jar文件的下载可以直接从官网提供的下载渠道获取,下载到的Jar文件内有许多class属于加密混淆的;

(3)试用版功能齐全(它会在创建的每个页面中添加试用标记,页眉页脚也有会官网地址,同时也会多出一页试用的文档声明),本系列文章中的实现属于的科学使用,没有各种限制。特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)

(5)科学实践版本为2025年的pdfreactor-12.2.jar;

(6)相关示例输出文件下载:《示例输出.zip》,所有的示例输出包含了PDF、gif、jpg、png、tiff等格式文件;


 点赞


 发表评论

当前回复:作者

 评论列表


留言区