>  기사  >  Java  >  Java는 wkhtmltox를 사용하여 HTML 코드를 구현하여 PDF 문서 또는 그림을 생성합니다.

Java는 wkhtmltox를 사용하여 HTML 코드를 구현하여 PDF 문서 또는 그림을 생성합니다.

高洛峰
高洛峰원래의
2016-12-02 16:13:452905검색

프로젝트 필요에 따라 HTML 코드를 PDF 또는 이미지로 변환하여 저장하세요. 처음에는 HTML 코드를 PDF 문서로 생성하기 위해 Flying Saucer를 사용했습니다. 이 기간 동안 중국어 지원 및 이미지 경로 문제도 발생했는데 이 문제도 해결될 것이라고 생각했습니다. 충분하지만 테스트 중에 일부 PDF 문서에서 생성된 스타일에 문제가 있음을 발견했습니다. CSS3.0 지원.

기능을 구현해야 하는데 HTML 코드를 다른 사람이 변경하도록 하는 것은 비현실적이므로 다른 기술을 사용해 보세요. 나중에 이미지를 생성하는 것이 유용할 것이라고 생각하여 검색해 본 결과 CSSBOX를 사용하여 이미지에 HTML 코드를 생성할 수 있다는 것을 알게 되었고, 다행히도 이 기능이 통합되었습니다. 시스템에. 문제는 없었지만 또다시 비극이 일어났습니다. 한 페이지에서 CSS3를 사용하여 대각선을 렌더링했지만 CSSBOX를 변환할 수 없었습니다.

사실 처음에는 wkhtmltopdf가 HTML 코드를 PDF 문서로 생성할 수 있다는 것을 알고 있었지만 변환을 수행하려면 실제로 소프트웨어를 설치하고 이 소프트웨어를 Java 코드로 호출해야 한다고 느꼈습니다. 다른 직접적인 기술이 없었다는 점은 jar 패키지를 도입하는 것이 편리해서 시도하지 않았는데 이제는 정말 다른 방법이 없으니 시도해 보겠습니다. 지금은 HTML 코드를 사진으로 생성하려고 하기 때문에 wkhtmltoimage를 사용하고 있는데 사실 wkhtmltox 소프트웨어를 설치하면 wkhtmltopdf와 wkhtmltoimage가 동시에 설치됩니다.

wkhtmltoimage를 사용하면서 우회할 일이 많았는데, 주로 Linux에 익숙하지 않고 설치 중에 문제가 많이 발생했기 때문입니다. 이제 제가 직접 탐색하여 얻은 지식을 여러분과 공유하고 싶습니다. 이는 단지 제 개인적인 의견이므로 양해해 주시기 바랍니다. 다음으로 이 소프트아머를 Java로 호출하는 자세한 사용법을 소개하겠습니다. 구체적으로 Windows 환경과 Linux 환경으로 구분됩니다.

1. 소프트웨어 다운로드 주소:

공식 홈페이지 다운로드 주소 홈페이지: http://wkhtmltopdf.org/downloads.html

에서 확인하실 수 있습니다. 이 페이지에서 최신 버전의 wkhtmltox를 다운로드하세요.

최신 버전을 사용하고 있지 않습니다. 0.12.2 버전을 사용하고 있습니다. 다운로드 주소는 http://download.gna.org/wkhtmltopdf/0.12/0.12.2/

2. Windows 환경 설치

Windows 환경 설치 소프트웨어에 대해서는 자세히 설명하지 않겠습니다. http://download.gna.org/wkhtmltopdf/0.12/ 0.12.2/ URL에서 wkhtmltox-0.12.2_msvc2013-win64.exe 버전을 다운로드하세요. 32비트인 경우 다운로드할 32비트 버전을 선택하여 다운로드할 수 있습니다. 설치가 완료되면 설치 디렉터리에 wkhtmltopdf.exe와 wkhtmltoimage.exe가 있습니다. 이 두 가지 실행 프로그램은 PDF 변환과 이미지 변환에 사용하는 프로그램입니다.

3. Linux 환경 설치

http://download.gna.org/wkhtmltopdf/0.12/0.12.2/주소 .2_linux에서 wkhtmltox-0.12를 다운로드했습니다. -centos6-i386.rpm 이 버전의 RPM 패키지입니다. 내 가상 머신에는 CentOS 6.5 32비트가 설치되어 있으므로 이 버전을 다운로드했습니다. 실제 상황에 따른 Linux 버전과 32비트 버전을 이 웹사이트에서 확인할 수 있습니다. 64비트 버전에 해당하는 버전을 다운로드하여 실제 상황에 맞게 선택하세요.

다운로드 방법은 wget http://download.gna.org/wkhtmltopdf/0.12/0.12.2/wkhtmltox-0.12.2_linux-centos6-i386.rpm을 사용하여 직접 다운로드할 수 있습니다. 또한 가상 머신을 사용하여 먼저 로컬 머신에 다운로드한 다음 rz -be를 사용하여 Linux에 업로드할 수도 있습니다. rz 명령을 사용하여 대용량 파일을 업로드하는 경우 -be 명령을 추가해야 합니다. 업로드가 성공하지 못합니다. Linux에 rz 명령이 없는 경우 yum -y install lrzsz 명령을 사용하여 rz 및 sz 명령을 설치할 수 있습니다.

아래에서 설치를 시작하세요.

1) RPM 패키지를 다운로드한 디렉터리로 들어가서 rpm -ivh wkhtmltox-0.12.2_linux-centos6-i386을 실행합니다. rpm 명령의 결과는 다음과 같습니다.

Java는 wkhtmltox를 사용하여 HTML 코드를 구현하여 PDF 문서 또는 그림을 생성합니다.

실패 이유는 xorg-x11-fonts-Type1 및 xorg-x11-fonts-75dpi 종속성이 부족하기 때문입니다. 먼저 종속성을 설치해야 합니다.

2) xorg-x11-fonts-Type1 종속성을 설치합니다: yum -y install xorg-x11-fonts-Type1.

3) xorg-x11-fonts-75dpi 종속성 설치: yum -y xorg-x11-fonts-75dpi를 설치합니다.

4) wkhtmltox를 다시 설치합니다: rpm -ivh wkhtmltox-0.12.2_linux-centos6-i386.rpm, 자, 설치가 성공했습니다. 설치 중에 다른 종속성이 누락된 경우 누락된 종속성을 먼저 설치한 다음 wkhtmltox를 설치해야 합니다. 누락된 종속성을 쿼리하는 방법은 yum search xxxx, xxxx가 누락된 종속성 키워드인 다음 설치 쿼리 결과에서 올바른 yum 소스를 찾는 것입니다.

5) 설치가 완료된 후 wkhtmltoimage http://www.baidu.com 1.jpg 또는 wkhtmltopdf http://www.baidu.com 1.pdf를 사용하여 설치 여부를 테스트할 수 있습니다. 성공적인.

4. Java 프로그램 호출

Java 호출 시 별도의 Jar 패키지를 추가할 필요가 없습니다.

Java 호출 코드:

public class CustomWKHtmlToPdfUtil {

    public String getCommand(String sourceFilePath, String targetFilePath) {
        String system = System.getProperty("os.name");
        if(system.contains("Windows")) {
            return "D:\\Program Files\\wkhtmltopdf\\wkhtmltoimage.exe " + sourceFilePath + " " + targetFilePath;
        }else if(system.contains("Linux")) {
            return "wkhtmltoimage " + sourceFilePath + " " + targetFilePath;
        }
        return "";
    }

    public static void main(String[] args) throws Exception{
        CustomWKHtmlToPdfUtil util = new CustomWKHtmlToPdfUtil();
        String command = util.getCommand("e:/html/result.html", "e:/html/result.jpg");
        Process process = Runtime.getRuntime().exec(command);
        process.waitFor();  //这个调用比较关键,就是等当前命令执行完成后再往下执行
        System.out.println("执行完成");
    }
}

   其实就是使用Java调用cmd的执行命令,但是调用要区分Windows和Linux系统,如果是Windows系统,则必须要指定wkhtmltoimage或者wkhtmltopdf的位置,我在Windows的安装位置是D:\Program Files\wkhtmltopdf,因此我在上面调用wkhtmltoimage时使用的路径是D:\Program Files\wkhtmltopdf\wkhtmltoimage.exe。在Linux环境下,由于软件在安装时,会把wkhtmltopdf和wkhtmlimage安装到系统命令中,因此不需要指定安装路径,直接调用就可以了。

    我比较推荐使用wkhtmltoimage生成JPG图片,我调用wkhtmltopdf生成PDF时会有点问题。以上是我的一些经历,希望对大家有用!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.