Excel模板自身打印的时候显示一页,Spreadjs导入后打印不在一页
模板导入前打印预览(一页)导入后打印预览(两页)
瑞雪 发表于 2024-12-4 11:28
能将保存出来的pdf发给我一份吗?我看下差在哪里了
我使用您提供的代码片段中的导出功能相关代码,完全遵循您在代码中设置的打印选项,我未做修改或增删,打印预览效果如下图所示:
据您所说在print()方法弹出的对话框中页边距设置为”无“即可打印在同页,而设置为”默认“即打印为两页。这个是正常的,您通过代码设置的页边距对sheet有效,而对话框中的页边距设置选项为浏览器的打印设置选项,本来设置了页边距,再在浏览器打印中设置默认页边距,那么,页边距将变大,导致内容无法呈现在一页。
所以,为了确保打印效果符合预期,您在sheet上设置了页边距后便可以不在对话框中设置页边距。
附件即以您的代码片段运行后导出的PDF文件,分别为纵向和横向,您可以看到页脚均与页面内容在同页,您可以比对下。
您好!需要您提供一个能够复现问题的demo,我将据此分析。 Wilson.Zhang 发表于 2024-11-29 17:35
您好!需要您提供一个能够复现问题的demo,我将据此分析。
demo上传了 瑞雪 发表于 2024-12-2 13:58
demo上传了
我使用最新17.1.10版本导入您提供的xlsx文件,如下图所示,可以看到打印预览呈一页。
请教下您使用的版本,如果是比17.1.10较早的版本,您可以在17.1.10版本亲测下看是否还会复现。如果问题不再复现,可以升级版本后使用。
Wilson.Zhang 发表于 2024-12-2 17:17
我使用最新17.1.10版本导入您提供的xlsx文件,如下图所示,可以看到打印预览呈一页。
我用的17.1.5,使用的是spread.print()打印方式打印的,你截图上边我的页脚没有了
我的代码如下:
<script type="text/javascript">
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("printArea1"));
var excelIo = new GC.Spread.Excel.IO();
var excelFilePath = "https://localhost:7218/EXCEL/555.xlsx";
var xhr = new XMLHttpRequest();
xhr.open('GET', excelFilePath, true);
xhr.responseType = 'blob';
xhr.onload = function (e) {
if (this.status == 200) {
// get binary data as a response
var blob = this.response;
// convert Excel to JSON
excelIo.open(blob, function (json) {
var workbookObj = json;
spread.fromJSON(workbookObj);
}, function (e) {
// process error
alert(e.errorMessage);
}, {});
}
};
xhr.send();
//spread.name = "555.xlsx";
document.getElementById('print1').onclick = function () {
var sheet = spread.sheets;
var printInfo = sheet.printInfo();
printInfo.showRowHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);
printInfo.showColumnHeader(GC.Spread.Sheets.Print.PrintVisibilityType.hide);
var margintop = printInfo.margin().top;
var marginbottom = printInfo.margin().bottom;
var marginleft = printInfo.margin().left;
var marginright = printInfo.margin().right;
var marginheader = printInfo.margin().header;
var marginfooter = printInfo.margin().footer;
printInfo.margin({ top: 20, bottom: 20, left: 20, right: 20, header: 1, footer: 1 });
printInfo.showBorder(false);
var printHeaderRight = printInfo.pageHeaderFooter().normal.header.right;
printHeaderRight = printHeaderRight.replaceAll("\r\n", "")
var printFootRight = printInfo.pageHeaderFooter().normal.footer.right;
if (printFootRight == "&F") {
printFootRight = "調査計画表(2)_51_00_20241122145348.xlsx";
}
var orientation = spread.sheets.printInfo().orientation();
if (orientation == 2) {
printInfo.orientation(GC.Spread.Sheets.Print.PrintPageOrientation.landscape);
} else {
printInfo.orientation(GC.Spread.Sheets.Print.PrintPageOrientation.portrait);
}
printInfo.pageHeaderFooter({
normal: {
header: {
left: "",
center: "",
right: printHeaderRight
},
footer: {
center: "",
right: '調査計画表(2)_51_00_20241122145348.xlsx'
}
}
});
//spread.name = "555.xlsx";
spread.print();
};
</script>
打印出来就是两页,页脚移动到第二页了
本帖最后由 Wilson.Zhang 于 2024-12-4 09:14 编辑
瑞雪 发表于 2024-12-3 10:00
我用的17.1.5,使用的是spread.print()打印方式打印的,你截图上边我的页脚没有了
我的代码如下:
根据您提供的代码片段,了解到您对sheet设置了居于页尾右下角的页脚,且内容为”調査計画表(2)_51_00_20241122145348.xlsx“。我在17.1.5和最新17.1.10版本测试均未能复现您描述的问题,无论是横向打印还是纵向打印,都可以连同页脚一起显示在一页内,如下图所示:
横向打印:
纵向打印:
或许您可以排查下浏览器版本,我测试使用的是chrome浏览器,版本详情如下图所示:
Wilson.Zhang 发表于 2024-12-4 09:13
根据您提供的代码片段,了解到您对sheet设置了居于页尾右下角的页脚,且内容为”調査計画表(2)_51_00_ ...
我的是131.0.6778.86
浏览器有设置吗?打印页出来后,详细设定里边的页边距。
我这边手动设置无页边距,打印出来在一页,如果设置的默认,打印出来就是两页 Wilson.Zhang 发表于 2024-12-4 09:13
根据您提供的代码片段,了解到您对sheet设置了居于页尾右下角的页脚,且内容为”調査計画表(2)_51_00_ ...
能将保存出来的pdf发给我一份吗?我看下差在哪里了 Wilson.Zhang 发表于 2024-12-4 15:37
我使用您提供的代码片段中的导出功能相关代码,完全遵循您在代码中设置的打印选项,我未做修改或增删,打 ...
好的 了解了,谢谢啦
页:
[1]
2