none
Tamaño de páginas en flowdocument RRS feed

  • Pregunta

  • Hola

    Estoy tratando de hacer un reporte con wpf flowdocumet. pero no logro encajar una tabla en el ancho de página. Mi código es 

        Private Sub Vista()
            Dim tabla As New Table
            Dim fdoc As New FlowDocument()
            Dim BDModeloViewSource As System.Windows.Data.CollectionViewSource = CType(Me.FindResource("TablaModeloViewSource"), System.Windows.Data.CollectionViewSource)
            Dim total = CType(BDModeloViewSource.View, CollectionView).Count
            Dim TotalColumnas As Integer = 5
            ' itulo
            Dim myParagraph As New Paragraph()
            fdoc.PageWidth = 900
            ' Add some Bold text to the paragraph
            myParagraph.Inlines.Add(New Bold(New Run("Tabla de ejemplo")))
            myParagraph.Inlines.Add(New Bold(New Run("")))
    
            fdoc.Blocks.Add(myParagraph)
    
            ' tabla
            fdoc.Blocks.Add(tabla)
            tabla.CellSpacing = 0
            tabla.BorderBrush = Brushes.Black
            tabla.BorderThickness = New Thickness(0, 0, 1, 1)
    
            ' columnas son 5
            For n As Integer = 1 To TotalColumnas
                tabla.Columns.Add(New TableColumn())
            Next
            
            tabla.Columns(0).Width = New GridLength(100)
            tabla.Columns(1).Width = New GridLength(200)
            tabla.Columns(2).Width = New GridLength(100)
            tabla.Columns(3).Width = New GridLength(100)
            tabla.Columns(4).Width = New GridLength(100)
    
            ' filas ver cuantas son
            Dim trg As New TableRowGroup()
    
            For n As Integer = 1 To total
                trg.Rows.Add(New TableRow())
            Next
            tabla.RowGroups.Add(trg)
    
            ' celdas
            For Each tr As TableRow In tabla.RowGroups(0).Rows
                For Each col As TableColumn In tabla.Columns
                    Dim tc As New TableCell()
                    tc.BorderBrush = Brushes.Black
                    tc.BorderThickness = New Thickness(1, 1, 0, 0)
                    tc.TextAlignment = TextAlignment.Justify
                    tr.Cells.Add(tc)
                Next
            Next
    
            ' párrafo
            BDModeloViewSource.View.MoveCurrentToFirst()
            For n As Integer = 0 To total - 1
                tabla.RowGroups(0).Rows(n).Cells(0).Blocks.Add(New Paragraph(New Run(CStr(FechaDatePicker.SelectedDate))))
                tabla.RowGroups(0).Rows(n).Cells(1).Blocks.Add(New Paragraph(New Run(ConceptoTextBox.Text)))
                tabla.RowGroups(0).Rows(n).Cells(2).Blocks.Add(New Paragraph(New Run(DebeTextBox.Text)))
                tabla.RowGroups(0).Rows(n).Cells(3).Blocks.Add(New Paragraph(New Run(HaberTextBox.Text)))
                tabla.RowGroups(0).Rows(n).Cells(4).Blocks.Add(New Paragraph(New Run(SaldoTextBox.Text)))
                BDModeloViewSource.View.MoveCurrentToNext()
            Next
            canView.Visibility = Windows.Visibility.Visible
            Pol.Document = fdoc
    
        End Sub
    


    pero con 

     <FlowDocumentReader  x:Name="Pol" Background="Aqua" Canvas.Left="67" Canvas.Top="-4" Height="600" RenderTransformOrigin="0.5,0.5" Width="900" BorderBrush="Black" BorderThickness="3" >
                </FlowDocumentReader>

    obtengo esto

    Es decir la página parece estar sobredimencionada pero la tabla sale cortada.

    ¿Que estoy haciendo mal?

    Gracias


    Pedro López

    jueves, 15 de octubre de 2015 23:09

Respuestas

  • prueba así

            fdoc.PageHeight = 10 * 96
            fdoc.PageWidth = 8 * 96
            fdoc.MinPageHeight = 10 * 96
            fdoc.MinPageWidth = 8 * 96
            fdoc.MaxPageHeight = 10 * 96
            fdoc.MaxPageWidth = 8 * 96
    
            fdoc.ColumnWidth = 8 * 96
    

    puedes darle los valores que quieras (aquí tienen 8"x10").

    supongo que el problema que observas se debe al column width del flow document que te quedó en auto. 

    • Marcado como respuesta Pearloga viernes, 16 de octubre de 2015 18:26
    viernes, 16 de octubre de 2015 17:20

Todas las respuestas

  • prueba así

            fdoc.PageHeight = 10 * 96
            fdoc.PageWidth = 8 * 96
            fdoc.MinPageHeight = 10 * 96
            fdoc.MinPageWidth = 8 * 96
            fdoc.MaxPageHeight = 10 * 96
            fdoc.MaxPageWidth = 8 * 96
    
            fdoc.ColumnWidth = 8 * 96
    

    puedes darle los valores que quieras (aquí tienen 8"x10").

    supongo que el problema que observas se debe al column width del flow document que te quedó en auto. 

    • Marcado como respuesta Pearloga viernes, 16 de octubre de 2015 18:26
    viernes, 16 de octubre de 2015 17:20
  • Gracias AlterEgo 22

    Se solucionó perfectamente con solo poner los tamaños

    las columnas no las modifique, siguen las 5 como estaban


    Pedro López

    viernes, 16 de octubre de 2015 18:32