Ceci est mon premier post et je suis vraiment frustré d'utiliser Silverlight juste parce que je suis un débutant dans ce domaine.Exportation multipages PDF d'une interface Silverlight en utilisant SilverPDF
J'ai trois Silverlight UI (StackPanels fondamentalement) "stkMain1", "stkMain2" et "stkMain3".
Je dois convertir ces trois panneaux de pile en PDF. J'utilise silverPDF (je suppose qu'il utilise plus iTextSharp et PdfSharp.)
J'ai écrit le code suivant:
Private Sub cmdImage_Click(sender As Object, e As System.Windows.RoutedEventArgs) Handles cmdImage.Click
Dim d As New SaveFileDialog()
d.Filter = "PDF file format|*.pdf"
' Save the document...
If d.ShowDialog() = True Then
stkMain.Children.Clear()
stkMain.Children.Add(stkMain1)
Dim document As New PdfDocument()
Dim page As PdfPage = document.AddPage
Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
Dim img As ImageTools.ExtendedImage = BillPage1.ToImage
Dim mstream As New MemoryStream()
Dim encoder As New JpegEncoder()
encoder.Encode(img, mstream)
mstream.Seek(0, SeekOrigin.Begin)
Dim pdfImg As XImage = XImage.FromStream(mstream)
gfx.DrawImage(pdfImg, 0, 0)
End If
End Sub
Cela fait tout correct et donne un fichier PDF avec une page .. Superbe sortie et les pouces vers le haut. Maintenant, le vrai problème commence:
Private Sub cmdImage_Click(sender As Object, e As System.Windows.RoutedEventArgs) Handles cmdImage.Click
Dim d As New SaveFileDialog()
d.Filter = "PDF file format|*.pdf"
' Save the document...
If d.ShowDialog() = True Then
stkMain.Children.Clear()
stkMain.Children.Add(BillPage1)
Dim document As New PdfDocument()
Dim page As PdfPage = document.AddPage
Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
Dim img As ImageTools.ExtendedImage = BillPage1.ToImage
Dim mstream As New MemoryStream()
Dim encoder As New JpegEncoder()
encoder.Encode(img, mstream)
mstream.Seek(0, SeekOrigin.Begin)
Dim pdfImg As XImage = XImage.FromStream(mstream)
gfx.DrawImage(pdfImg, 0, 0)
document.Pages.Add()
Dim page1 As PdfPage = document.AddPage
Dim gfx1 As XGraphics = XGraphics.FromPdfPage(page1)
Dim img1 As ImageTools.ExtendedImage = BillPage2.ToImage
Dim mstream1 As New MemoryStream()
Dim encoder1 As New JpegEncoder()
encoder1.Encode(img1, mstream1)
mstream1.Seek(0, SeekOrigin.Begin)
Dim pdfImg1 As XImage = XImage.FromStream(mstream1)
gfx1.DrawImage(pdfImg1, 0, 0)
document.Save(d.OpenFile())
End If
End Sub
Maintenant, cela crée deux pages, et je reçois une sortie brouillée, le contenu des stackpanels se chevauchent les uns les autres.
Comment résoudre ce problème? J'ai besoin d'aide désespérément. Le projet est dû et je dois le soumettre avant le 26 mars 2011 (lundi).
Merci à l'avance Ravi
Pouvez-vous expliquer ce que votre sortie ressemble un peu plus? Je ne connais pas très bien Silverlight, mais il semble que vous convertissiez un élément d'interface utilisateur en élément et que vous l'ajoutiez à une seule page dans un fichier PDF, puis que vous le répétiez avec l'élément d'interface utilisateur suivant, n'est-ce pas? Est-ce que la première page est OK? Est-ce juste la deuxième page qui a l'air mal? Qu'est-ce qui chevauche quoi? Est-ce un problème dans le PDF ou dans la création d'image? Avez-vous essayé d'enregistrer les images sur le disque manuellement pour voir si elles sont OK? –