Consiglio Pdf

venerdì 14 novembre 2008 - 09.09

ilario Profilo | Senior Member

ciao

per stampare uso printdocument, stavo cercando qualche libreria (Free se possibile) che mi permetteva di trasformare il document in un pdf

ho trovato alcune stampanti pdf, ma mi chiedevo se esisteva qualcosa d'altro , senza dover installare una stampante



grazie

ilario

fguida Profilo | Expert

So che esiste un ACBpdf che ti permette di gestire questo tipo di file; puoi generarne o modificarne. Intendevi questo nella tua domanda?
Francesco

ilario Profilo | Senior Member

ti ringrazio ora provo a vedere abcpdf

<puoi generarne o modificarne. Intendevi questo nella tua domanda?

creare un pdf da un document (printdocument)



nel frattempo ho trovato diverse classi che creano un pdf e quindi avevo pensato di traspormare il mio document (printdocument) in una immagine e inserirla nel pdf

grazie
ilario

ps nel caso volessi scriverlo io un file pdf sapete dove trovare la struttura del file pdf


fguida Profilo | Expert

Con ABCpdf puoi creare un nuovo pdf ed inserire la tua immagine finale. Credo che faccia proprio al caso tuo
Francesco

ilario Profilo | Senior Member

ciao
ho dato un occhiata ma è a pagamento
ho usato itextshrarp, ma appena trovo lo schema del file pdf , mi farò io una funzione , tanto dovrò inserire semplicemente un'immagine

dopo alcuni problemi del tipo che l'immagine del print document è metafile di grandi dimensioni(come pixel) l'ho trasformata in jpg e ridotta nella misura della pagina effettiva , dovro sistemare la qualità e alcune cosine, ma con questa funzione va benissimo e mi crea il file pdf in un secondo.

ovviamente nel file comparirà un'immagine, quindi non è modificabile ma nel mio caso va benissimo

appena capirò come funzionano le stampanti virtuali, cercherò di creare una classe che mi faccia la stessa cosa ma senza installarla sul computer( sempre se possibile)



Private Sub pulPdf_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pulPdf.Click

SaveFileDialog1.FileName = DocumentoPrint.DocumentName
SaveFileDialog1.Filter = "File pdf|*.PDF"
SaveFileDialog1.FilterIndex = 1
SaveFileDialog1.Title = "Salva Conto come Pdf"
SaveFileDialog1.OverwritePrompt = False
If SaveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then

Dim controller As New Printing.PreviewPrintController
controller.UseAntiAlias = False
DocumentoPrint.PrintController = controller
DocumentoPrint.Print()

Dim pages As Printing.PreviewPageInfo() = controller.GetPreviewPageInfo()
Dim IndexPag As Integer
Dim pageSizePdf As iTextSharp.text.Rectangle = New iTextSharp.text.Rectangle(DocumentoPrint.DefaultPageSettings.PaperSize.Width, DocumentoPrint.DefaultPageSettings.PaperSize.Height)

Dim DocumentPdf As Document = New iTextSharp.text.Document(pageSizePdf) 'pdf


'controlla se landscape = true ruota

If DocumentoPrint.DefaultPageSettings.Landscape = True Then DocumentPdf.PageSize.Rotate()

Try


'nuovo file pdf e inserisci i dati del file autore ecc...

PdfWriter.GetInstance(DocumentPdf, New FileStream(SaveFileDialog1.FileName, FileMode.Create))
DocumentPdf.AddTitle(DocumentoPrint.DocumentName)
'DocumentPdf.AddSubject(DocumentoPrint.DocumentName)
'DocumentPdf.AddCreator("My ")
DocumentPdf.AddAuthor("autore")

DocumentPdf.Open()


For IndexPag = 0 To pages.Length - 1

'inserisci immagine nel pdf
Dim pdfimage As iTextSharp.text.Image
pdfimage = iTextSharp.text.Image.GetInstance(RicavaImmagineByte(pages(IndexPag).Image, DocumentoPrint.DefaultPageSettings.PaperSize.Height, DocumentoPrint.DefaultPageSettings.PaperSize.Width, CmPx.Pixel, 300, DocumentoPrint.DefaultPageSettings.Landscape, System.Drawing.Imaging.ImageFormat.Jpeg))
pdfimage.SetAbsolutePosition(0, 0)

DocumentPdf.Add(pdfimage)

If IndexPag < pages.Length - 1 Then
DocumentPdf.NewPage()
End If
Next IndexPag


Catch de As DocumentException
ShowMessage(de.Message, "Erore", MessageBoxButtons.OK, frmMessaggioBox.mIcon.mStop)
End Try
If DocumentPdf.IsOpen = True Then
DocumentPdf.Close()

End If

End If

End Sub


Private Function RicavaImmagineByte(ByVal Immagine As Drawing.Image, ByVal Altezza As Integer, ByVal larghezza As Integer, ByVal MmoPixel As CmPx, ByVal Dpi As Integer, ByVal landscape As Boolean, ByVal FormatoImmagine As System.Drawing.Imaging.ImageFormat) As Byte()
If landscape = True Then
Dim AltezzaLarghezza As Integer = 0
AltezzaLarghezza = Altezza
Altezza = larghezza
larghezza = AltezzaLarghezza
End If

If MmoPixel = CmPx.Cm Then
Altezza = Altezza / 2.54 * Dpi
larghezza = larghezza / 2.54 * Dpi
End If

Dim ImmagineStream As MemoryStream = New MemoryStream
Dim nuova_immagine As New Bitmap(larghezza, Altezza)
Dim temp As Graphics = Graphics.FromImage(nuova_immagine)

temp.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
temp.DrawImage(Immagine, New Drawing.Rectangle(0, 0, larghezza, Altezza), New Drawing.Rectangle(0, 0, Immagine.Width, Immagine.Height), GraphicsUnit.Pixel)

nuova_immagine.Save(ImmagineStream, FormatoImmagine)

ImmagineStream.Position = 0
Dim bufferimmagine(ImmagineStream.Length) As Byte

ImmagineStream.Read(bufferimmagine, 0, bufferimmagine.Length)
RicavaImmagineByte = bufferimmagine

'riliasciare gli oggetti caricati in memoria
temp.Dispose()
ImmagineStream.Dispose()
nuova_immagine.Dispose()
End Function

grazie mille
ilario
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5