C#
using PdfSharp.Pdf;
using PdfSharp.Pdf.Advanced;
using PdfSharp.Pdf.IO;
using System.Drawing;
using ZXing;
using ZXing.Client.Result;
using ZXing.Common;
using ZXing.ImageSharp;
using ZXing.PDF417.Internal;
using ZXing.QrCode;
using ZXing.QrCode.Internal;
using ZXing.Rendering;
using ZXing.Windows.Compatibility;
C#
private void BtnGenera_Click(object sender, EventArgs e)
{
try
{
var GeneraBarcode
= new BarcodeWriter
{
Format =
BarcodeFormat.CODE_128,
Options
= new
EncodingOptions
{
Height = 100,
Width = 100
},
Renderer
= (IBarcodeRenderer<Bitmap>)Activator.CreateInstance(Renderer)
};
var risultato =
GeneraBarcode.Write(TxtTesto.Text);
var barcodeBitmap
= new
Bitmap(risultato);
pictureBox1.Image = risultato;
barcodeBitmap.Save(@"C:\Varie\Barcode2.Jpeg",
System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
C#
private void
BtnCerca_Click(object sender, EventArgs e)
{
using (OpenFileDialog openDlg = new OpenFileDialog())
{
openDlg.FileName = TxtPercorsoNomeFile.Text;
openDlg.Multiselect = false;
openDlg.Filter = "PNG Files (*.png)|*.png|BMP Files (*.bmp)|*.bmp|TIFF Files
(*.tif)|*.tif|JPG Files (*.jpg)|*.jpg|JEPG Files (*.jpeg)|*.jpeg|PDF Files
(*.pdf)|*.pdf|Tutti Files (*.*)|*.*";
if (openDlg.ShowDialog(this) ==
DialogResult.OK)
{
TxtPercorsoNomeFile.Text = openDlg.FileName;
}
}
}
C#
private Bitmap
EsportaImmagineJpeg(PdfDictionary image)
{
byte[] stream =
image.Stream.Value;
using (var memoryStream = new
MemoryStream())
{
using (var binaryWriter =
new
BinaryWriter(memoryStream))
{
binaryWriter.Write(stream);
memoryStream.Position = 0;
var result =
(Bitmap)Bitmap.FromStream(memoryStream);
binaryWriter.Close();
return result;
}
}
}
C#
Bitmap EsportaImmagine(PdfDictionary
Immagine)
{
var TipoImmagine =
string.Empty;
var objFilter =
Immagine.Elements.GetObject("/Filter");
if (objFilter is PdfArray)
{
TipoImmagine
= ((PdfArray)objFilter).Elements.GetName(0);
}
else
{
TipoImmagine
= Immagine.Elements.GetName("/Filter");
}
switch (TipoImmagine)
{
case "/DCTDecode":
return
EsportaImmagineJpeg(Immagine);
case "/FlateDecode":
break;
case "/JBIG2Decode":
break;
}
return null;
}
C#
public IEnumerable<Bitmap> OttieniImmaginiDaPdf(string
PercorsoNomeFile)
{
PdfDocument
document = PdfReader.Open(PercorsoNomeFile);
//Effettuo un
ciclo su tutte le pagine
foreach (PdfPage
pagina in document.Pages)
{
//Ottengo la
risorsa per ogni pagina
PdfDictionary resources = pagina.Elements.GetDictionary("/Resources");
if (resources != null)
{
//Rilevo
l'oggetto per la risorsa
PdfDictionary xObjects = resources.Elements.GetDictionary("/XObject");
if (xObjects != null)
{
var Elementi =
xObjects.Elements.Values;
//Ciclo per
ogni elemento trovato
foreach (PdfItem item in Elementi)
{
PdfReference pdfRefence = item as PdfReference;
if (pdfRefence !=
null)
{
PdfDictionary pdfDictionary = pdfRefence.Value as PdfDictionary;
//Verifico che è un
immagine
if (pdfDictionary != null && pdfDictionary.Elements.GetString("/Subtype") == "/Image")
{
var bitmap = EsportaImmagine(pdfDictionary);
if (bitmap != null)
{
yield return bitmap;
}
}
}
}
}
}
}
}
C#
private void BtnLeggi_Click(object sender, EventArgs e)
{
try
{
BarcodeReader barcodeReader = new BarcodeReader();
if
(TxtPercorsoNomeFile.Text.Contains(".pdf"))
{
var immagini =
OttieniImmaginiDaPdf(TxtPercorsoNomeFile.Text);
foreach (var immagine in immagini)
{
var testoRilevato
= barcodeReader.Decode(immagine);
if (testoRilevato
!= null)
{
TxtTesto.Text = testoRilevato.Text;
}
}
}
else
{
Bitmap
bitmap = new Bitmap(TxtPercorsoNomeFile.Text);
var testoRilevato
= barcodeReader.Decode(bitmap);
if (testoRilevato
!= null)
{
TxtTesto.Text = testoRilevato.Text;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Nessun commento:
Posta un commento