HTML 파일을 받았는데 이를 메모리 내 PDF 파일로 변환하고 싶습니다. 변환 중에는 이를 위해 외부 위치를 사용하고 싶지 않습니다. 내가 원하는 것은 그것을 메모리에 보관하는 것뿐입니다.
지금까지 변환을 위해 몇 가지 Java 라이브러리를 사용해 보았지만 항상 어딘가에 임시 파일을 만든 다음 그 라이브러리에서 읽고 씁니다. 변환 중에 I/O를 수행하고 싶지 않습니다.
P粉3087835852024-02-27 10:09:20
HTMLWorker 클래스는 수년 전에 더 이상 사용되지 않습니다. HTMLWorker의 목표는 작고 간단한 HTML 조각을 iText 객체로 변환하는 것입니다. 완전한 HTML 페이지를 PDF로 변환하려는 의도는 없었지만, 그만큼 많은 개발자가 이를 사용하려고 합니다. HTMLWorker가 모든 HTML 태그를 지원하지 않고 CSS 파일을 구문 분석하지 않았기 때문에 이로 인해 많은 좌절감을 느꼈습니다. 이러한 좌절감을 피하기 위해 최신 버전의 iText에서는 HTMLWorker가 제거되었습니다.
2011년 iText Group은 iText 5를 기반으로 하는 범용 XML to PDF 도구로 XML Worker를 출시했습니다. 기본 구현은 XHTML(데이터) 및 CSS(스타일)를 PDF로 변환하여 HTML 태그를 매핑합니다.
,
, 그리고
Paragraph, Image 및 ListItem과 같은 iText 5 개체에 대해 다른 XML 형식에 대해 XML Worker를 사용한 구현은 모르지만 많은 개발자가 HTML2PDF 변환기로 jsoup와 함께 XML Worker를 사용했습니다.
XML Worker는 URL2PDF 도구가 아니었습니다. XML Worker는 HTML을 PDF로 변환하기 위한 목적으로 생성된 예측 가능한 HTML을 기대했습니다. 일반적인 사용 사례는 Java 또는 C#으로 송장 디자인을 프로그래밍하는 것이었습니다. , 개발자는 문서 구조를 정의하는 간단한 HTML 템플릿과 스타일을 정의하는 일부 CSS를 만들기로 결정했습니다. 그런 다음 HTML을 데이터로 채우고 XML Worker를 사용하여 원본 HTML을 버리고 송장을 PDF 문서로 만들었습니다. XSLT를 사용하여 메모리에서 XML을 HTML로 변환한 다음 pdfHTML 추가 기능을 사용하여 해당 HTML을 PDF로 변환하는 4장에서 이 사용 사례를 자세히 살펴보겠습니다.
iText 5 처음 만들어졌을 때 PDF를 최대한 빨리 생성하고 페이지가 완료되면 페이지를 OutputStream으로 플러시하는 도구로 설계되었습니다. iText가 2000년에 처음 출시되었을 때 매우 의미 있는 디자인 선택이 16년이 지난 iText 5에도 여전히 나타납니다. 불행하게도 이러한 선택 중 일부는 XML 작업자의 기능을 많은 개발자가 기대하는 품질 수준으로 확장하는 것을 불가능하지는 않더라도 매우 어렵게 만듭니다. 정말 훌륭한 HTML-PDF 변환기를 만들고 싶다면 iText를 처음부터 다시 작성해야 합니다. 우리는 해냈다.
2016년에 우리는 더 이상 이전 버전과 호환되지 않지만 pdfHTML을 염두에 두고 만들어진 완전히 새로운 버전의 iText 7을 출시했습니다. 새로운 렌더러 프레임워크에는 많은 작업이 이루어졌습니다. iText 7을 사용하여 문서를 생성하면 렌더러 및 해당 하위 렌더러 트리가 구축됩니다. 레이아웃은 HTML에서 PDF로의 변환을 처리하는 데 더 적합한 이 트리를 탐색하여 생성됩니다. iText 개체는 HTML 태그와 더 잘 일치하고 "CSS 방식"으로 스타일을 지정할 수 있도록 완전히 재설계되었습니다.
예를 들어, iText 5에는 테이블과 셀을 생성하기 위한 PdfPTable과 PdfPCell 개체가 있었습니다. 모든 셀에 기본 글꼴과 다른 글꼴의 텍스트를 포함하려면 모든 개별 셀의 내용에 대해 해당 글꼴을 설정해야 했습니다. iText 7에는 표와 셀 개체가 있습니다. 그리고 전체 표에 대해 다른 글꼴을 설정하면 이 글꼴이 모든 셀의 기본 글꼴로 상속됩니다. 특히 HTML을 PDF로 변환하는 것이 목표라면 이는 건축 설계 측면에서 중요한 진전이었습니다.
하지만 과거에 연연하지 말고 pdfHTML이 우리를 위해 무엇을 할 수 있는지 살펴보겠습니다. 첫 번째 장에서는 ConvertToPdf()/ConvertToPdf() 메서드의 다양한 변형을 살펴보고 변환기가 어떻게 구성되는지 알아볼 것입니다.