This is a migrated thread and some comments may be shown as answers.

RadFixedDocument - Landscape & co

3 Answers 594 Views
PdfProcessing
This is a migrated thread and some comments may be shown as answers.
Vincent
Top achievements
Rank 1
Iron
Iron
Vincent asked on 25 Nov 2016, 01:32 PM

Hi from France ! (and excuse me for my bad english)

After 3 days on RadFixedDocument to make a PDF file, i need help !

I must make a PDF File based on my Asp.net Vb.net website (attached file)

i must make a document with "same" design : Landscape document and grids on left and on right

Dim document As New Telerik.Windows.Documents.Fixed.Model.RadFixedDocument
document.DocumentInfo.Author = "(c) Francelot"
document.DocumentInfo.Title = "Bilan Gestion"
 
 
Dim ex As New Telerik.Windows.Documents.Fixed.Model.Editing.RadFixedDocumentEditor(document)
 
ex.SectionProperties.PageRotation = Telerik.Windows.Documents.Fixed.Model.Data.Rotation.Rotate90
ex.InsertSectionBreak()
ex.InsertRun("TEST")
 
ex.InsertLine("Bilan Gestion")
 
ex.Dispose()

 

After this i got landscape document but my text is right to left (write not landscape, just rotate page ...) 

 

Thank for your help !

Vincent.

3 Answers, 1 is accepted

Sort by
0
Martin Ivanov
Telerik team
answered on 29 Nov 2016, 01:52 PM
Hello Vencent,

Note that the PageRotation property will rotate the section and also its content. Instead, you can try setting the PageSize of the sections. This way you can define a landscape size. For example:
var ex = new RadFixedDocumentEditor(document);
ex.SectionProperties.PageSize = new Size(840, 480);

I hope this helps.

Regards,
Martin
Telerik by Progress

0
Vincent
Top achievements
Rank 1
Iron
Iron
answered on 29 Nov 2016, 03:54 PM

Hello Martin,

Since my pdf is 80% finish. (result see in 4 png attached files)

my boss wants now adding Page number on pdf, but how... not found...

At the beginning he want 2 tables  ("want" png attached file) :

  • At Left : "Dépenses" table
  • At Right : "Recettes" table

Perhaps something must be improuved

Thanks for your help.

This is my code :

Dim document As New RadFixedDocument
Using Editor As Editing.RadFixedDocumentEditor = New Editing.RadFixedDocumentEditor(document)
    With Editor
        .SectionProperties.PageSize = A4P
        .SectionProperties.PageMargins = New Telerik.Windows.Documents.Primitives.Padding(48.768)
                 
                'Titre Genéral
        .ParagraphProperties.HorizontalAlignment = Editing.Flow.HorizontalAlignment.Center
        .CharacterProperties.FontSize = 34
        .InsertParagraph()
        .InsertLine("Bilan Gestion")
                 
'     ... here call my generate  header
For Each bilan In Bilans
.CharacterProperties.FontSize = 18
                        .InsertLine(String.Format(maskTypeBilan, Francelot.BilanGestion.Utils.ConvertTypeSousBilanToStr(bilan.TypeBilan)))
 
                        'Depenses
                        .CharacterProperties.FontSize = 16
 
                        .InsertLineBreak()
 
                        .InsertLine("Dépenses")
                        .CharacterProperties.FontSize = 14
 
                        'Appel Génération Table
                        For Each Depense In bilan.Depenses.Repartition
                            Dim depenseTable As Editing.Tables.Table = Depense.ForPDF()
                            .InsertTable(depenseTable)
                        Next
 
                        'Recettes
                        .CharacterProperties.FontSize = 16
                        .InsertLineBreak()
                        .InsertLine("Recettes")
                        .CharacterProperties.FontSize = 14
 
                        'Appel Génération Table
                        Dim grpList As New List(Of String)
                        For Each Recette In bilan.Recettes.Repartition
                            If Not IsNothing(Recette.NomGroupe) AndAlso Not grpList.Contains(Recette.NomGroupe) Then
                                grpList.Add(Recette.NomGroupe)
                                .InsertLine(Recette.NomGroupe)
                            End If
 
                            Dim recetteTable As Editing.Tables.Table = Recette.ForPDF()
                            .InsertTable(recetteTable)
                        Next
                                         Next
       End With
End Using

 

My Table Generator :

Public Function ForPDF() As Editing.Tables.Table
 
            Dim colorBorder As New ColorSpaces.RgbColor(0, 0, 0)
            Dim colorTableHeader As New ColorSpaces.RgbColor(225, 225, 225)
 
            Dim border As New Editing.Border(1, colorBorder)
            Dim borders As New Editing.Tables.TableCellBorders(border, border, border, border)
            Dim paddingHeader As New System.Windows.Thickness(6, 4, 6, 4)
            Dim paddingData As New System.Windows.Thickness(6, 4, 6, 4)
            Dim libelleSize As Integer = 400
            Dim dataSize As Integer = 150
 
 
            Dim t As New Editing.Tables.Table
            t.LayoutType = Editing.Flow.TableLayoutType.AutoFit
            t.DefaultCellProperties.Borders = borders
 
            Dim rHeader As Editing.Tables.TableRow = t.Rows.AddTableRow
 
            'Headers
            With rHeader
                Dim b As Editing.Block
                For Each col As DataColumn In Repartition.Columns
 
                    If Not NoPrintColName.Contains(col.ColumnName) Then
                        Dim maHeaderCell As Editing.Tables.TableCell = .Cells.AddTableCell()
                        maHeaderCell.Background = colorTableHeader
                        maHeaderCell.Padding = paddingHeader
                        b = maHeaderCell.Blocks.AddBlock
                        Dim entete As String = Nothing
 
                        If col.ColumnName <> LibellecolName Then
                            b.HorizontalAlignment = Editing.Flow.HorizontalAlignment.Center
                            maHeaderCell.PreferredWidth = dataSize
                            entete = col.Caption
                        Else
                            b.HorizontalAlignment = Editing.Flow.HorizontalAlignment.Left
                            maHeaderCell.PreferredWidth = libelleSize
                            entete = col.Caption.ToUpper
                        End If
                        b.InsertText(entete)
                    End If
                Next
            End With
 
            'Rows
            Dim monTexte As String = Nothing
            Dim rowSpanned As Boolean = False
            Dim ProvisionFirstDataColumnPassed As Boolean = False
 
            For Each row As DataRow In Repartition.Rows
                Dim tr As Editing.Tables.TableRow = t.Rows.AddTableRow
                With tr
                    For Each col As DataColumn In Repartition.Columns
                        If Not NoPrintColName.Contains(col.ColumnName) Then
                            Dim maCell As Editing.Tables.TableCell = .Cells.AddTableCell()
                            maCell.Padding = paddingData
                            Dim b As Editing.Block = maCell.Blocks.AddBlock()
 
                            'Si Ligne Provision
                            If Repartition.Columns.Contains(ColNameTypeRow) AndAlso row(ColNameTypeRow) = "P" Then
 
                                If col.ColumnName = LibellecolName Then
                                    monTexte = row(col.ColumnName).ToString()
                                    b.HorizontalAlignment = Editing.Flow.HorizontalAlignment.Right  'Libelle
                                Else
                                    If ProvisionFirstDataColumnPassed Then
                                        maCell.ColumnSpan = 2
                                        rowSpanned = True
                                        monTexte = String.Empty
                                    Else
                                        monTexte = String.Format("{0:N2}", 111111) 'Debug Publication Forum
                                        'monTexte = String.Format("{0:N2}", row(col.ColumnName))
                                        ProvisionFirstDataColumnPassed = True
                                    End If
                                    b.HorizontalAlignment = Editing.Flow.HorizontalAlignment.Right
                                End If
 
                            Else
 
                                If col.ColumnName = LibellecolName Then
                                    monTexte = row(col.ColumnName).ToString()
                                    b.HorizontalAlignment = Editing.Flow.HorizontalAlignment.Left 'Libelle
                                Else
                                    monTexte = String.Format("{0:N2}", 111111) 'Debug Publication Forum
                                    'monTexte = String.Format("{0:N2}", row(col.ColumnName))
                                    b.HorizontalAlignment = Editing.Flow.HorizontalAlignment.Right 'DATA
                                End If
 
                            End If
                            b.InsertText(monTexte)
                            If rowSpanned Then
                                ProvisionFirstDataColumnPassed = False
                                rowSpanned = False
                                Exit For
                            End If
                        End If
                    Next
                End With
            Next
 
            Return t
 
        End Function
0
Martin Ivanov
Telerik team
answered on 01 Dec 2016, 02:14 PM
Hello Vincent,

There is no built-in support for page number. To add such you will need create a text element and insert it in the pdf document. 

To add two tables on a single row you can wrap them into another table with two columns. Place the one table in the first column and the second one in the second column.

Regards,
Martin
Telerik by Progress

Tags
PdfProcessing
Asked by
Vincent
Top achievements
Rank 1
Iron
Iron
Answers by
Martin Ivanov
Telerik team
Vincent
Top achievements
Rank 1
Iron
Iron
Share this question
or