演示
嗨,我在应用程序中使用Angular8。在这里,我使用jspdf和html2canvas将html转换为pdf。但我只能打印半页,不能打印整页。谁能帮我找出哪里出了问题。
我附上了一个演示,当我在下拉列表中选择任何值时,会打开一个div,所以我需要获得div部分中所有的完整值。请帮忙。我得到的输出是这样的,但它不包含预期的完整值:
输出
如果有任何其他的方法,输出作为我的要求也被接受。
TS:
public downloadPdf() {
var data = document.getElementById('pdfDownload');
html2canvas(data).then(canvas => {
// Few necessary setting options
var imgWidth = 208;
var imgHeight = canvas.height * imgWidth / canvas.width;
alert(imgHeight)
const contentDataURL = canvas.toDataURL('image/png')
let pdf = new jspdf('p', 'mm', 'a4'); // A4 size page of PDF
var position = 0;
pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight);
// pdf.save('new-file.pdf');
window.open(pdf.output('bloburl', { filename: 'new-file.pdf' }), '_blank');
});
}
而不是创建pdf从图像,直接创建pdf从html使用addHtml方法的jspdf.我已经创建了下面的代码使用它。
您必须在索引页的标题部分添加此脚本
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js"></script>
public downloadPdf() {
$("pdfOpenHide").attr("hidden", true);
var removeClass = document.getElementsByClassName("vert-scrollable-150");
removeClass[0].classList.add("RemoveThisClass");
removeClass[0].classList.remove("vert-scrollable-150");
var data = document.getElementById("pdfDownload");
const pdf = new jspdf("p", "pt", "a4");
pdf.addHTML(data, () => {
window.open(
pdf.output("bloburl", { filename: "new-file.pdf" }),
"_blank"
);
});
var addClass = document.getElementsByClassName("RemoveThisClass");
addClass[0].classList.add("vert-scrollable-150");
addClass[0].classList.remove("RemoveThisClass");
}
这对你有用。您还可以从htmltopdf转换器获取参考
为此,您必须在html2canvas方法scrollY{scrollY:-window.scrollY}中添加选项,它将获取完全呈现页面的屏幕截图。
HTML2画布(数据,{scrollY:-window.scrollY,比例尺: 1}
除此之外,我们知道滚动条中存在数据。为此,您必须暂时删除滚动,并需要在pdf生成后添加。您可以通过简单地将id添加到此来完成此操作。
//为禁用滚动而编码
文件getElementById('alldata')。风格溢出='inherit';文件getElementById('alldata')。风格maxHeight='inherit';
async downloadPdf() {
var data = document.getElementById('pdfDownload');
$('pdfOpenHide').attr('hidden', true);
// disable the scroll
document.getElementById('alldata').style.overflow = 'inherit';
document.getElementById('alldata').style.maxHeight = 'inherit';
await html2canvas(data, {scrollY: -window.scrollY,
scale: 1}).then(canvas => {
// Few necessary setting options
var imgWidth = 150;
var imgHeight = canvas.height * imgWidth / canvas.width;
const contentDataURL = canvas.toDataURL('image/png', 1.0)
// enabling the scroll
document.getElementById('alldata').style.overflow = 'scroll';
document.getElementById('alldata').style.maxHeight = '150px';
let pdf = new jspdf('l', 'mm','a4'); // A4 size page of PDF
var position = 0;
// add tghis width height according to your requirement
const divHeight = data.clientHeight
const divWidth = data.clientWidth
const ratio = divHeight / divWidth;
const width = pdf.internal.pageSize.getWidth();
let height = pdf.internal.pageSize.getHeight();
height = ratio * width;
pdf.addImage(contentDataURL, 'PNG', 0, position, width, height);
window.open(pdf.output('bloburl', { filename: 'new-file.pdf' }), '_blank');
});
}
如果滚动条中的数据更多,您也可以使用jspdf添加页面。
如需更多参考,您可以检查此HTML2Canvas不呈现完整div,只呈现屏幕上可见的内容?
另一种解决方案:如果数据更多
async downloadPdf() {
var data = document.getElementById("pdfDownload");
$("pdfOpenHide").attr("hidden", true);
// To disable the scroll
document.getElementById("alldata").style.overflow = "inherit";
document.getElementById("alldata").style.maxHeight = "inherit";
await html2canvas(data, { scrollY: -window.scrollY, scale: 1 }).then(
canvas => {
const contentDataURL = canvas.toDataURL("image/png", 1.0);
// enabling the scroll
document.getElementById("alldata").style.overflow = "scroll";
document.getElementById("alldata").style.maxHeight = "150px";
let pdf = new jspdf("l", "mm", "a4"); // A4 size page of PDF
let imgWidth = 300;
let pageHeight = pdf.internal.pageSize.height;
let imgHeight = (canvas.height * imgWidth) / canvas.width;
let heightLeft = imgHeight;
let position = 0;
pdf.addImage(contentDataURL, "PNG", 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
while (heightLeft >= 0) {
position = heightLeft - imgHeight;
pdf.addPage();
pdf.addImage(contentDataURL, "PNG", 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
}
window.open(
pdf.output("bloburl", { filename: "new-file.pdf" }),
"_blank"
);
}
);
}
问题内容: 我目前正在使用学校管理软件,该软件通常需要导出包含和的html内容。 我已经尝试了所有可能的方法来编写代码,从而能够以一种很好的方式(最好是使用CSS)导出html数据。在这里检查了一些问题和答案之后,我尝试使用spdf,但是没有运气。 它一直在破坏我的表对齐方式,然后我读了一下,但是要实现它是我的问题,如果要使用div标签,则要捕获内容,然后发送画布以将画布导出为pdf。 这是我的代
问题内容: 我想将一些div转换为PDF,并且尝试了jsPDF库,但没有成功。看来我不明白我需要导入什么才能使库正常工作。我已经看过这些示例,但仍然无法弄清楚。我尝试了以下方法: 在jQuery之后: 用于测试目的,但我收到: 身体的第一个div 在哪里。 问题答案: 您可以按如下方式使用html中的pdf, 步骤1:将以下脚本添加到标题 步骤2:添加HTML脚本以执行jsPDF代码 对此进行自定
testdate.java:
问题内容: 我想使用PDFBox打印 由iText创建的 PDF文件 。我已经使用PDDocument类及其方法print()成功尝试了此操作。您可以在此处找到文档: http //pdfbox.apache.org/apidocs/。 (我正在使用此代码:) 方法print()很好用,但是 有一个问题:当我需要打印多个文件时,该方法要求我为每个文档选择打印机。 有什么办法只能设置一次打印机吗?
问题内容: 我想从android应用程序中打印文件。同样,在google上搜索后,我发现一些有用的信息,我将不得不在HTTP中使用IPP(Internet打印协议)。而且我是ipp的新手,但是我使用过HTTP。那么有人可以帮我吗?谁能给我一些有用的信息或链接?提前致谢 ? 问题答案: 您需要发出具有一些特殊功能的HTTP PUT请求,您必须: 使用端口631代替80(当然,除非明确指定了端口)。
我需要在cmd上打印这个字符。其UNICODE编码为U+26C0。我尝试了这个:system.out.print(“”);但在跑步中我得到了“?”角色谢谢。