2016-02-05 49 views
0

我將XSLT轉換爲帶有中文字符的PDF。我正在使用Fonet.dll和csharp。 我已經用控制面板中的地區語言添加了中文,即ZH和ZHT。xslt fo不顯示中文或泰文字體

我下面的代碼示例生成pdf

的XSLT是如下

<?xml version="1.0" encoding="gb2312"?> 
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:fo="http://www.w3.org/1999/XSL/Format" > 
    <xsl:template match="/" > 

    <fo:root xml:lang="en" 
     xmlns:fo="http://www.w3.org/1999/XSL/Format" > 
     <fo:layout-master-set> 
     <fo:simple-page-master page-height="350mm" 
           page-width="271mm" 
           master-name="PageMaster"> 
      <fo:region-body /> 
     </fo:simple-page-master> 
     </fo:layout-master-set> 
     <fo:page-sequence master-reference="PageMaster"> 
     <fo:flow flow-name="xsl-region-body" > 

      <fo:block font-family="MingLiU"> 
      hello- 您好 
      </fo:block> 
      <fo:block font-family="MS Mincho" 
      >カニ入りスープなしの麪をください。</fo:block> 
     </fo:flow> 
     </fo:page-sequence> 
    </fo:root> 
    </xsl:template> 
</xsl:stylesheet> 

中國的字符不會出現在所有 我所有設置編碼編碼=「GB2312」但它沒有任何區別。

有沒有一種方法可以在XSLT中嵌入字體,以便中文字符出現。

+0

爲什麼不把編碼爲UTF-8? –

+0

我試過將編碼設置爲UTF-8,但沒有工作 – user1339913

+0

中文字符根本沒有出現 – user1339913

回答

0

這可能是字體配置的事,而不是字符編碼。

如果您想要使用的字體得到有效支持(網站聲明FO.NET「支持TrueType和TrueType風格的OpenType字體」),您必須告訴格式化程序它們在哪裏(如果格式化程序不自動在默認的系統字體文件夾中查找它們)以及如何使用它們:引用它們,將整個字體嵌入到PDF中,或只嵌入所需的子集。

我使用FO.NET沒有直接經驗,但根據本documentation page about fonts你需要像這樣在你的代碼(你可能要嵌入/子集中國字體):

FonetDriver driver = FonetDriver.Make(); 
driver.Renderer = RendererEngine.PDF; 

// Font embedding/linking is set via PdfRendererOptions class 
PdfRendererOptions options = new PdfRendererOptions(); 

// Use FontType enumeration to specify either Link, Embed or Subset 
//options.FontType = FontType.Link; 
options.FontType = FontType.Embed; 
//options.FontType = FontType.Subset; 

driver.Options = options; 
0

可能您的輸出不使用正確的編碼。 您可以設置輸出編碼與

<xsl:output encoding="gb2312" /> 
+0

謝謝你的建議,但它沒有任何區別,漢字仍然缺失。 – user1339913

+0

您確定用於創建PDF的程序可以處理編碼嗎?我們可以看到FO輸出嗎? – cvesters