XSLT 및 XSL-FO/FOP를 사용하여 XML 파일을 PDF로 변환하려고합니다. 그것은 영어 문자에 대해서만 작동하지만 ı, ş 등과 같은 일본어 및 터키어 문자에 대해서는 각각의 문자 대신 #가 표시됩니다. 또한 다른 인코딩 UTF-8, ISO-8859-9 등을 시도했지만 이것이 나에게 도움이되지 못했습니다.XSLT 및 XSL-FO/FOP를 사용하여 XML 파일을 PDF로 변환
어떤 도움을 주시면 대단히 감사하겠습니다.
감사합니다.
XSLT 및 XSL-FO/FOP를 사용하여 XML 파일을 PDF로 변환하려고합니다. 그것은 영어 문자에 대해서만 작동하지만 ı, ş 등과 같은 일본어 및 터키어 문자에 대해서는 각각의 문자 대신 #가 표시됩니다. 또한 다른 인코딩 UTF-8, ISO-8859-9 등을 시도했지만 이것이 나에게 도움이되지 못했습니다.XSLT 및 XSL-FO/FOP를 사용하여 XML 파일을 PDF로 변환
어떤 도움을 주시면 대단히 감사하겠습니다.
감사합니다.
FOP 엔진 용으로 어떤 글꼴이 구성되어 있으며 문자가 들어있는 텍스트에 대해 문서에서 어떤 글꼴을 사용하고 있습니까? 특정 언어로 텍스트를 렌더링하려면 다음이 필요합니다
(1) 적절한 문자로 인코딩 된 소스 데이터를
(2) XSL/실제로 해당 문자의 상형 문자를 포함하는 문자 글꼴을 참조 XSL FO
(3) 사용하고있는 특정 글꼴이 사용중인 응용 프로그램이 인식 할 수 있도록 참조 된 글꼴입니다. 당신이 문제를 가지고있는 것처럼
소리가 난다 중 하나 (2) 또는 (3)
당신은이 중 중국어 형식을 돋움을 사용하고 헬 베티가 포함되지 않은 것처럼 XSL FO에서 올바른 글꼴을 (참조되지 중국어 글리프).
아마도 올바른 글꼴 XSL FO를 참조하고 있지만 해당 글꼴을 찾기 위해 Apache FOP를 설정하지 않았을 수 있습니다.
설명을 보면 일본어 및 터키어 글꼴이 누락되어있어 응용 프로그램에 추가해야하는 것처럼 보입니다. 당신이 글꼴 파일이 가정
다음 https://xmlgraphics.apache.org/fop/trunk/fonts.html
당신이해야 할 것은 : 당신은 FOP가없는 글꼴을 처리하는 방법에 대한 다음과 같은 링크에서 더 많은 글꼴을 추가하는 방법에 대한 일반적인 정보를 찾을 수 있습니다
<?xml version="1.0" encoding="UTF-8"?>
<fop version="1.0">
<renderers>
<renderer mime="application/pdf">
<fonts>
<font metrics-url="verdana.xml" kerning="yes"
embed-url="VERDANA.TTF">
<font-triplet name="Verdana" style="normal" weight="normal" />
</font>
<font metrics-url="verdanab.xml" kerning="yes"
embed-url="VERDANAB.TTF">
<font-triplet name="Verdana-Bold" style="normal" weight="bold" />
</font>
<font metrics-url="verdanai.xml" kerning="yes"
embed-url="VERDANAI.TTF">
<font-triplet name="Verdana-Italic" style="italic" weight="normal" />
</font>
<font metrics-url="verdanaz.xml" kerning="yes"
embed-url="VERDANAZ.TTF">
<font-triplet name="Verdana-BoldItalic" style="italic" weight="bold" />
</font>
</fonts>
</renderer>
</renderers>
</fop>
:
이것은 샘플 구성 파일 (fopUserConfig.xml)입니다 : 디렉토리에 첨부 된 메트릭 XML 파일, 당신은 당신의 맵시 꾼 구성에서 글꼴을 등록해야
public class PdfReportGenerator {
/**
* Reference to pdfReportTransformer.xsl
*/
@Value("classpath:templates/pdfReportTransformer.xsl")
private Resource basePathRef;
@Value("classpath:templates/fopUserConfig.xml")
private Resource fopConfiguration;
@Value("classpath:templates/fonts/VERDANA.TTF")
private Resource fontBase;
public void doPdfTransformation(String xmlInput, File xslFOInput, File outputPDf) throws TransformerException,
IOException {
// Step 1: Construct a FopFactory
// (reuse if you plan to render multiple documents!)
FopFactory fopFactory = FopFactory.newInstance();
OutputStream out = null;
try {
// add the user configuration needed in order to embed the fonts in
// the pdf.
fopFactory.setUserConfig(fopConfiguration.getFile());
fopFactory.setBaseURL(basePathRef.getFile().getParentFile().getCanonicalPath());
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
foUserAgent.setBaseURL(fopFactory.getBaseURL());
fopFactory.getFontManager().setFontBaseURL(fontBase.getFile().getParentFile().getCanonicalPath());
...
}
catch (SAXException e) {
LOGGER.error("Error While initializing fop", e);
}
finally {
// Clean-up
if (out != null) {
out.close();
}
}
}
}
: 당신이 맵시 꾼 사용
당신은 자바 클래스 (봄 콩)을 가지고 있다고하자 :
그 후,이 config 파일뿐만 아니라 맵시 꾼 공장 초기화에 글꼴을 포함 할 필요가