5

誰かがカスタムフォントを設定するための例を手伝ってくれますかjspdf-autotable

私は次のことを試しました

var doc = new jsPDF('p', 'pt');
doc.setFont("rotobo");      ----> font face name that I declared in my css file
doc.autoTable(columns, data);
doc.save("table.pdf");

これを試した後、PDFのフォントは変更されませんでした。

任意の提案をいただければ幸いです。

4

3 に答える 3

7

このようなことを試してください。

doc.autoTable(columns, data, {styles: {font: "rotobo"}});

また

カスタム スタイルの例についてはこちらを参照してください。ドキュメントのREADME.mdにはすべてのスタイルが示されています。

于 2016-11-15T06:19:25.793 に答える
0

あなたがする必要がある問題を修正するには: 1. jspdf-autotable をダウンロードして、ローカルで作業します。2. jspdf-autotable では、text(...) 関数の呼び出しが 2 回あるため、(テキスト関数を呼び出す前に)「setFont」を追加する必要があります。

変更する必要があるコード:

jsPDF.API.autoTableText = function (text, x, y, styles) {
styles = styles || {};
var FONT_ROW_RATIO = 1.15;
if (typeof x !== 'number' || typeof y !== 'number') {
    console.error('The x and y parameters are required. Missing for text: ', text);
}
var k = this.internal.scaleFactor;
var fontSize = this.internal.getFontSize() / k;
var splitRegex = /\r\n|\r|\n/g;
var splitText = null;
var lineCount = 1;
if (styles.valign === 'middle' || styles.valign === 'bottom' || styles.halign === 'center' || styles.halign === 'right') {
    splitText = typeof text === 'string' ? text.split(splitRegex) : text;
    lineCount = splitText.length || 1;
}
// Align the top
y += fontSize * (2 - FONT_ROW_RATIO);
if (styles.valign === 'middle')
    y -= (lineCount / 2) * fontSize * FONT_ROW_RATIO;
else if (styles.valign === 'bottom')
    y -= lineCount * fontSize * FONT_ROW_RATIO;
if (styles.halign === 'center' || styles.halign === 'right') {
    var alignSize = fontSize;
    if (styles.halign === 'center')
        alignSize *= 0.5;
    if (lineCount >= 1) {
        for (var iLine = 0; iLine < splitText.length; iLine++) {
            this.text(splitText[iLine], x - this.getStringUnitWidth(splitText[iLine]) * alignSize, y);
            y += fontSize;
        }
        return this;
    }
    x -= this.getStringUnitWidth(text) * alignSize;
}
if (styles.halign === 'justify') {
    this.setFont("frank");   //---> this u need to adding
    this.setFontType("normal");
    this.text(text, x, y, { maxWidth: styles.maxWidth || 100, align: 'justify' });
}
else {
    this.setFont("frank"); //---> this u need to adding
    this.setFontType("normal");
    this.text(text, x, y);
}
return this;

};

于 2019-05-31T07:55:12.173 に答える