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