2017-10-03 5 views
0

私は非常に優れたNodeJS PDFKitを入手して、OpenSansとRobotoのカスタムフォントをGoogle Fontsから使用しようとしています。私のコードは次のようになります:NodeJSを使用しているときに「エラー:不明なバージョン0」

this.doc = new PDFDocument({bufferPages: true}); 
this.doc.registerFont("Roboto-Black", path.join(__dirname, "fonts", "Roboto-Black.ttf")); 

私はパスを印刷しました - それは正しいファイルを見つけることです。私は次のエラーを取得しています:私はRobotoフォントを削除し、もう1つは、それが少なくともで働いていたOpenSansを試してみましたが、すべてがひどい見えた

C:\projects\qbdvision\node_modules\restructure\src\VersionedStruct.js:37 
     throw new Error("Unknown version " + res.version); 
     ^

Error: Unknown version 0 
    at VersionedStruct.decode (C:\projects\qbdvision\node_modules\restructure\src\VersionedStruct.js:37:15) 
    at C:\projects\qbdvision\node_modules\restructure\src\Pointer.js:69:30 
    at Pointer.decode (C:\projects\qbdvision\node_modules\restructure\src\Pointer.js:79:16) 
    at ArrayT.decode (C:\projects\qbdvision\node_modules\restructure\src\Array.js:49:30) 
    at VersionedStruct.Struct._parseFields (C:\projects\qbdvision\node_modules\restructure\src\Struct.js:53:22) 
    at VersionedStruct.decode (C:\projects\qbdvision\node_modules\restructure\src\VersionedStruct.js:42:12) 
    at VersionedStruct.decode (C:\projects\qbdvision\node_modules\restructure\src\VersionedStruct.js:40:23) 
    at C:\projects\qbdvision\node_modules\restructure\src\Pointer.js:69:30 
    at Pointer.decode (C:\projects\qbdvision\node_modules\restructure\src\Pointer.js:79:16) 
    at ArrayT.decode (C:\projects\qbdvision\node_modules\restructure\src\Array.js:49:30) 
FAILED 

。手紙は一緒に出血していて、ほとんど汚れていました。

fonts.google.comからフォントをダウンロードしました。「このフォントを選択」をクリックし、表示される「1 Family Selected」ポップアップをクリックし、右上のダウンロードアイコンをクリックします。そのポップアップ。

なぜこれらのフォントは機能しませんか?

答えて

0

解決方法は、フォントをbase64エンコーディングに変換してからインポートすることです。だから、Linuxの/ Cygwinの、タイプを使用して、コマンドライン、時:

base64 --wrap=0 Roboto-Black.ttf > Roboto-Black-Base64.ttf 

内のすべてのテキストである必要があり、新たなTTFファイルを生成します。外部サービスを使用する場合は、折り返しがないことを確認してください。 1つの連続したテキストブロックでなければなりません。

次に、あなたのNodeJSコードで、実行します。

let fs = require("fs"); 

let doc = new PDFDocument({bufferPages: true}); 
let filePath = path.join(__dirname, "fonts", "Roboto-Black-Base64.ttf"); 
let fileContents = fs.readFileSync(filePath, "utf8"); 
this.doc.registerFont(fontName, new Buffer(fileContents, "base64")); 

を次に、あなたのフォントがクリアクリスタルを表示されます。私に必要な手がかりを与えるために小道具this answerに。

関連する問題