`
shuai1234
  • 浏览: 971666 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

java实现PDF转HTML

    博客分类:
  • java
 
阅读更多

java实现PDF转HTML

 

问题场景:

在使用PB嵌入HTML页面时发现调不起查看PDF的插件

 

解决方法:

将PDF转换为HTML来展示

 

解决步骤:

1.下载PDF转换工具.exe

下载地址:http://pan.baidu.com/s/1eSHq3JG

 

2.创建工具类

复制代码
package org.common.util.pdftohtml;

import org.common.util.pdftohtml.StreamGobbler;

/**
 * @author liuzhengyong
 * @version 1.0 时间:2013-12-30 下午2:24:10 pdf文件转html工具类
 */
public class Pdf2htmlEXUtil {
    /**
     * 调用pdf2htmlEX将pdf文件转换为html文件
     * 
     * @param exeFilePath
     *            pdf2htmlEX.exe文件路径
     * @param pdfFile
     *            pdf文件绝对路径
     * @param [destDir] 生成的html文件存放路径
     * @param htmlName
     *            生成的html文件名称
     * @return
     */
    public static boolean pdf2html(String exeFilePath, String pdfFile,
            String destDir, String htmlFileName) {
        if (!(exeFilePath != null && !"".equals(exeFilePath) && pdfFile != null
                && !"".equals(pdfFile) && htmlFileName != null && !""
                    .equals(htmlFileName))) {
            System.out.println("传递的参数有误!");
            return false;
        }
        Runtime rt = Runtime.getRuntime();
        StringBuilder command = new StringBuilder();
        command.append(exeFilePath).append(" ");
        if (destDir != null && !"".equals(destDir.trim()))// 生成文件存放位置,需要替换文件路径中的空格
            command.append("--dest-dir ").append(destDir.replace(" ", "\" \""))
                    .append(" ");
        command.append("--optimize-text 1 ");// 尽量减少用于文本的HTML元素的数目 (default: 0)
        command.append("--zoom 1.4 ");
        command.append("--process-outline 0 ");// html中显示链接:0——false,1——true
        command.append("--font-format woff ");// 嵌入html中的字体后缀(default ttf)
                                                // ttf,otf,woff,svg
        command.append(pdfFile.replace(" ", "\" \"")).append(" ");// 需要替换文件路径中的空格
        if (htmlFileName != null && !"".equals(htmlFileName.trim())) {
            command.append(htmlFileName);
            if (htmlFileName.indexOf(".html") == -1)
                command.append(".html");
        }
        try {
            System.out.println("Command:" + command.toString());
            Process p = rt.exec(command.toString());
            StreamGobbler errorGobbler = new StreamGobbler(p.getErrorStream(),
                    "ERROR");
            // 开启屏幕标准错误流
            errorGobbler.start();
            StreamGobbler outGobbler = new StreamGobbler(p.getInputStream(),
                    "STDOUT");
            // 开启屏幕标准输出流
            outGobbler.start();
            int w = p.waitFor();
            int v = p.exitValue();
            if (w == 0 && v == 0) {
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    public static boolean pdf2html_linux(String pdfFile, String destDir,
            String htmlFileName) {
        if (!(pdfFile != null && !"".equals(pdfFile) && htmlFileName != null && !""
                .equals(htmlFileName))) {
            System.out.println("传递的参数有误!");
            return false;
        }
        Runtime rt = Runtime.getRuntime();
        StringBuilder command = new StringBuilder();
        command.append("pdf2htmlEX").append(" ");
        if (destDir != null && !"".equals(destDir.trim()))// 生成文件存放位置,需要替换文件路径中的空格
            command.append("--dest-dir ").append(destDir.replace(" ", "\" \""))
                    .append(" ");
        command.append("--optimize-text 1 ");// 尽量减少用于文本的HTML元素的数目 (default: 0)
        command.append("--process-outline 0 ");// html中显示链接:0——false,1——true
        command.append("--font-format woff ");// 嵌入html中的字体后缀(default ttf)
                                                // ttf,otf,woff,svg
        command.append(pdfFile.replace(" ", "\" \"")).append(" ");// 需要替换文件路径中的空格
        if (htmlFileName != null && !"".equals(htmlFileName.trim())) {
            command.append(htmlFileName);
            if (htmlFileName.indexOf(".html") == -1)
                command.append(".html");
        }
        try {
            System.out.println("Command:" + command.toString());
            Process p = rt.exec(command.toString());
            StreamGobbler errorGobbler = new StreamGobbler(p.getErrorStream(),
                    "ERROR");
            // 开启屏幕标准错误流
            errorGobbler.start();
            StreamGobbler outGobbler = new StreamGobbler(p.getInputStream(),
                    "STDOUT");
            // 开启屏幕标准输出流
            outGobbler.start();
            int w = p.waitFor();
            int v = p.exitValue();
            if (w == 0 && v == 0) {
                return true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
    
    public static void main(String[] args) {
        pdf2html("D:\\pdf2htmlEX-v1.0\\pdf2htmlEX.exe","D:\\pdf2htmlEX-v1.0\\PDF\\my.pdf","D:\\pdf2htmlEX-v1.0\\HTML","my.html");
    }
}
复制代码
复制代码
package org.common.util.pdftohtml;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;

/**
 * 用于处理Runtime.getRuntime().exec产生的错误流及输出流
 * 
 * @author shaojing
 * 
 */
public class StreamGobbler extends Thread {
    InputStream is;
    String type;
    OutputStream os;

    public StreamGobbler(InputStream is, String type) {
        this(is, type, null);
    }

    StreamGobbler(InputStream is, String type, OutputStream redirect) {
        this.is = is;
        this.type = type;
        this.os = redirect;
    }

    public void run() {
        InputStreamReader isr = null;
        BufferedReader br = null;
        PrintWriter pw = null;
        try {
            if (os != null)
                pw = new PrintWriter(os);
            isr = new InputStreamReader(is);
            br = new BufferedReader(isr);
            String line = null;
            while ((line = br.readLine()) != null) {
                if (pw != null)
                    pw.println(line);
                System.out.println(type + ">" + line);
            }
            if (pw != null)
                pw.flush();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } finally {
            try {
                if (pw != null)
                    pw.close();
                if (br != null)
                    br.close();
                if (isr != null)
                    isr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
复制代码

 

3.运行工具类中的main方法。

 

注:运行上述步骤,问题解决,成功生成html文件

(注意pdf2htmlEX.exe文件不要单独copy出来用,需要和pdf2htmlEX-v1.0文件夹里面的东西放在一起使用,不然会报错:Error: Cannot open the manifest file)

分享到:
评论

相关推荐

    JAVA实现PDF转HTML

    总结来说,"JAVA实现PDF转HTML"是一个利用Java编程语言开发的后端服务,其主要功能是将PDF文档转换为HTML格式,适用于在线预览和网页展示。虽然这个服务在处理某些特殊元素如水印和印章时可能有局限性,但对常规PDF...

    PDF转图片,PDF转HTML

    0.使用了 jpedal、pdfbox、PDFRenderer、icepdf,前3个包和代码都有,最后个只有包 ...4.代码最后是直接转成一个简单的网页的,如果只是想转到图片,注掉生成HTML方法即可。 5.里面有详细问题分析。

    JAVA使用itextpdf实现HTML转PDF

    总之,使用iTextPDF库在Java中实现HTML到PDF的转换是一项实用的技能,但需要注意库对HTML和CSS的支持限制。根据实际需求,可能需要对HTML源码进行调整,或者考虑使用其他兼容性更强的库来实现更丰富的转换效果。

    java实现office、wps转pdf,pdf转word

    标题“java实现office、wps转pdf,pdf转word”指的是利用Java编程来实现在不同办公文档格式间的转换,特别是从Microsoft Office和WPS格式转换为PDF,以及从PDF反向转换为Word文档。 首先,让我们讨论从Office和WPS...

    java实现将html转pdf,并在指定位置添加印章

    本文将详细讲解如何使用Java实现这一功能,包括HTML转PDF以及在PDF中添加印章。 首先,我们需要一个库来处理HTML转PDF的任务。在Java中,一个常用的库是`Flying Saucer`,它能够将HTML渲染为PDF格式。`Flying ...

    java实现HTML页面转PDF亲测好用

    你也可以考虑使用专门为Java设计的HTML转PDF库,如PDFreactor、Flying Saucer或HtmlUnit,它们通常提供更丰富的API和更好的集成。 在实际项目中,你可能需要处理更复杂的情况,比如设置PDF页面大小、自定义CSS样式...

    java实现pdf上传,下载,在线预览,删除,修改等功能

    这里我们将深入探讨这些功能的实现,并结合标签`java xpdf java实现pdf`来讨论XPDF库在Java中的应用。 1. **PDF上传**: PDF上传通常涉及用户通过Web界面或API接口提交PDF文件。Java中,可以使用Apache Commons ...

    Java实现将html转PDF

    本项目提供了一个Java实现HTML转PDF的解决方案,适用于Eclipse开发环境。 1. **Java与PDF库** Java中用于生成PDF的库有很多,如iText、Flying Saucer、PDFBox等。其中,Flying Saucer是一个常用的库,它可以将HTML...

    Java代码实现txt文件转pdf文件

    在Java中实现TXT到PDF的转换,我们可以使用Apache PDFBox、iText或 Flying Saucer 这样的第三方库。本案例中,由于描述中提到“代码一目了然”,我们可能会使用相对简单易用的Flying Saucer库。Flying Saucer可以将...

    URL转换为PDF的Java实现

    总的来说,Java环境下URL转PDF的方法多样,可以根据具体需求和环境选择合适的方式。无论是通过解析HTML内容、使用渲染引擎还是借助Web自动化工具,Java都能提供相应的库和支持来满足这些需求。在实际应用中,可能还...

    Java 使用itext将html转pdf并下载demo

    这个“Java使用iText将html转pdf并下载demo”的主题将深入讲解如何使用iText库实现这一功能。 首先,我们需要理解iText的基本用法。iText库提供了多种API,可以用来创建PDF文档、添加文本、图像、表格等元素。在...

    java pdf转html

    Java中的PDF转HTML是一项常见的需求,特别是在数据处理、文档转换和网页展示的场景下。PDF是一种流行的文件格式,用于保存格式化的文档,而HTML则广泛应用于网页制作。将PDF转换为HTML可以使得内容更容易在网络上...

    java URL转PDF文件

    在Java编程环境中,将一个URL链接的内容转换为PDF文件是一个常见的需求,这通常涉及到网络请求、HTML解析以及PDF生成等多个步骤。以下是一个详细的步骤指南,涵盖了这个过程中的关键知识点: 首先,我们需要处理URL...

    Java实现HTML转PDF的解决方案.docx

    Java 实现 HTML 转 PDF 的解决方案 Java 实现 HTML 转 PDF 的解决方案是指使用 Java 语言将 HTML 页面转换为 PDF 文档的技术方案。本解决方案通常用于生成 PDF 报表、证书、合同等需要保留固定格式的文档。 在本...

    利用Itext实现html转pdf

    在这个场景中,我们将讨论如何利用Itext库在不修改源代码的情况下,实现HTML到PDF的转换,并处理换行问题。 首先,我们需要理解Itext不直接支持HTML到PDF的转换,但它可以通过其他方式间接实现。通常,我们会借助一...

    java实现pdf上传、下载、在线预览、删除、修改等功能

    一种方法是使用IFrame加载PDF,但更常见的是利用PDF.js这样的JavaScript库,它可以将PDF转换为HTML5 canvas,从而在任何现代浏览器中实现无插件预览。 4. **PDF删除**: 删除PDF文件相对简单,只需要调用Java的...

    java测试工具html转pdf

    在“java测试工具html转pdf”这个主题中,我们主要关注的是如何使用Java来实现HTML文档向PDF格式的转换。这涉及到对HTML的理解、PDF的生成原理以及Java中的相关库和框架。 首先,HTML(超文本标记语言)是网页设计...

    PDF转WORD,WORD转任何格式的JAVA代码调研报告。

    本报告将详细介绍如何使用Aspose.PDF和Aspose.Word这两款强大的工具库,通过Java语言实现PDF与Word文档之间的相互转换,以及其他文档格式的转换。 #### 二、Aspose.PDF与Aspose.Word概述 Aspose.PDF和Aspose.Word...

    Java转PDF.zip

    Java转PDF技术主要涉及到将Java程序中的数据或视图转换为PDF文档,以便于打印、分发或在线查看。在Java开发中,有许多库可以实现这个功能,其中一个流行的选择是PD4ML。PD4ML是一个Java库,允许开发者将HTML、CSS和...

Global site tag (gtag.js) - Google Analytics