IMPRIMIR EM PDF DOM PDFSHARP NO VB.NET
Boa tarde,
Estou imprimindo um arquivo texto em pdf, só não consigo começar uma página nova. ex. meu arquivo tem 5 paginas e imprime somente em uma. Segue o código.
Imports System.IO
Imports PdfSharp
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim line As String
Dim readFile As System.IO.TextReader = New StreamReader([Ô]c: emp\c0202022017154926.txt[Ô])
Dim yPoint As Integer = 0
Dim pdf As PdfDocument = New PdfDocument
pdf.Info.Title = [Ô]Text File to PDF[Ô]
Dim pdfPage As PdfPage = pdf.AddPage
Dim graph As XGraphics = XGraphics.FromPdfPage(pdfPage)
Dim font As XFont = New XFont([Ô]Lucida Console[Ô], 9, XFontStyle.Regular)
[ô]pdfPage.Orientation = PageOrientation.Landscape
[ô]pdfPage.Size = PageSize.A4
While True
line = readFile.ReadLine()
If line Is Nothing Then
Exit While
Else
If yPoint < 580 Then
pdfPage.Orientation = PageOrientation.Landscape
pdfPage.Size = PageSize.A4
graph.DrawString(line, font, XBrushes.Black, _
New XRect(40, yPoint, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft)
yPoint = yPoint + 10
Else
yPoint = yPoint + 10
End If
End If
End While
Dim pdfFilename As String = [Ô]txttopdf.pdf[Ô]
pdf.Save(pdfFilename)
readFile.Close()
readFile = Nothing
Process.Start(pdfFilename)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Class
Estou imprimindo um arquivo texto em pdf, só não consigo começar uma página nova. ex. meu arquivo tem 5 paginas e imprime somente em uma. Segue o código.
Imports System.IO
Imports PdfSharp
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim line As String
Dim readFile As System.IO.TextReader = New StreamReader([Ô]c: emp\c0202022017154926.txt[Ô])
Dim yPoint As Integer = 0
Dim pdf As PdfDocument = New PdfDocument
pdf.Info.Title = [Ô]Text File to PDF[Ô]
Dim pdfPage As PdfPage = pdf.AddPage
Dim graph As XGraphics = XGraphics.FromPdfPage(pdfPage)
Dim font As XFont = New XFont([Ô]Lucida Console[Ô], 9, XFontStyle.Regular)
[ô]pdfPage.Orientation = PageOrientation.Landscape
[ô]pdfPage.Size = PageSize.A4
While True
line = readFile.ReadLine()
If line Is Nothing Then
Exit While
Else
If yPoint < 580 Then
pdfPage.Orientation = PageOrientation.Landscape
pdfPage.Size = PageSize.A4
graph.DrawString(line, font, XBrushes.Black, _
New XRect(40, yPoint, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft)
yPoint = yPoint + 10
Else
yPoint = yPoint + 10
End If
End If
End While
Dim pdfFilename As String = [Ô]txttopdf.pdf[Ô]
pdf.Save(pdfFilename)
readFile.Close()
readFile = Nothing
Process.Start(pdfFilename)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Class
Citação:Dim PdfPage pdfPage = pdf.AddPage();
Esse é o comando para inserir uma página. é só colocar onde vai começar a nova página:
pdfPage = pdf.AddPage();
Boa tarde PERCIFILHO,
Sim, eu já havia testado, mas ocorre o problema da imagem do anexo. Imprime todas as páginas mas dados somente na primeira.
Imports System.IO
Imports PdfSharp
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim line As String
Dim readFile As System.IO.TextReader = New StreamReader([Ô]c: emp\c0202022017154926.txt[Ô])
Dim yPoint As Integer = 0
Dim pdf As PdfDocument = New PdfDocument
pdf.Info.Title = [Ô]Text File to PDF[Ô]
Dim pdfPage As PdfPage = pdf.AddPage()
Dim graph As XGraphics = XGraphics.FromPdfPage(pdfPage)
Dim font As XFont = New XFont([Ô]Lucida Console[Ô], 9, XFontStyle.Regular)
[ô]pdfPage.Orientation = PageOrientation.Landscape
[ô]pdfPage.Size = PageSize.A4
While True
line = readFile.ReadLine()
If line Is Nothing Then
Exit While
Else
If yPoint < 580 Then
pdfPage.Orientation = PageOrientation.Landscape
pdfPage.Size = PageSize.A4
graph.DrawString(line, font, XBrushes.Black, _
New XRect(40, yPoint, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft)
yPoint = yPoint + 10
Else
yPoint = 0 <------ aqui zerando ou não a diferença é que imprime
tudo na primeira pagina, ou somente uma página, as demais ficam em branco
pdfPage = pdf.AddPage()
End If
End If
End While
Dim pdfFilename As String = [Ô]txttopdf.pdf[Ô]
pdf.Save(pdfFilename)
readFile.Close()
readFile = Nothing
Process.Start(pdfFilename)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Class
Sim, eu já havia testado, mas ocorre o problema da imagem do anexo. Imprime todas as páginas mas dados somente na primeira.
Imports System.IO
Imports PdfSharp
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf
Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Dim line As String
Dim readFile As System.IO.TextReader = New StreamReader([Ô]c: emp\c0202022017154926.txt[Ô])
Dim yPoint As Integer = 0
Dim pdf As PdfDocument = New PdfDocument
pdf.Info.Title = [Ô]Text File to PDF[Ô]
Dim pdfPage As PdfPage = pdf.AddPage()
Dim graph As XGraphics = XGraphics.FromPdfPage(pdfPage)
Dim font As XFont = New XFont([Ô]Lucida Console[Ô], 9, XFontStyle.Regular)
[ô]pdfPage.Orientation = PageOrientation.Landscape
[ô]pdfPage.Size = PageSize.A4
While True
line = readFile.ReadLine()
If line Is Nothing Then
Exit While
Else
If yPoint < 580 Then
pdfPage.Orientation = PageOrientation.Landscape
pdfPage.Size = PageSize.A4
graph.DrawString(line, font, XBrushes.Black, _
New XRect(40, yPoint, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft)
yPoint = yPoint + 10
Else
yPoint = 0 <------ aqui zerando ou não a diferença é que imprime
tudo na primeira pagina, ou somente uma página, as demais ficam em branco
pdfPage = pdf.AddPage()
End If
End If
End While
Dim pdfFilename As String = [Ô]txttopdf.pdf[Ô]
pdf.Save(pdfFilename)
readFile.Close()
readFile = Nothing
Process.Start(pdfFilename)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Class
Isso é porque o objeto graph ainda é o da página anterior, você precisa de um novo dele também. Eu testaria assim
Repare que inverti o seu IF, pois da forma como estava ele iria pular uma linha quando entrasse nele, e também movi o que altera a orientação e o tamanho da página para dentro dele, descomentando os que estavam fora, pois só deve ser necessário alterar isso uma vez por página
pdfPage.Orientation = PageOrientation.Landscape
pdfPage.Size = PageSize.A4
While True
line = readFile.ReadLine()
If line Is Nothing Then
Exit While
Else
If yPoint > 570 Then
yPoint = 0
pdfPage = pdf.AddPage()
graph = XGraphics.FromPdfPage(pdfPage)
pdfPage.Orientation = PageOrientation.Landscape
pdfPage.Size = PageSize.A4
End If
graph.DrawString(line, font, XBrushes.Black, _
New XRect(40, yPoint, pdfPage.Width.Point, pdfPage.Height.Point), XStringFormats.TopLeft)
yPoint = yPoint + 10
End If
End While
Repare que inverti o seu IF, pois da forma como estava ele iria pular uma linha quando entrasse nele, e também movi o que altera a orientação e o tamanho da página para dentro dele, descomentando os que estavam fora, pois só deve ser necessário alterar isso uma vez por página
Se vc utilizar as classes do MigraDoc (que faz parte do PdfSharp), a quebra de página é automática.
Bom dia OCELOT,
Muito obrigado, funcionou perfeitamente, só pequenos ajustes agora de linhas por página.
Havia tentado n possibilidades e como é a primeira fez que utilizo o componente não sabia seu funcionamento.
Muito obrigado, funcionou perfeitamente, só pequenos ajustes agora de linhas por página.
Havia tentado n possibilidades e como é a primeira fez que utilizo o componente não sabia seu funcionamento.
Tópico encerrado , respostas não são mais permitidas