addimage - jspdf save
¿Ajuste de palabra en PDF generado(usando jsPDF)? (4)
Cuando usamos linebreak en jsPDF obtenemos un error que indica que b.match no está definido, para resolver este error simplemente desminifique js y reemplace b.match con String (b) .match y u obtendrá este error dos veces; Obtenemos que c.split no está definido, solo haga lo mismo en este caso, reemplácelo con String (c) .match y habremos terminado. Ahora puedes ver saltos de línea en tu pdf. Gracias
Lo que estoy haciendo es usar jsPDF para crear un PDF del gráfico que generé. Sin embargo, no estoy seguro de cómo ajustar el título (agregado mediante la función text ()). La longitud del título variará de una gráfica a otra. Actualmente, mis títulos están saliendo de la página. ¡Cualquier ayuda sería apreciada!
Este es el código que tengo hasta ahora:
var doc = new jsPDF();
doc.setFontSize(18);
doc.text(15, 15, reportTitle);
doc.addImage(outputURL, ''JPEG'', 15, 40, 180, 100);
doc.save(reportTitle);
Nada que impida que el título de informe salga de la página.
Está bien, he resuelto esto. Utilicé la función jsPDF, splitTextToSize (texto, maxlen, opciones). Esta función devuelve una matriz de cadenas. Afortunadamente, la función jsPDF text (), que se utiliza para escribir en el documento, acepta tanto las cadenas como las matrices de cadenas.
var splitTitle = doc.splitTextToSize(reportTitle, 180);
doc.text(15, 20, splitTitle);
La paginación automática y el problema de ajuste de texto en JSPDF se pueden lograr con el siguiente código
var splitTitle = doc.splitTextToSize($(''#textarea'').val(), 270);
var pageHeight = doc.internal.pageSize.height;
doc.setFontType("normal");
doc.setFontSize("11");
var y = 7;
for (var i = 0; i < splitTitle.length; i++) {
if (y > 280) {
y = 10;
doc.addPage();
}
doc.text(15, y, splitTitle[i]);
y = y + 7;
}
doc.save(''my.pdf'');
Si necesita agregar dinámicamente nuevas líneas, desea acceder a la matriz devuelta por doc.splitTextToSize y luego agregar más espacio vertical a medida que avanza en cada línea:
var y = 0, lengthOfPage = 500, text = [a bunch of text elements];
//looping thru each text item
for(var i = 0, textlength = text.length ; i < textlength ; i++) {
var splitTitle = doc.splitTextToSize(text[i], lengthOfPage);
//loop thru each line and output while increasing the vertical space
for(var c = 0, stlength = splitTitle.length ; c < stlength ; c++){
doc.text(y, 20, splitTitle[c]);
y = y + 10;
}
}