Chcę konwertować strony PDF w obrazach przy użyciu biblioteki ItextSharp.Konwersja stron pliku PDF do obrazów za pomocą itextsharp
ma jakiś pomysł jak konwertować każdą stronę w pliku obrazu
Chcę konwertować strony PDF w obrazach przy użyciu biblioteki ItextSharp.Konwersja stron pliku PDF do obrazów za pomocą itextsharp
ma jakiś pomysł jak konwertować każdą stronę w pliku obrazu
iText/iTextSharp może generować i/lub modyfikować istniejące pliki PDF, ale nie wykonuje żadnej rendering który jest to, czego szukasz. Polecam sprawdzić Ghostscript lub inną bibliotekę, która wie, jak faktycznie renderować plik PDF.
można użyć ImageMagick Konwersja PDF do obrazu
nawrócony -density 300 "D: \ 1.pdf" -scale @ 1500000 "D: \ a.jpg"
i PDF Split można używać iTextSharp
tutaj jest kod od innych.
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();
}
}
Można użyć Ghostscript do konwersji plików PDF na obrazy, użyłem następujące parametry konwersji potrzebne PDF do TIFF z wielu klatek:
gswin32c.exe -sDEVICE=tiff12nc -dBATCH -r200 -dNOPAUSE -sOutputFile=[Output].tiff [PDF FileName]
Ponadto można użyć - Parametr q dla trybu dyskretnego Możesz uzyskać więcej informacji o swoich urządzeniach wyjściowych od here
Po tym można łatwo załadować ramki tiff, takie jak następujące
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]);
}
można wyodrębnić obraz z PDF i zapisać jako JPG oto przykładowy kod trzeba itext Ostry
public IEnumerable<System.Drawing.Image> ExtractImagesFromPDF(string sourcePdf)
{
// NOTE: This will only get the first image it finds per page.
var pdf = new PdfReader(sourcePdf);
var raf = new RandomAccessFileOrArray(sourcePdf);
try
{
for (int pageNum = 1; pageNum <= pdf.NumberOfPages; pageNum++)
{
PdfDictionary pg = pdf.GetPageN(pageNum);
// recursively search pages, forms and groups for images.
PdfObject obj = ExtractImagesFromPDF_FindImageInPDFDictionary(pg);
if (obj != null)
{
int XrefIndex = Convert.ToInt32(((PRIndirectReference)obj).Number.ToString(CultureInfo.InvariantCulture));
PdfObject pdfObj = pdf.GetPdfObject(XrefIndex);
PdfStream pdfStrem = (PdfStream)pdfObj;
PdfImageObject pdfImage = new PdfImageObject((PRStream)pdfStrem);
System.Drawing.Image img = pdfImage.GetDrawingImage();
yield return img;
}
}
}
finally
{
pdf.Close();
raf.Close();
}
}
„ImageMagick nie może obsłużyć PostScript i PDF siebie i przez jego własny. W tym celu używa oprogramowania innej firmy o nazwie Ghostscript jako "delegata". " http://stackoverflow.com/a/6599718/893350 –