XSLT - 이미지(및 PDF)를 base64로 변환
P粉529245050
P粉529245050 2024-01-16 16:01:19
0
1
500

저는 Apache FOP 2.8을 사용하여 Apache FOP 중간 형식(IF) 파일을 자체 작성 xslt 스타일시트를 사용하여 HTML 文件로 변환했습니다.

외부 라이브러리로서 현재 saxon12he만 설치되어 있습니다.

문제 #1(이미지를 base64로)

소스 IF 문서에는 다음과 같은 이미지 xml 요소가 있습니다.

으아악

쉽게 HTML로 변환하면 비슷한 결과를 얻을 수 있습니다

으아악

다음 템플릿을 사용하는 경우:

으아악

여기서 질문이 생성되었습니다 HTML-file 不能是“独立的”...意味着除了 HTML-file 之外还必须有 < code>files 目录,其中包含 Logo.png,以便 HTML-file 找到图像路径 filesLogo.png< /p>

하지만 내가 이루고 싶은 것은 HTML 文件"자립"하는 것이에요.

다음과 같은 간단한 함수 호출을 통해 Logo.png 转换为 Base64를 변환하는 방법이 있나요?

으아악

다음 출력을 생성합니다:

으아악

질문 #2(pdf에서 base64로)

또 다른 까다로운 부분은 중간 형식에서는 xlink:href 也可以生成 .pdf 파일이...

으아악

위와 같은 방법으로 Base64 이미지로 변환해 주시면 좋겠습니다.

또는 HTML 문서를 "자체 포함"으로 만드는 다른 방법이 있을 수도 있지만, base64로 변환하는 것이 지금까지 제가 가진 유일한 아이디어입니다.

방법 1 (Saxon Java 확장 기능)

이 문서에 이어 Saxon 12 HE용 Java 확장 기능을 만들어 보았습니다

그래서 하나 구현했습니다ExtensionFunctionDefinition

으아악

문서에 다음과 같이 적혀 있기 때문입니다. "이러한 확장 기능을 구현하는 클래스는 구성에 등록되어야 합니다. " 이는 "net.sf.saxon.Transform 또는 net.sf.saxon.Query의 하위 클래스를 지정하고 applyLocalOptions( 메서드를 재정의하여" 수행할 수 있습니다. ) config.registerExtensionFunction()에 대한 적절한 호출을 수행하도록 " net.sf.saxon.Transform 확장도 추가했습니다 < /代码>:

으아악

아티팩트를 구축하면 jar 文件时(我使用 IntelliJbtw를 얻을 수 있습니다. ) "컴파일 출력"만 추가했기 때문에 jar 파일의 크기는 3kb가 되었습니다.

그런 다음 Apache FOP 옆에 있는 lib 폴더에 항아리를 넣고 saxon-he-12.2.jar 추가했습니다. xmlns:ext="http://example.com/saxon-extension"xsl:stylesheet.

근데 지금 전화하면

으아악

오류가 발생했습니다net.sf.saxon.trans.XPathException:找不到名为 Q{http://example.com/saxon-extension}imageToBase64() 的 1 参数函数< /p>

P粉529245050
P粉529245050

모든 응답(1)
P粉128563140

나만의 확장 기능을 만들라고 지시한 @MartinHonnen의 도움으로 이 작업을 수행했습니다.

그래서 저는 새로운 Java 프로그램(Java 8을 사용하는 데 중요함)을 만들고 두 개의 클래스를 추가했습니다.

으아악

그리고 이것을 바탕으로 stackoverflow-entry 다른 클래스 MyTransformerFactory:

으아악

이제 jar 文件并将其放入 Apache FOP 的 lib 폴더를 만듭니다.

그런 다음 추가하세요 set CUSTOMOPTS=-Djavax.xml.transform.TransformerFactory=ExtensionsPackage.MyTransformerFactory fop.bat 并将 %CUSTOMOPTS% 添加到 :runFop으로.

스타일시트에 네임스페이스 추가:

으아악

다음과 같이 사용하세요:

으아악

이제 콘솔을 통해 fop.bat를 실행한다면 xsl:value-of 将提供 12345.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿