Railo PDF生成问题

时间:2012-07-22 10:44:34

标签: coldfusion pdf-generation railo cfml openbd

我在Railo上比较新。试图在“Railo”上设置应用程序我遇到了PDF生成的问题。请注意,我在Adobe CFML Server上运行应用程序没有任何问题。

问题:在我的应用中的某个地方,我有一个按钮,可以从数据库中提取数据并提供可下载的PDF文件。在Railo服务器上,PDF内容以“有趣的字符”返回。输出语言为希腊语。希腊语有许多重音字符。这就是问题发生的地方(重音字符以“有趣”的形式返回,例如Ÿ或或for代表O或O'代表Ά)。我认为这个问题与Railo的字体集有关。在openBD服务器上显示相同的内容! 我已经尝试在cfm文件中添加 cfprocessingdirective pageEncoding =“utf-8”但没有结果。我试图在fonts.jar中添加字体(这是在\ WEB-INF \ lib文件夹下),也没有结果(并调用PDF css中的字体)。

我不想再使用Adobe CFML Server了。

这个问题有解决方法吗?

非常感谢,

汤姆

希腊

cfc只提供数据库中的数据

我正在使用的代码:

<cfprocessingdirective pageEncoding="utf-8">
<cfif not IsDefined("URL.id")>
    <cfelseif not IsDefined("URL.model")>
    <cfelseif not IsDefined("URL.title")>
    <cfelseif not IsDefined("URL.id_tree")>
</cfif>
<cfheader name="Content-Disposition" value="attachment; filename=#URL.id_tree#.pdf">
<cfcontent type="application/unknown; charset=utf-8">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!---<link rel="stylesheet" type="text/css" href="resources/fonts/MinionProRegular/MinionProRegular.css" charset="utf-8" />--->
<title>Print</title>

</head>

<body>

  <!---<cfif not IsDefined("URL.id")>
      <cfelseif not IsDefined("URL.model")>
  </cfif>--->

  <!--- Get print details --->
  <cfinvoke
    component="Print"
    method="myPrint"
    returnvariable="getContent"
    id="#URL.id#" 
    model="#URL.model#">

  <!---<cfdump var="#getMember#">--->

  <!--- Output the PDF --->
  <cfdocument 
    format="pdf"
    pagetype="a4"
    <!---pageheight="5"
    pagewidth="6.5"--->
    margintop="0.6"
    marginbottom="0.8"
    marginright="1.3"
    marginleft="1"
    scale="90"
    unit="in"
    fontembed="true"
    backgroundvisible="true">

    <cfoutput query="getContent" >
    <style type="text/css">
      .logo {
          background-image:url(../../images/app-specific/ithemis_logo_NEW.png);
          background-repeat: no-repeat;
          display: inline-block;
          float: left;
          clear: right;
      }
      .name {
          font-family: Georgia, "Times New Roman", Times, serif;
          font-size: 12px;
          color: ##5a5a5a;
          <!---float: left;
          clear: right;--->
          <!---margin-top: 5px;--->
      }
      .body {
          font-family: "Times New Roman", Times, serif;

          <!---font-family: Bodoni;--->
          <!---font-family: Didot;--->
          <!---font-family: Greek;--->
          <!---font-family: Geosanslight;--->
          <!---font-family: Minionpro_regular;--->
          <!---font-family: Philosopher;--->
          <!---font-family: Russian;--->

          font-size: 11px;
          color: ##323232;
          line-height: 17px;
          <!---float: left;
          clear: right;--->
      }
      .line {
          font-size:1px;
          border-bottom-width: 1px;
          border-bottom-style: solid;
          border-bottom-color: ##202020;
          padding-bottom: 5px;
      }
      .point {
          font-family: Georgia, "Times New Roman", Times, serif;
          font-size: 11px;
          padding: 5px 5px 5px 5px;
          color: ##373737;
          background-color: ##eeeeee;
          /*width: 100% !important;*/
          display: block !important;
          text-align: justify;
      }
    </style>

      <!---<cfprocessingdirective pageencoding="utf-8">--->
      <cfdocumentitem type="header">
            <img src="../../images/app-specific/ithemis_logo_print_pdf.png" alt="iThemis logo" width="80" height="30" style="float:left;" border="0"/>
      </cfdocumentitem>
       <!---Use a footer with current page of totalpages format. --->
      <cfdocumentitem type="footer">
        <cfoutput><span style="font-family:Georgia, 'Times New Roman', Times, serif;font-size:10px;color: ##5a5a5a;float:right;">Σελίδα #cfdocument.currentpagenumber# από #cfdocument.totalpagecount#</span></cfoutput>
      </cfdocumentitem>


      <table border="0"> 

        <tr> 
            <td><span class="name">#Title#</span></td> 
        </tr>

        <tr> 
            <td><span class="body">#Body#</span></td>
        </tr> 

    </table>

    </cfoutput>
  </cfdocument>

</body>
</html>

2 个答案:

答案 0 :(得分:0)

Railo在某些方面有所不同。 生成PDF的CFC / CFM文件也以unicode格式保存非常重要。

我建议转到文件&gt;在编辑器中新建,并确保编辑器允许您在创建文件之前定义BOM和编码。

然后将代码复制/粘贴到新文件中并用它覆盖文件。

如果你这样做,它应该有效。

这听起来很奇怪......但是试一试。 它很多次修复了我在Railo上的UTF-8应用程序。

Dreamweaver,虽然我不再使用它 - 允许在创建文件时定义这些设置。您还可以在所有未来文档的首选项中设置它们。 dreamweaver preferences pane

在SublimeText 2上,您可以使用编码和BOM保存文件。 sublimetext save as encoded

在ColdFusion Builder中,不确定BOM设置的确切位置,但这是确保默认编码设置为UTF-8的首选项。 coldfusion builder preferences pane

我希望这可以帮助您和其他有类似问题的人。 记住:如果您正在使用UTF-8 / Railo,则必须确保交互的每个方面都以UTF-8保存。包括cfc / cfm文件本身。

祝你好运!

答案 1 :(得分:0)

请确保您在CFC中<cfprocessingdirective pageencoding="utf-8">之后立即添加<cfcomponent>