I ve got a problem with a Migradoc Pdf Document rendered in a stream.
In IE 9 adobe reader send a message that my pdf has got error and cannot be opened
but in the adobe application i can open it without any problem...
Do you have any idea of what could be the problem.
(Sorry for my poor english)
here is my generation Code :
Code:
Dim idBL As Integer
If Integer.TryParse(Request.QueryString("IdBL"), idBL) Then
'1- on charge les infos du BL
Dim oDtBL As DataTable = AccesBD.loadBL(idBL)
If Not oDtBL Is Nothing Then
If Not oDtBL.Rows.Count = 0 Then
Dim row As DataRow = oDtBL.Rows(0)
Dim idSociete As Integer = CInt(row.Item(1))
Dim sClient As String = AccesBD.getNomSociete(idSociete)
Dim idDestinataire As Integer = CInt(row.Item(2))
Dim bDestCRM As Boolean = CBool(row.Item(3))
Dim sNoSuivi As String = CStr(row.Item(4))
Dim sTypeSuivi As String = CStr(row.Item(5))
Dim sDateBL As String = CStr(CDate(row.Item(6)).ToShortDateString)
Dim sCommentaire As String = CStr(row.Item(7))
Dim sContactOrnicar As String = CStr(row.Item(9))
'2 - on récupére les infos du destinataire
Dim oDtDestinataire As DataTable = AccesBD.loadDestinataireBL(idDestinataire, bDestCRM)
If Not oDtDestinataire Is Nothing Then
If Not oDtDestinataire.Rows.Count = 0 Then
row = oDtDestinataire.Rows(0)
Dim sPrenom As String = CStr(row.Item(0))
Dim sNom As String = CStr(row.Item(1))
Dim sTitreDest As String = CStr(Items(2))
Dim sTelephone As String = CStr(row.Item(3))
Dim sAdresse As String = CStr(row.Item(4))
Dim sCP As String = CStr(row.Item(5))
Dim sVille As String = CStr(row.Item(6))
Dim oDtLignes = AccesBD.getLignesBl(idBL)
If Not oDtLignes Is Nothing Then
If Not oDtLignes.Rows.Count = 0 Then
'3 - on peut commmencer a formatter le PDF
Dim doc As Document = New Document()
' info du document
doc.Info.Title = "Bon de Livraison n°" & idBL & " du" & sDateBL & " Client : " & sClient
doc.Info.Author = "Ornicar"
'marges du document
doc.DefaultPageSetup.LeftMargin = 40
doc.DefaultPageSetup.RightMargin = 40
doc.DefaultPageSetup.BottomMargin = 15
doc.DefaultPageSetup.TopMargin = 30
Dim styl As Style = doc.Styles("Normal")
styl.Font.Name = "Arial"
styl.Font.Size = 10
Dim style_logo As Style = doc.AddStyle("logo", "Normal")
style_logo.Font.Size = 5
style_logo.Font.Name = "Arial"
style_logo.Font.Color = Black
'partie logo et date
Dim main_Section As Section = doc.AddSection()
Dim tab_Logo As Table = main_Section.AddTable
' tab_Logo.Borders.Color = Colors.Violet
Dim col_tabl_Logo_Left As Column = tab_Logo.AddColumn
With col_tabl_Logo_Left
.Width = 150
End With
Dim col_tab_Logo_Empty As Column = tab_Logo.AddColumn
With col_tab_Logo_Empty
.Width = 200
End With
Dim col_tabl_Logo_Right As Column = tab_Logo.AddColumn
With col_tabl_Logo_Right
.Width = 150
End With
Dim tab_Logo_Row As Row = tab_Logo.AddRow
With tab_Logo_Row
.Height = 75
End With
Dim para As Paragraph = tab_Logo_Row.Cells(0).AddParagraph
tab_Logo_Row.Cells(0).Borders.Color = Colors.Black
With para
.AddImage(Parametres.CHEMINIMAGE & "Logo_Ornicar_n&b_120px.jpg")
.Style = "logo"
.AddLineBreak()
.AddText("ORNICAR SAS au capital de 219600 €")
.AddLineBreak()
.AddText("441 433 075 RCS GRENOBLE")
.AddLineBreak()
.AddText("450 avenue de l'Europe 38330 MONTBONNOT")
.Format.Alignment = ParagraphAlignment.Center
End With
Dim paraDate As Paragraph = tab_Logo_Row.Cells(2).AddParagraph
With paraDate
.AddText("Bon de Livraison N° : " & idBL)
.AddLineBreak()
.AddText("Date : " & sDateBL)
.AddLineBreak()
.Format.Alignment = ParagraphAlignment.Left
End With
' partie adresse
Dim tab_adresse As Table = main_Section.AddTable
Dim col_adr1 As Column = tab_adresse.AddColumn
With col_adr1
.Width = 170
End With
Dim col_adr2 As Column = tab_adresse.AddColumn
With col_adr2
.Width = 250
.Format.SpaceAfter = 50
End With
Dim tab_adresse_row As Row = tab_adresse.AddRow
Dim par_adr1 As Paragraph = tab_adresse_row.Cells(0).AddParagraph
With par_adr1
.AddText("Contact : " & sContactOrnicar)
.AddLineBreak()
.AddText("Tel : 04 76 04 16 07")
.AddLineBreak()
.AddText("Client : " & sClient)
End With
Dim par_adr2 As Paragraph = tab_adresse_row.Cells(1).AddParagraph
With par_adr2
.AddText("Adresse de Livraison :")
.AddLineBreak()
If bDestCRM Then
.AddText(sTitreDest)
.AddLineBreak()
.AddText("A l'attention de " & sPrenom & sNom)
Else
.AddText(sNom)
End If
.AddLineBreak()
.AddText(sAdresse)
.AddLineBreak()
.AddText(sCP & " " & sVille)
.AddLineBreak()
.AddText("Tel du contact : " & sTelephone)
.Format.Font.Size = 13
End With
'Dim style_header As Style = doc.AddStyle("header", "Normal")
Dim paraTitreBL As Paragraph = main_Section.AddParagraph
With paraTitreBL
.Format.Shading.Color = Colors.Black
.Format.Font.Color = Colors.White
.Format.Alignment = ParagraphAlignment.Center
.AddText("BON DE LIVRAISON")
.Format.SpaceAfter = 25
End With
Dim paraTransporteur As Paragraph = main_Section.AddParagraph
With paraTransporteur
.AddText(sTypeSuivi & " : " & sNoSuivi)
.Format.Alignment = ParagraphAlignment.Center
.Format.Font.Color = Colors.Red
.Format.SpaceAfter = 25
End With
'table des Lignes de BL
Dim tabDetail As Table = main_Section.AddTable
Dim col_det1 As Column = tabDetail.AddColumn
With col_det1
.Width = 200
End With
Dim col_det2 As Column = tabDetail.AddColumn
With col_det2
.Width = 200
End With
Dim col_det3 As Column = tabDetail.AddColumn
With col_det3
.Width = 50
End With
Dim col_det4 As Column = tabDetail.AddColumn
With col_det4
.Width = 50
End With
Dim tabDetail_Header As Row = tabDetail.AddRow
With tabDetail_Header
.Format.Shading.Color = Colors.Black
.Format.Font.Color = Colors.White
End With
tabDetail_Header.Cells(0).AddParagraph("DESIGNATION")
tabDetail_Header.Cells(1).AddParagraph("REF.")
tabDetail_Header.Cells(2).AddParagraph("QTE")
tabDetail_Header.Cells(3).AddParagraph("RàL")
' on rajoute les lignes
Dim iTotal As Integer = 0
Dim iTotalRal As Integer = 0
Dim _color As MigraDoc.DocumentObjectModel.Color = Colors.WhiteSmoke
For Each oRow As DataRow In oDtLignes.Rows
If _color = Colors.WhiteSmoke Then
_color = Colors.White
Else
_color = Colors.WhiteSmoke
End If
Dim sDesignation As String = CStr(oRow.Item(0))
Dim sRef As New String("")
If Not IsDBNull(oRow.Item(1)) Then sRef = CStr(oRow.Item(1))
Dim iQte As Integer = CInt(oRow.Item(2))
Dim iRal As Integer = CInt(oRow.Item(3))
Dim sCom As New String("")
If Not IsDBNull(oRow.Item(4)) Then sCom = CStr(oRow.Item(4))
Dim myrow As Row = tabDetail.AddRow
With myrow
.Shading.Color = _color
End With
myrow.Cells(0).AddParagraph(sDesignation)
myrow.Cells(1).AddParagraph(sRef)
With myrow.Cells(2)
.AddParagraph(iQte)
.Format.Alignment = ParagraphAlignment.Center
End With
With myrow.Cells(3)
.AddParagraph(iRal)
.Format.Alignment = ParagraphAlignment.Center
End With
iTotal += iQte
iTotalRal += iRal
If Not String.IsNullOrEmpty(sCom) Then
Dim rowCom As Row = tabDetail.AddRow
With rowCom
.Shading.Color = _color
End With
rowCom.Cells(0).AddParagraph(sCom)
rowCom.Cells(0).MergeRight = 3
End If
Next
Dim rowTotal As Row = tabDetail.AddRow
With rowTotal
.Format.Alignment = ParagraphAlignment.Right
.Shading.Color = Colors.Black
.Format.Font.Color = Colors.White
End With
With rowTotal.Cells(1)
.AddParagraph("Total :")
End With
rowTotal.Cells(2).AddParagraph(iTotal)
rowTotal.Cells(2).Format.Alignment = ParagraphAlignment.Center
rowTotal.Cells(3).AddParagraph(iTotalRal)
rowTotal.Cells(3).Format.Alignment = ParagraphAlignment.Center
'Commentaire éventuel
Dim parCom As Paragraph = main_Section.AddParagraph
With parCom
.Format.Alignment = ParagraphAlignment.Center
.AddText(sCommentaire)
.Format.SpaceAfter = 10
End With
Dim tableCachet As Table = main_Section.AddTable
Dim col_tableCachet As Column = tableCachet.AddColumn
With col_tableCachet
.Width = 170
End With
Dim row_tableCachet As Row = tableCachet.AddRow
With row_tableCachet
.Height = 100
With .Cells(0)
.Borders.Color = Colors.Black
.Format.Alignment = ParagraphAlignment.Left
Dim parCachet As Paragraph = .AddParagraph
With parCachet
.AddText("Reçu le :")
.AddLineBreak()
.AddText("Nom et cachet :")
End With
End With
End With
Dim paraArenvoyer As Paragraph = main_Section.AddParagraph
With paraArenvoyer
.Format.Font.Size = 10
.AddText("A renvoyer par fax au 04.76.04.16.00")
End With
'Footer
Dim paFooter As Paragraph = main_Section.Footers.Primary.AddParagraph
With paFooter
.AddText("MERCI DE PROCEDER A UNE VERIFICATION D'USAGE DES LA RECEPTION.")
.AddLineBreak()
.AddText("NOUS NOUS RESERVONS LA PROPRIETE DES MARCHANDISES, MEMES LIVREES, JUSQU'À LEUR PAIEMENT INTEGRAL.")
.AddLineBreak()
.AddLineBreak()
.AddText("ORNICAR 450, avenue de l'Europe - ZIRST - 38330 Montbonnot-St-Martin - Tél. 04 76 04 16 07 - Fax 04 76 04 16 00 - www.ornicar.net - contact@ornicar.net")
.Format.Alignment = ParagraphAlignment.Center
.Format.Font.Size = 8
End With
'XX Génération du pdf
Dim docRenderer As New PdfDocumentRenderer(False, PdfFontEmbedding.Default)
docRenderer.Document = doc
docRenderer.RenderDocument()
'on va regarder si un repertoire pour le client existe
If Not Directory.Exists(Parametres.CHEMINBL & sClient) Then
Directory.CreateDirectory(Parametres.CHEMINBL & sClient)
End If
docRenderer.Save(Parametres.CHEMINBL & sClient & "/" & sDateBL.Replace("/", "") & idBL & ".pdf")
Dim stream As MemoryStream = New MemoryStream
docRenderer.Save(stream, False)
stream.Position = 0
Response.Clear()
Response.ContentType = "application/pdf"
Response.AddHeader("content_length", stream.Length.ToString())
Response.BinaryWrite(stream.ToArray())
Response.Flush()
stream.Close()
Response.End()