Je veux convertir des pages Pdf en images en utilisant la bibliothèque ItextSharp.
Vous avez une idée de la façon de convertir chaque page en fichier image
iText/iTextSharp peut générer et/ou modifier des fichiers PDF existants mais ils n'effectuent aucun rendu, ce que vous recherchez. Je recommanderais de vérifier Ghostscript ou une autre bibliothèque qui sait réellement rendre un PDF.
vous pouvez utiliser ImageMagick convertir le pdf en image
convert -density 300 "d:\1.pdf" -scale @ 1500000 "d:\a.jpg"
et le pdf divisé peut utiliser itextsharp
voici le code des autres.
void SplitePDF(string filepath)
{
iTextSharp.text.pdf.PdfReader reader = null;
int currentPage = 1;
int pageCount = 0;
//string filepath_New = filepath + "\\PDFDestination\\";
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding();
//byte[] arrayofPassword = encoding.GetBytes(ExistingFilePassword);
reader = new iTextSharp.text.pdf.PdfReader(filepath);
reader.RemoveUnusedObjects();
pageCount = reader.NumberOfPages;
string ext = System.IO.Path.GetExtension(filepath);
for (int i = 1; i <= pageCount; i++)
{
iTextSharp.text.pdf.PdfReader reader1 = new iTextSharp.text.pdf.PdfReader(filepath);
string outfile = filepath.Replace((System.IO.Path.GetFileName(filepath)), (System.IO.Path.GetFileName(filepath).Replace(".pdf", "") + "_" + i.ToString()) + ext);
reader1.RemoveUnusedObjects();
iTextSharp.text.Document doc = new iTextSharp.text.Document(reader.GetPageSizeWithRotation(currentPage));
iTextSharp.text.pdf.PdfCopy pdfCpy = new iTextSharp.text.pdf.PdfCopy(doc, new System.IO.FileStream(outfile, System.IO.FileMode.Create));
doc.Open();
for (int j = 1; j <= 1; j++)
{
iTextSharp.text.pdf.PdfImportedPage page = pdfCpy.GetImportedPage(reader1, currentPage);
pdfCpy.SetFullCompression();
pdfCpy.AddPage(page);
currentPage += 1;
}
doc.Close();
pdfCpy.Close();
reader1.Close();
reader.Close();
}
}
Vous pouvez utiliser Ghostscript pour convertir les fichiers PDF en images, j'ai utilisé les paramètres suivants pour convertir les PDF en images tiff nécessaires) avec plusieurs cadres:
gswin32c.exe -sDEVICE=tiff12nc -dBATCH -r200 -dNOPAUSE -sOutputFile=[Output].tiff [PDF FileName]
Vous pouvez également utiliser le paramètre -q pour le mode silencieux.Vous pouvez obtenir plus d'informations sur ses périphériques de sortie à partir de ici
Après cela, je peux facilement charger les images tiff comme suit
using (FileStream stream = new FileStream(@"C:\tEMP\image_$i.tiff", FileMode.Open, FileAccess.Read, FileShare.Read))
{
BitmapDecoder dec = BitmapDecoder.Create(stream, BitmapCreateOptions.IgnoreImageCache, BitmapCacheOption.None);
BitmapEncoder enc = BitmapEncoder.Create(dec.CodecInfo.ContainerFormat);
enc.Frames.Add(dec.Frames[frameIndex]);
}