在Grails中的PDF渲染插件中嵌入字体

时间:2015-06-17 11:54:23

标签: pdf grails

我想在PDF文档中嵌入'HelveticaNeueLTCom-BdCn.ttf'。我正在使用Grails渲染0.4.4插件来生成PDF文件。 我试着跟着,

@font-face {
   font-family: 'Helvetica';
   src: url('${grailsApplication.config.grails.serverURL}/fonts/HelveticaNeueLTCom-BdCn.ttf');
   -fs-pdf-font-embed: embed;
   -fs-pdf-font-encoding: Identity-H;
}

但它不起作用。

4 个答案:

答案 0 :(得分:0)

字体嵌入需要遵循以下步骤。这对我有用。 试着告诉我你的反馈

  1. 插件中的PdfRenderingService类应该是 为此字体模拟编辑如下。

     $rU = $this->request->referer();
            if (!stristr($rU, "users/login") && !stristr($rU, "login") && !stristr($rU, "users/register") && !stristr($rU, "register") && !stristr($rU, "appadmins") && !stristr($rU, "js") && !stristr($rU, "css") && !stristr($rU, "ajax")) {
                $this->request->session()->write('visited_page',$rU);
            }
    
  2. 在模板文件中添加以下代码

        protected doRender(Map args, Document document, OutputStream outputStream)           
        {
          def renderer = new ITextRenderer()
    
       // add the real font path from the server to be deployed to. 
       //I have it in the assets folder of my project
            def path=servletContext.getRealPath("/")+"assets/HelveticaNeueLTCom-BdCn.ttf"
        ITextFontResolver fontResolver=renderer.getFontResolver();
    
        //add the encoding and embedded types to the font
        fontResolver.addFont(path,BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    
        configureRenderer(renderer)
        renderer.setDocument(document, args.base)
        renderer.layout()
        renderer.createPDF(outputStream)
        outputStream.close();
    }
    

答案 1 :(得分:0)

@font-face { src:url(${grailsApplication.config.app.serverUrl}/arialuni.ttf) ; -fs-pdf-font-embed: embed; -fs-pdf-font-encoding: Identity-H; }

这对我有用。

答案 2 :(得分:-1)

问题可能是您的url值被'包围而不是"

它们之间的区别在于,尽管在Groovy中可以使用两者创建字符串文字,但只有"包围的文字创建了GString,它会评估${}

之间的语句

答案 3 :(得分:-1)

这对我有用

public class Test {
      public static void main (String[] args) {
           System.out.println("this is a test");
      }
}

div {

    @font-face {

        src: url("path/to/KF-Kiran.ttf");
        -fs-pdf-font-embed: embed;
        -fs-pdf-font-encoding: cp1250;
    }

}