작업이 필요하기 때문에 최근 HTML의 기능을 PDF로 변환했습니다. HTML에서 PDF의 주요 기술은 웹 페이지에서 복잡한 CSS 스타일을 처리하는 방법입니다. 현재 HTML 변환 솔루션은 주로 세 가지 범주로 나뉩니다.
클라이언트 모드 : 프론트 데스크에서 클라이언트 프로그램을 호출하고 클라이언트 프로그램의 기능을 사용하여 PDF 파일 변환을 완료하십시오. 이 테스트 도구는 다음과 같습니다. wkhtmltopdf 및 phantomjs. Java JAR 패키지 솔루션 분석 모드 : Java 코드 분석 CSS 스타일, 번역 HTML 파일은 PDF 파일입니다. 이 테스트 카테고리는 ITEXT, Flying Sauser, PD4ML입니다. JS Front -End Analysis 모드 : JS Front -End Analysis HTML 파일은 PDF 파일입니다.이번에 인터넷에 소개 된 솔루션의 경우 실제 프로젝트의 요구를 결합하고 성능 및 기능 측면에서 다음 분석을 수행하십시오.
1. 테스트 페이지 소개인터넷에서 각 변환 케이스의 소개, 간단한 HTML 스타일 인 일반 테이블 스타일은 PDF 파일 변환을 수행 할 때 위의 체계에 의해 지원됩니다. 그러나 실제 비즈니스의 요구를 고려할 때이 테스트는 CSS 스타일의 부트 스트랩 (v 3.3.6)을 특별히 사용하며 페이지는 CSS3의 새로운 기능도 적용됩니다. 이 새로운 기능을 기반으로 브라우저에서 HTML 페이지의 디스플레이 효과를 작성하십시오.
2.WKHTMLTOPDF 테스트WKHTMLTOPDF는 HTML을 PDF로 변환하기 위해 WebKit 웹 페이지 렌더링 엔진을 사용하여 개발 된 도구로 여러 스크립트 언어와 통합하여 문서를 변환 할 수 있습니다. 공식 웹 사이트 주소 http://wkhtmltopdf.org/
기술적 인 기능 : wkhtmltopdf는 브라우저의 웹 페이지 브라우지를 PDF로 직접 변환 할 수 있습니다. 그는 HTML 페이지를 PDF로 변환하는 소프트웨어입니다. Java 코드를 사용하는 경우 CMD 명령어로 호출하여 웹 페이지의 기능을 PDF로 완료 할 수 있습니다.
기능 테스트 : CMD에 직접 테스트 명령을 입력하여 처리 진행 상황을보십시오.
첫 번째 매개 변수 : wkhtmltopdf.exe가있는 경로
두 번째 매개 변수 : PDF의 HTML 페이지로 변환해야합니다.
세 번째 매개 변수 : PDF 파일 경로 및 파일 이름
페이지의 내보내기 효과는 다음과 같습니다.
테스트 설명 :
wkhtmltopdf는 BootStap의 CSS 스타일을 전체적으로 더 잘 지원하는 것으로 밝혀졌습니다. CSS3의 새로운 기능은 둥근 사진을 위해 잘 지원되지 않습니다. 일부 페이지 스타일은 실패합니다. 차트 디스플레이의 경우 각각 차트의 내보내기 프로그램은 오류를보고하고 지원하지 않습니다. 그러나 Echart는 그림 주소를 얻어 PDF로 내보낼 수있는 그림 인터페이스로 전환 된 차트를 가지고 있습니다.
3. Phantomjs 테스트Phantomjs는 WebKit 커널을 기반으로 한 헤드리스 브라우저입니다. JavaScript API 인터페이스를 제공합니다. C/C ++는 WebKit 개발에 따라 더 잘 개발 될 수 있습니다. 또한 Windows, Linux, Mac과 같은 다양한 OS 설치의 설치 및 사용 패키지를 제공합니다. 즉, 다양한 플랫폼에서 프로젝트 또는 자동 프로젝트 테스트를 개발하고 수집 할 수 있습니다. 공식 웹 사이트 주소 http://phantomjs.org/
Phantomjs는 웹 페이지 분석으로 사용될 수 있습니다. CMD의 테스트는 다음과 같습니다.
테스트 페이지는 다음과 같이 안내됩니다.
테스트 설명 :
Phantomjs는 BootStap의 스타일을 지원하는 것으로 밝혀졌습니다. CSS3의 새로운 기능은 둥근 사진을 위해 잘 지원되지 않습니다. 일부 페이지 스타일은 실패합니다. Echart 차트 디스플레이의 경우 직접 내보낼 수도 있습니다. 효과는 다음과 같습니다.
3. 타이트 텍스트 및 플라잉 소시지ITEXT는 HTML2PDF, 빠른 속도, 열악한 오류 보정 능력을 구현하고 중국어를 지원하지만 (HTML에 유니 코드 인코딩을 사용하도록 요구) 중국은 중국 글꼴, 오픈 소스를 지원합니다. 비행 소저는 HTML2PDF, 열악한 오류 수정 능력을 구현하며 다양한 중국 글꼴 (일부 스타일을 인식 할 수 없음), 오픈 소스를 지원합니다.
기술적 인 기능 : Java 프로그래밍을 기반으로 한 HTML CSS 스타일의 분석 및 처리는 현재 더 간단한 페이지와 스타일을 지원합니다. CSS3의 스타일과 복잡한 CSS 스타일 호환성의 경우 CSS3은 매우 열악합니다. 페이지 내용이 길면 처리 시간이 느립니다. 참조 주소 : https://code.google.com/archive/p/flying-saucer/
테스트 결과 :이 실험의 테스트 페이지는 나올 수 없습니다.
테스트 설명 :
ITEXT와 Flying Sauser의 두 개의 오픈 소스 프로젝트는 기본적으로 CSS3와 호환되지 않습니다.이 기술은 비교적 오래되었습니다. 간단한 테이블의 경우 통계 데이터 수출 및 업데이트 된 기술에는 부트 스트랩 테이블, EasyUI Datagrid 테이블 내보내기가 포함됩니다. 온라인으로 도입 된이 체계는 권장되지 않습니다.
4.pd4ml 테스트PD4ML은 순수한 Java의 클래스 라이브러리이며 CSS는 PDF 문서를 생성하기위한 강력한 도구를 생성하기 위해 페이지 레이아웃 및 컨텐츠 정의 형식으로 사용됩니다. 참조 웹 사이트 : http://www.pd4ml.com
소프트웨어의 장점은 다음과 같습니다.
지원되는 HTML 태그 및 CSS 속성은 상대적으로 가득 차 있으며 변환 왜곡은 비교적 작은 레이아웃 제어를 달성하는 데 사용될 수 있습니다. 웹 파일 태그 및 CSS 문법 오류의 내결함성이 더 좋습니다. 추가 제어 없이는 그림의 변환 출력을 지원하십시오.
소프트웨어의 단점은 다음과 같습니다.
오픈 소스가 없으면 최신 데모 버전이 없으면 다운로드 및 테스트 후 중국 전환이 지원되지 않는 것으로 나타났습니다. 상용 버전을 구입해야합니다. (여기에 매우 구덩이가 있습니다. 테스트를 할 수있는 문제를 사용할 수 없으며 나중에 지원되지 않는 것으로 나타났습니다). 크래킹 후 기존 버전 중 일부는 차량 문제를 해결할 수 있지만 지원되는 CSS 스타일은 완전하지 않습니다.
테스트 결과 :
테스트 설명 :
중국의 새로운 버전은 차단되었지만 일부 CSS 스타일을 지원합니다. 이전 버전의 해독 후 인터페이스의 스타일 호환성이 좋지 않으며 Bootsrtap에 대한 지원은 기본적으로 데이터를 생성하고 그림에 문제가 없음을 보여줄 수 있습니다. 충전 소프트웨어이며 성능이 완벽하지 않다는 점을 고려하면 템플릿 내보내기 또는 기타 도구가 사용되지 않습니다.
5. html2canvas 테스트HTML2Canvas는 꽤 좋은 JavaScript 클래스 라이브러리입니다. html2canvas는 페이지의 dom 및 요소 스타일 정보를 사용하여 캔버스 이미지로 렌더링하여 페이지 스크린 샷의 기능을 달성합니다. 서버에서 렌더링이 필요하지 않습니다. 브라우저가 캔버스를 지원하지 않으면 FlashCanvas 또는 ExplorerCanvas가 대신 사용됩니다. 다음 브라우저는 스크립트를 잘 지원할 수 있습니다 : Firefox 3.5+, Google Chrome, Opera의 새로운 버전, IE9 위의 브라우저. 각 브라우저는 페이지를 다른 방식으로 렌더링하기 때문에 생성 된 그림은 동일하지 않습니다. 여전히 개발 단계에 있지만 여전히 기대할 가치가 있습니다. 이 플러그 인은 jQuery 플러그 인에 따라 다르므로 최신 버전을 사용하는 것이 좋습니다.
크로스 -도메인 사진을 지원하지 말고 SVG 사진을 지원하지 않고 브라우저 플러그 인의 일부를 사용할 수없고 플래시를 지원하지 않고 IFream을 지원하지 않습니다 (원래 코드를 수정하고 IFREAM을 지원할 수 있음)
이 시간 동안 html2canvas를 사용할 때 많은 항목 페이지가 Echart 차트를 포함하여 스크린 샷을 정상적으로 사용할 수 있음을 발견했습니다. 소량의 CSS3의 새로운 기능 만 지원되지 않습니다. 스크린 샷 효과가 더 좋습니다. 그러나 테스트 할 때 치명적인 문제가 발견되었습니다. 추적 분석 후, HTML2Canvas의 JS 기능은 인식 할 수없는 CSS 스타일을 처리하는 것으로 밝혀졌습니다. 특히 숨겨지고 표시된 모듈의 경우 비우호적 인 지원을 지원합니다.
페이지 스크린 샷 효과는 다음과 같습니다.
그러나 원본 페이지의 CSS는 유효하지 않으며 페이지가 비정상적으로 나타나고 숨겨진 스타일, 표시된 스타일 디스플레이는 혼란 스럽습니다.
테스트 설명 :
HTML2Canvas는 BootStap의 스타일을 더 잘 지원하는 것으로 밝혀졌습니다. CSS3의 새로운 기능은 둥근 사진을 위해 잘 지원되지 않습니다. 주요 장점은 원래 페이지를 변경하는 스타일의 라이트 엔드입니다.
6. 요약위의 사례의 테스트를 통해 일반적으로 사용되는 HTML의 대부분은 온라인으로 도입 된 PDF로 변환하는 대부분의 경우 간단한 HTML 변환이지만 여전히 많은 문제가 있으며 적용하기가 어렵습니다. 이러한 방법의 원리를 분석함으로써 다음과 같은 결론을 얻을 수 있습니다.
HTML 웹 페이지는 PDF로 완전히 변환되며 모든 솔루션은 불충분합니다. 양식 페이지 페이지 인 경우 HTML 스타일은 CSS3의 속성을 최대한 채택하지 않습니다. HTML Front -End 스타일은 빠르게 발전하고 있으며 CSS3의 새로운 기능은 좋은 영향을 미치며 CSS는 새로운 규칙과 문법을 정의합니다. ITEXT 및 Flying Sauser와 같은 Java 변환 클래스는 이러한 변경 사항과 전혀 호환 될 수 없습니다. 이러한 오픈 소스 프로젝트는 오래된 오픈 소스 팀이 유지 보수 및 업데이트를 중단했습니다. PD4ML의 본질은 CSS와 비교할 때 CSS의 스타일입니다. 그러나 소수의 CSS 스타일도 지원하지 않습니다. 그리고 중국의 문제는 불편하다. 클라이언트 브라우저 커널 모드의 경우 Phantomjs 및 WKHTMLTOPDF는 더 강력합니다. HTML2Canvas의 스크린 샷 모드는 유연하며 가벼운 프론트 엔드 스크린 샷 도구입니다. 현재 일부 기능은 불완전하지만 일부 스크린 샷의 원래 페이지에 영향을 미치는 문제는 먼저 나쁘지 않습니다. PDF에 대한 스크린 샷.
위는이 기사의 모든 내용입니다.이 기사의 내용이 모든 사람의 학습이나 작업에 도움이되기를 바랍니다.