找回密码
 立即注册

QQ登录

只需一步,快速开始

Fu_2011_ok

初级会员

1

主题

5

帖子

415

积分

初级会员

积分
415

活字格认证

最新发帖
Fu_2011_ok
初级会员   /  发表于:2011-3-1 14:47  /   查看:6979  /  回复:9
怎么在导出pdf后的border都变了呢

11.jpg

80.42 KB, 下载次数: 173

preview

22.jpg

49.05 KB, 下载次数: 145

after print

9 个回复

倒序浏览
gw0506
超级版主   /  发表于:2011-3-1 15:02:00
沙发
可以给我发个demo么?
回复 使用道具 举报
Fu_2011_ok
初级会员   /  发表于:2011-3-1 15:06:00
板凳
this.fpSpread1.ActiveSheet.SetInsideBorder(new FarPoint.Win.Spread.Model.CellRange(0, 2, RowIndex, 13), new LineBorder(Color.Black, 1, true, true, true, true));
            this.fpSpread1.ActiveSheet.Cells[1, 1].Border = new LineBorder(Color.Black, 2, false, true, true, true);
            this.fpSpread1.ActiveSheet.Cells[1, 2].Border = new LineBorder(Color.Black, 2, false, true, false, true);
            this.fpSpread1.ActiveSheet.Cells[2, 1].Border = new LineBorder(Color.Black, 2, false, false, true, false);
            foreach (int lineNo in lineList)
            {
                this.fpSpread1.ActiveSheet.Cells[lineNo, 1].Border = new LineBorder(Color.Black, 2, false, true, true, false);
                this.fpSpread1.ActiveSheet.Cells[lineNo, 2].Border = new LineBorder(Color.Black, 2, false, true, false, true);
                this.fpSpread1.ActiveSheet.Cells[lineNo + 1, 1].Border = new LineBorder(Color.Black, 2, false, false, true, false);
            }
            lineList.Clear();
            this.fpSpread1.ActiveSheet.Cells[RowIndex, 1].Border = new LineBorder(Color.Black, 2, false, true, true, true);
            this.fpSpread1.ActiveSheet.Cells[RowIndex, 2].Border = new LineBorder(Color.Black, 2, false, true, false, false);
            this.fpSpread1.ActiveSheet.Cells[RowIndex, 3, RowIndex, 14].Border = new LineBorder(Color.Black, 2, false, true, false, false);

设置border的代码
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-3-1 15:17:00
地板
你的代码里有两个变量,RowIndex,lineList,我无法拿到,所以不能完全跟你的效果相同,不过打印到PDF和预览时一样的。

你说的border不一样,时说gridline不同么?
回复 使用道具 举报
Fu_2011_ok
初级会员   /  发表于:2011-3-1 17:09:00
5#
PrintInfo pi = new PrintInfo();
            pi.Margin.Footer = 49;
            pi.Margin.Header = 49;// 12;
            pi.Margin.Left = 320;// 350;
            pi.Margin.Top = 4;// 0;
            pi.Margin.Right = 0;
            pi.Margin.Bottom = 0;
            pi.PrintToPdf = true;
            pi.Orientation = FarPoint.Win.Spread.PrintOrientation.Landscape;
            pi.Centering = Centering.Vertical;
            System.Drawing.Printing.PaperSize pSize = new System.Drawing.Printing.PaperSize("A4", 840, 1180);
            pi.PaperSize = pSize;
            pi.ShowBorder = false;
            pi.ShowColor = true;
            pi.PageOrder = PrintPageOrder.Auto;
            pi.ShowColumnHeader = FarPoint.Win.Spread.PrintHeader.Hide;
            pi.ShowGrid = false;
            pi.ShowRowHeader = FarPoint.Win.Spread.PrintHeader.Hide;
            pi.PrintType = PrintType.PageRange;
            pi.ZoomFactor = 0.66f;// 0.66f;
            pi.UseSmartPrint = true;
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-3-1 17:30:00
6#
你好,我用你的代码,仍然无法重现该问题。
你最好发个完整的demo过来。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-3-1 17:43:00
7#
另外,我注意到,你调整了ZoomFactor。
以前遇到类似的客户反馈的情况,当ZoomFactor是一个比较复杂的值时,由于计算精度的问题,会导致打印出来的边框出现偏差。你可以试试不设置ZoomFactor,如果问题解决,再调正该属性到一个合适的值。
回复 使用道具 举报
Fu_2011_ok
初级会员   /  发表于:2011-3-2 16:28:00
8#

example

此示例导出pdf  ,border 与spread里面显示的不一样
回复 使用道具 举报
Fu_2011_ok
初级会员   /  发表于:2011-3-2 16:31:00
9#

example

此示例导出pdf,  border与spread里面显示的不一致

My.zip

101.34 KB, 下载次数: 167

zip

回复 使用道具 举报
gw0506
超级版主   /  发表于:2011-3-2 17:41:00
10#
经检查,有以下两点建议:
1. demo中使用了MS PGothic字体,由于我本机没有改字体,导出PDF并打开是,会提示缺少字体包,同时打印出来的PDFborder有问题。
    我将该字体换成本机拥有的字体,问题解决。
  1. this.fpSpread1_Sheet1.Cells[3, 2].Font = new Font("MS PGothic", 16);
复制代码

    请确认你的机器含有该字体。通常该字体在日文环境的操作系统下是自带的。

2. demo中使用了ComplexBorder,导出到PDF,在调整为本机拥有的字体情况下,Border显示不正常。
    建议替换问LineBorder,效果相同,同时问题解决。
  1. this.fpSpread1_Sheet1.Cells[1, 1, 11, 8].Border = new LineBorder(Color.Black, 1);
复制代码

希望以上对你有帮助。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部