Это мой первый пост, и я очень разочарован использованием Silverlight только потому, что я новичок в этом.
У меня есть три пользовательских интерфейса Silverlight (в основном StackPanels): «stkMain1», «stkMain2» и «stkMain3».
Мне нужно преобразовать эти три панели стека в PDF. Я использую silverPDF (думаю, он также использует iTextSharp и PDFSharp.)
Я написал следующий код:
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
Это делает все правильно и дает один файл PDF с одной страницей. Превосходный результат и палец вверх. Теперь начинается настоящая проблема:
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
Теперь это создает две страницы, и я получаю зашифрованный вывод, содержимое панелей стека перекрывает друг друга.
Как это решить?? МНЕ СРОЧНО НУЖНА ПОМОЩЬ. ПРОЕКТ СРОЧЕН, И Я ДОЛЖЕН ОТПРАВИТЬ ЕГО ДО 26 марта 2011 г. (ПОНЕДЕЛЬНИК).
Заранее спасибо Рави