Grailsエクスポートプラグイン(基本的にはフライングソーサー)を使用してPDFを生成しています。私のGSPページはUTF-8ページです(または少なくともプロパティはUTF-8であることを示していますが、GSPページの先頭には<?xml version="1.0" encoding="UTF-8"?>
というディレクティブがあります)。最初に生成されたPDFにウムラウト文字「ööüõ」が正しく含まれていましたが、キリル文字はPDFにはありませんでした(レンダリングされていません)。次に、ドキュメントに記載されているように、以下を追加してCSSファイルを変更しました。フライングソーサーフォント(ユニコード文字用)
@font-face {
src: url(ARIALUNI.TTF);
-fs-pdf-font-embed: embed;
-fs-pdf-font-encoding: UTF-8;
}
body {
font-family: "Arial Unicode MS", Arial, sans-serif;
}
ArialUni.ttfもサーバーにデプロイされています。しかし今、ウムラウト文字とキリル文字の両方をボックスとしてレンダリングしています。 -fs-pdf-encodingプロパティ値をIdentity-Hに変更すると、ウムラウト文字が正しく描画されますが、キリル文字は疑問符としてレンダリングされます。
ウムラウトとキリル文字の両方を正しく表示するためにどのようなフォントを使用することができますか?または私のCSSは何とか間違っているかもしれませんか?どんなヒントも大歓迎です。
UPD 1: 私も(http://fontface.codeandmore.com/によって生成された)、CSS、次の試してみました:私は<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
を追加しました
@font-face {
font-family: 'ArialUnicodeMS';
src: url('arialuni.ttf');
src: url('arialuni.eot?#iefix') format('embedded-opentype'),
url('arialuni.woff') format('woff'),
url('arialuni.ttf') format('truetype'),
url('arialuni.svg#arialuni') format('svg');
font-weight: normal;
font-style: normal;
-fs-pdf-font-embed: embed;
-fs-pdf-font-encoding: UTF-8;
}
body {
font-family:'ArialUnicodeMS';
}
私はまたの-Dfile.encoding =とGrailsのを実行しようとしていましたUTF-8は、ここで言及したように:http://grails.1312388.n4.nabble.com/PDF-plugin-Having-problems-with-instalation-td2297840.htmlですが、何も役立ちません。キリル文字はまったく表示されません。何が問題なのでしょうか?
* ところで:私はジッパーとしての私のPDFをパッケージ化し、そのような応答には、ブラウザに戻ってそれを送信しています*:
response.setHeader "Content-disposition", "attachment; filename=test.zip"
response.setHeader "Content-Encoding", "UTF-8"
response.contentType = 'application/zip'
response.outputStream << zip
response.outputStream.flush()
response.outputStream.close()
は私がビュンながら何とかエンコーディングを検討する必要がありますか????、これは私がそのように実行します。
それは顔キット・ジェネレータによって生成された次のCSSとの.ttfファイル、で作業を開始したいくつかの理由public static byte[] zipBytes(Map<String, ByteArrayOutputStream> fileNameToByteContentMap) throws IOException {
ByteArrayOutputStream zipBaos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(zipBaos);
fileNameToByteContentMap.eachWithIndex {String fileName, ByteArrayOutputStream baos, i ->
byte[] content = baos.buf
ZipEntry entry = new ZipEntry(fileName)
entry.setSize(content.length)
zos.putNextEntry(entry)
zos.write(content)
zos.closeEntry()
}
zos.close()
return zipBaos.toByteArray();
}
:
は、最後に私は私の文書のCSSのセクションにフォントファミリ 'Calibri' を追加しましたか? –
あなたはHTMLのコンテンツタイプを意味しますか? –