FILE DA .EMF A PDF

di il
16 risposte

FILE DA .EMF A PDF

Buongiorno a tutti!!
Ho difficolta a risolvere un problema:
devo creare dei pdf (report) con dei file .emf (sono dei windows metafile) e molto tempo che cerco una libreria che mi crei dei pdf senza alterarmi questi disegni vettoriali, ma non riesco a trovarne uno adatto. Uso visual studio 2022, in vb.net framework 3.5,
Fin ora ne ho provati molti tra cui:
ActiveReport 18  (problemi con il framework o versione visual studio), SyncFusion, Aspose.
Avete qualche consiglio?

Grazie mille

16 Risposte

  • Re: FILE DA .EMF A PDF

    03/06/2024 - ors ha scritto:


    devo creare dei pdf (report) con dei file .emf (sono dei windows metafile) e molto tempo che cerco una libreria che mi crei dei pdf senza alterarmi questi disegni vettoriali, ma non riesco a trovarne uno adatto.

    Non mi è ben chiaro cosa intendi con “senza alterarmi”… stai trasponendo un formato in un altro, che tendenzialmente rappresenta un documento, quindi è normale aspettarsi un certo tipo di modifica o adattamento.

    Come viene alterato il file? Cosa non vorresti venisse fatto al posto di ciò che succede?

    Fai qualche esempio per capire meglio.

  • Re: FILE DA .EMF A PDF

    Ti dico come ho fatto fin ora:

    Io con il framework 3.5 visual studio 2008 usavo Active Report 3, potevo inserire del testo, delle  griglie ecc…., infine inserivo una picturbox e all'inteno il vettoriale .emf, e infine esportavo il mio intero documento in .pdf.

    Ora ho l'esigenza di cambiare e di utilizzare viual studio 2022, stavo cercando una libreria che mi permettesse di fare ciò, ma ne ho provate diverse, ma tutte non mi visualizzano l'immagine che inserisco in modo corretto, come se perdessero molto di risoluzione, spesso alterando proprio il disegno.
    Esempio rapido, ho un file emf, provo ad aprirlo col paint e poi con il software metafile.
    Ho bisogno che il disegno vettoriale non ne perda di risoluzione

  • Re: FILE DA .EMF A PDF

    03/06/2024 - ors ha scritto:


    stavo cercando una libreria che mi permettesse di fare ciò, ma ne ho provate diverse, ma tutte non mi visualizzano l'immagine che inserisco in modo corretto, come se perdessero molto di risoluzione, spesso alterando proprio il disegno.

    Magari hai importato in modo errato l'immagine vettoriale.
    Senza codice di riferimento però, mi risulta difficile fare ulteriori ipotesi.

  • Re: FILE DA .EMF A PDF

    Ok, Provo a fare un esempio pratico, diseguito vi posto un codice banale per la creazione di un pdf con una scritta e la visualizzazione di un immagine emf all'interno. Qual'è il problema, e che converte il file emf, ma giustamente perde di risoluzione (Stile playstation 1), immagino che per fare ciò, è meglio incorporare l'EMF direttamente nel PDF senza convertirlo.

    Imports System.IO
    Imports iTextSharp.text
    Imports iTextSharp.text.pdf
    Imports System.Drawing.Imaging
    Imports System.Drawing
    
    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            ' Specifica il percorso completo del file PDF
            Dim filePath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "HelloWorld.pdf")
            Dim emfFilePath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "image.emf")
    
            ' Dichiarazione delle variabili
            Dim document As New Document(PageSize.A4)
            Dim fileStream As New FileStream(filePath, FileMode.Create)
            Dim writer As PdfWriter = PdfWriter.GetInstance(document, fileStream)
    
            Try
                document.Open()
    
                ' Creare un font
                Dim font As New iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.HELVETICA, 12)
    
                ' Creare un paragrafo
                Dim paragraph As New iTextSharp.text.Paragraph("Hello World", font)
    
                ' Aggiungere il paragrafo al documento
                document.Add(paragraph)
    
                ' Aggiungere l'immagine .emf al documento
                If File.Exists(emfFilePath) Then
                    ' Convertire il file .emf in un'immagine
                    Dim image As System.Drawing.Image = System.Drawing.Image.FromFile(emfFilePath)
                    Dim stream As New MemoryStream()
                    image.Save(stream, ImageFormat.Png)
                    Dim iTextImage As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(stream.ToArray())
                    iTextImage.ScaleToFit(500, 500)
                    document.Add(iTextImage)
                Else
                    MessageBox.Show("Il file .emf non è stato trovato: " & emfFilePath)
                End If
    
                document.Close()
                writer.Close()
    
                MessageBox.Show("PDF creato con successo: " & filePath)
    
            Catch ex As Exception
                MessageBox.Show("Si è verificato un errore: " & ex.Message)
            Finally
                ' Chiudere lo stream in ogni caso
                If fileStream IsNot Nothing Then
                    fileStream.Close()
                End If
            End Try
        End Sub
    End Class
    
  • Re: FILE DA .EMF A PDF

    Ho provato un po di librerie ma avevo o il problema che non riusciva a inserire direttamente l'immagine emf nel pdf, oppure incompatibilità di framework

  • Re: FILE DA .EMF A PDF

    Secondo me ti conviene usare la libreria gratuita Magick.NET e, prima di tutto, convertire il file EMF in un file PNG, così controlli dimensioni e qualità come vuoi tu, e poi inserisci il file PNG nel PDF

    Se hai bisogno chiedi pure

  • Re: FILE DA .EMF A PDF

    Ho provato a vedere la libreria, ma per il mio framework 3.5, dovrei prendere una versione di magick troppo vecchia, in cui mi segnala anche alta vulnerabilità

  • Re: FILE DA .EMF A PDF

    Fregatene delle ‘vulnerabilità’. 

    E tutta fuffologia! 

    Il mantra deve essere: basta che funzioni.

  • Re: FILE DA .EMF A PDF

    03/06/2024 - ors ha scritto:


    Qual'è il problema, e che converte il file emf, ma giustamente perde di risoluzione (Stile playstation 1), immagino che per fare ciò, è meglio incorporare l'EMF direttamente nel PDF senza convertirlo.

    Stai effettivamente convertendo l'immagine nel formato PNG, che è bitmap, quindi è normale che perda definizione riscalando l'immagine.

    La soluzione rapida è quella di fare il rendering dell'immagine con dimensioni più grandi: a discapito di un peso maggiore, puoi supportare una riscalatura più elevata pur restando un bitmap.

    In alternativa, se l'immagine è molto semplice ed è qualcosa di “abbastanza riproducibile”, potresti anche valutare di disegnarla usando l'oggetto PdfContentByte e andando a “disegnare” direttamente nella pagina.

    Soluzioni molto differenti richiedono supporto specifico di rendering dalle librerie. :|

  • Re: FILE DA .EMF A PDF

    Salve ragazzi, purtroppo con Magick.net ho lo stesso risultato che ho su itextsharp ecc…
    Mentre alka usare il tuo consiglio  “dfContentByte e andando a “disegnare” direttamente nella pagina.”, Devo vedere perchè non ho proprio idea di come fare o da dove partire, non ho mai fatto nulla del genere, provo a documentarmi.

  • Re: FILE DA .EMF A PDF

    Ho Provato Alka, ma mi dice che non è un file riconosciuto emf. (System.IO.IOException: ‘file:///C:/Users/Administrator/Desktop/prova.emf is not a recognized imageformat.’)

    Imports System.IO
    Imports System.Windows.Forms
    Imports iTextSharp.text
    Imports iTextSharp.text.pdf
    
    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            CreatePDF()
        End Sub
    
        Private Sub CreatePDF()
            Dim pdfDoc As New Document()
            Dim pdfWriter As PdfWriter = PdfWriter.GetInstance(pdfDoc, New FileStream("output.pdf", FileMode.Create))
    
            pdfDoc.Open()
    
            Dim cb As PdfContentByte = pdfWriter.DirectContent
    
            ' Carica l'immagine EMF
            Dim image As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance("C:\Users\Administrator\Desktop\prova.emf")
    
            ' Imposta la posizione e le dimensioni dell'immagine
            image.SetAbsolutePosition(100, 100) ' Cambia le coordinate come desiderato
            image.ScaleAbsolute(200, 200) ' Cambia le dimensioni come desiderato
    
            ' Aggiungi l'immagine al documento
            cb.AddImage(image)
    
            pdfDoc.Close()
    
            MessageBox.Show("PDF creato con successo.")
        End Sub
    
    
    End Class
  • Re: FILE DA .EMF A PDF

    04/06/2024 - ors ha scritto:


    Ho Provato Alka, ma mi dice che non è un file riconosciuto emf. (System.IO.IOException: ‘file:///C:/Users/Administrator/Desktop/prova.emf is not a recognized imageformat.’)

    Si, questo lo immaginavo: è per quello che suggerivo di 1) fare il rendering dell'immagine con dimensioni più grandi (sempre nel formato PNG, s'intende), 2) provare a disegnare con la libreria PDF le stesse cose che ci sono nel file EMF (se non è così complesso).

    L'alternativa credo sia trovare una libreria che faccia questo in automatico al posto tuo, ma ipoteticamente sarà qualcosa di specifico e a pagamento.

  • Re: FILE DA .EMF A PDF

    Ho provato a disegnare con la libreria PDF, ma gestire delle immagini è molto complesso, più che altro molto ma molto lungo.
    Ho provato anche a fare il rendering con dimensioni piu grandi, ma niente, andava meglio, ma andando a zoommare, si vedevano delle imprecisioni e i miei file emf sono immagini vettoriali che devono essere precise.
    Stavo cercando delle librerie esterne specifiche ma, o sono compatibili con visual studio 2022, ma non lo sono col framework 3.5, oppure quello che serve a me non è nella versione trial ecc…. e non me la sento di spendere un mucchio di soldi a scatola vuota, senza sapere se fa a caso mio(li voglio pure spendere i soldi, ma vorrei essere sicuro che mi risolve il problema).Ho davvero molta difficolta a trovare una libreria.
    Spero in altre idee oppure che qualcuno conosca una libreria.
    Non so più che libreria pigliare :( 

  • Re: FILE DA .EMF A PDF

    04/06/2024 - ors ha scritto:


    oppure quello che serve a me non è nella versione trial ecc…. e non me la sento di spendere un mucchio di soldi a scatola vuota, senza sapere se fa a caso mio

    Controlla bene, perché spesso chi propone queste formule applica anche la regola “soddisfatti o rimborsati”: nel caso di acquisto, può essere lecito fare un vero e proprio reso qualora non si possano testare determinate funzionalità e se il prodotto non è conforme a quanto atteso.

    In alternativa, si può anche provare a cercare in giro qualche parere, o rivolgersi all'assistenza del prodotto per presentare un “case study”: con diversi fornitori spesso ho riscontrato molta disponibilità (dalla soddisfazione del requisito può dipendere l'acquisto e il rinnovo di una licenza importante).

Devi accedere o registrarti per scrivere nel forum
16 risposte