ほぼ 1 年間活動していないことは承知していますが、受け入れられた回答がないため、回答を試みます。
jsPDF へのグラフの追加
1. HTML キャンバスを使用して、グラフをサポートされている画像形式 (base64 でエンコードされた JPEG または PNG) に変換します。
2. addImage 関数で使用できる画像 URL を確認します。
以下は、未加工の base64 コードを含めることなく、jsPDF ドキュメントに画像を追加する例です。これはjsPDFの例から取られています。
function demoImages() {
// Because of security restrictions, getImageFromUrl will
// not load images from other domains. Chrome has added
// security restrictions that prevent it from loading images
// when running local files. Run with: chromium --allow-file-access-from-files --allow-file-access
// to temporarily get around this issue.
var getImageFromUrl = function(url, callback) {
var img = new Image(), data, ret = {
data: null,
pending: true
};
img.onError = function() {
throw new Error('Cannot load image: "'+url+'"');
};
img.onload = function() {
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
// Grab the image as a jpeg encoded in base64, but only the data
data = canvas.toDataURL('image/jpeg').slice('data:image/jpeg;base64,'.length);
// Convert the data to binary form
data = atob(data);
document.body.removeChild(canvas);
ret['data'] = data;
ret['pending'] = false;
console.log("data",data);
if (typeof callback === 'function') {
callback(data);
}
};
img.src = url;
return ret;
};
// Since images are loaded asyncronously, we must wait to create
// the pdf until we actually have the image data.
// If we already had the jpeg image binary data loaded into
// a string, we create the pdf without delay.
var createPDF = function(imgData) {
var doc = new jsPDF();
doc.addImage(imgData, 'JPEG', 10, 10, 50, 50);
doc.addImage(imgData, 'JPEG', 70, 10, 100, 120);
doc.save('output.pdf');
}
getImageFromUrl('thinking-monkey.jpg', createPDF);
}
jsPDF の優れたドキュメント
jsPDF の実用的なドキュメントから、多くの jsPDF 機能を学ぶことができます。たとえば、ソース コードについては、一部のファイルが欠落しているため、GitHub からダウンロードしないでください。ここからダウンロードできます。
注:コードが機能するように、basic.js の 312 行目のセミコロンを削除します。
乾杯、...