找回密码
 立即注册

QQ登录

只需一步,快速开始

远光软件

初级会员

47

主题

119

帖子

378

积分

初级会员

积分
378

活字格认证

[已处理] 关于SpreadJS打印

远光软件
初级会员   /  发表于:2017-1-24 15:56  /   查看:5930  /  回复:15
本帖最后由 远光软件 于 2017-1-24 15:58 编辑

使用SpreadJS生成pdf,页眉页脚设置后没有效果,请帮忙解决一下。代码如下:            var printMargin = {
                top: 10,
                bottom: 10,
                left: 10,
                right: 10,
                header: 100,
                footer: 100
            };
            printInfo.margin(printMargin);

            printInfo.headerCenter("页眉");
            printInfo.footerCenter("页脚");


15 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-24 16:38:31
沙发
您好 margin 的top 大于header ,header 才能显示下

var printMargin = {
                top: 120,
                bottom: 120,
                left: 10,
                right: 10,
                header: 100,
                footer: 100
            };
回复 使用道具 举报
远光软件
初级会员   /  发表于:2017-1-25 10:03:57
板凳
页眉页脚现在可以显示了,不过设置了
printInfo.showBorder(false);
printInfo.showGridLine(false);
但是外框的线还是显示出来了,什么原因?
58880754e4b0332446adcf89.jpg
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-25 10:24:38
地板
showGridLine 有个bug您需要导出json后再处理下


        var spreadJson = spread.toJSON();
        for (var pro in spreadJson.sheets) {
            var sheet = spreadJson.sheets[pro];
            if (sheet.printInfo) {
                if (!sheet.printInfo.showGridLine) {
                    sheet.printInfo.showGridLine = false;
                }
                if (!sheet.printInfo.showBorder ) {
                    sheet.printInfo.showBorder = false;
                }
            }
        }
回复 使用道具 举报
远光软件
初级会员   /  发表于:2017-1-25 10:47:45
5#
使用以下代码处理后,问题依旧。
var spreadJson = spread.toJSON();
        for (var pro in spreadJson.sheets) {
            var sheet = spreadJson.sheets[pro];
            if (sheet.printInfo) {
                if (!sheet.printInfo.showGridLine) {
                    sheet.printInfo.showGridLine = false;
                }
                if (!sheet.printInfo.showBorder ) {
                    sheet.printInfo.showBorder = false;
                }
            }
        }
spread.fromJSON(spreadJson);
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-25 11:45:19
6#
我这里测试没有问题的。
有bug的也是showGridLine  。 showborder 如果用代码设置了导出pdf也是不会显示的。
printInfo.showBorder(false)

下面的代码是对ExcelSample 那个Demo的修改。让默认不显示列头以及边框。测试过都是没有问题的。
如果您还有问题,可以发个Demo过来。

  1.     $("#export_pdf").click(function () {
  2.         var spread = GC.Spread.Sheets.findControl($("#ss")[0]);
  3.         var settings = getSavePDFSettings();
  4.         var sheetIndexes = getSheetList(spread);


  5.         var spreadJson = spread.toJSON();
  6.       
  7.         for (var pro in spreadJson.sheets) {
  8.             var sheet = spreadJson.sheets[pro];
  9.             if (sheet.printInfo) {
  10.                 if (!sheet.printInfo.showGridLine) {
  11.                     sheet.printInfo.showGridLine = false;
  12.                 }
  13.                 if (!sheet.printInfo.showColumnHeader) {
  14.                     sheet.printInfo.showColumnHeader = 1;
  15.                 }
  16.                 if (!sheet.printInfo.showRowHeader) {
  17.                     sheet.printInfo.showRowHeader = 1;
  18.                 }

  19.                 sheet.printInfo.showBorder = false;
  20.             }
  21.         }

  22.         var dataObj = {
  23.             "spread": spreadJson,
  24.             "exportFileType": "pdf",
  25.             "pdf": {
  26.                 "sheetIndexes": sheetIndexes,
  27.                 "setting": settings
  28.             }
  29.         };
  30.         setExportFileName(dataObj);
  31.         var content = JSON.stringify(dataObj);
  32.         dataObj = null;
  33.         var serverUrl = getExportServerUrl();
  34.         exportFile(serverUrl, content);
  35.     });
复制代码
回复 使用道具 举报
远光软件
初级会员   /  发表于:2017-1-25 11:50:00
7#
dexteryao 发表于 2017-1-25 11:45
我这里测试没有问题的。
有bug的也是showGridLine  。 showborder 如果用代码设置了导出pdf也是不会显示的 ...

我使用的是SpreadJSv9,你用的是哪个版本的?
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-25 12:27:29
8#
V 9也是测试过的。
导出json的页面一定要引用
  <script src="~/Scripts/gcspread.sheets.print.9.40.20161.0.min.js" type="text/javascript"></script>
   
回复 使用道具 举报
远光软件
初级会员   /  发表于:2017-1-25 14:06:46
9#
我调用的是SpreadJS中的dll来生成pdf的,其中的打印信息是在javascript中传递进去的,会不会dll也有bug。代码如下:
MemoryStream memory = new MemoryStream();
Exporter exporter = new Exporter(spreadJson);
PdfExportSettings setting = new PdfExportSettings();
exporter.SavePdf(memory, setting, new int[] { 0 });
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-1-25 14:55:54
10#
本帖最后由 dexteryao 于 2017-1-25 14:58 编辑

showBorder 是没有bug的,showGridLine有bug。 是这样,运行一下产品包中的ExcelIOSample 示例,然后把我下面的代码替换一下。试试看导出是否还有边框和gridline。 ExcelIOSample_V9.zip (1.22 MB, 下载次数: 64)
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部