zzz123 发表于 2023-5-5 11:32:29

spread导出PDF带有单元格的背景图片

目前想要导出单元格的背景图片,通过直接导出PDF无法导出,通过 PrintBackground 方法可以绘制背景图片,但是这个方法绘制的背景图片在每一页都有,想问下老师能不能在每一页都绘制不同的背景图片Private Sub fs_PrintBackground(sender As Object, e As PrintBackgroundEventArgs) Handles fs.PrintBackground
      fs.ActiveSheet.FrozenRowCount = 0
      Dim saveState As System.Drawing.Drawing2D.GraphicsState = e.Graphics.Save()
      Width = 0
      If fs.ActiveSheet.RowCount > 0 Then
            For i As Integer = 0 To fs.ActiveSheet.ColumnCount - 1
                Width += fs.ActiveSheet.GetColumnWidth(i)
            Next
      End If

      For i As Integer = 0 To fs.ActiveSheet.RowCount - 1
            If TypeName(fs.ActiveSheet.Cells(i, 0).CellType).Equals("TextCellType") Then
                Dim cellType As TextCellType = fs.ActiveSheet.Cells(i, 0).CellType()
                If cellType.BackgroundImage IsNot Nothing Then
                  Dim rt As Rectangle = fs.GetCellRectangle(0, 0, i, 0)
                  rt.Height = fs.ActiveSheet.Rows(i).Height
                  rt.Width = cellType.BackgroundImage.Image.Width * (fs.ActiveSheet.Rows(i).Height / cellType.BackgroundImage.Image.Height)
                  rt.X = (Width - rt.Width) / 2
                  e.Graphics.SetClip(rt)
                  e.Graphics.DrawImage(cellType.BackgroundImage.Image, rt)
                End If
            End If
      Next
      e.Graphics.Restore(saveState)
    End Sub

Richard.Ma 发表于 2023-5-5 18:02:17

这个事件是在每个page被打印的时候都会触发的,你可以通过PageNumber属性看看是否能拿到默认的页码。然后再以此做判断。分别给Graphics设置不同的图片

zzz123 发表于 2023-5-5 18:05:17

那怎么判断单元格在哪个PageNumber上呢?

Richard.Ma 发表于 2023-5-5 18:36:38

没法在这个事件中判断单元格

zzz123 发表于 2023-5-5 22:34:45

那单元格中的背景图片就没有办法导出来了吗?我看打印是可以打印出背景图片的,为啥改下属性 PrintInfo.PrintToPdf = True 就不能导出背景图片了呢?

Richard.Ma 发表于 2023-5-6 09:16:16

你的“单元格中的背景图片”是怎么添加的呢?普通单元格并没有办法添加背景图片的

zzz123 发表于 2023-5-6 09:47:21

是用 TextCellType 来设置背景图片的

Richard.Ma 发表于 2023-5-6 18:51:19

了解了,这个背景图目前确实不支持导出pdf,和直接打印出来不一样

zzz123 发表于 2023-5-8 09:35:22

好吧,我暂时通过修改打印机直接打印PDF来解决

Richard.Ma 发表于 2023-5-8 12:25:44

嗯,也是一个思路。通过某些虚拟打印机就行
页: [1]
查看完整版本: spread导出PDF带有单元格的背景图片