Сохранить pdf в jpeg с помощью С#
Мне нужно преобразовать файл pdf в jpeg с помощью С#. И решение (библиотека) должно быть бесплатным.
Я искал много информации, но, похоже, я ничего не понял.
Я уже пробовал itextsharp и pdfbox (но это, pdf2image только для java, я думаю) без успеха.
Я попытался извлечь изображения из PDF отдельно, но у меня есть ошибка недопустимых параметров, когда я пытаюсь извлечь изображения... Кажется, у них странная кодировка.
Кто-нибудь может порекомендовать мне любую библиотеку, чтобы сохранить pdf файл в jpeg? Примеры также очень оценены.
Спасибо!
РЕШЕНИЕ: как преобразовать PDF в изображение с помощью С#
- Перейдите к: http://www.codeproject.com/KB/cs/GhostScriptUseWithCSharp.aspx
- Загрузить библиотеку
- Следуйте инструкциям в Интернете.
-
Добавьте свой код в свое приложение, как это (очень просто):
//Transform pdf to jpg
PdfToImage.PDFConvert pp = new PDFConvert();
pp.OutputFormat = "jpeg"; //format
pp.JPEGQuality = 100; //100% quality
pp.ResolutionX = 300; //dpi
pp.ResolutionY = 300;
pp.FirstPageToConvert = 1; //pages you want
pp.LastPageToConvert = 1;
pp.Convert(PATH_PDF+ "report.pdf", PATH_IMAGE + "name.jpg");
Ответы
Ответ 1
Здесь может быть полезной библиотека pdfiumviewer. Он также доступен как nuget.
- Создайте новое приложение winforms. Добавьте к нему nuget "PdfiumViewer".
- Это также добавит две родные dll с именем "pdfium.dll" в папки x86 и x64 в ваш проект. Установите "Копировать в каталог вывода" на "Копировать всегда".
-
Попробуйте следующий код (измените пути в соответствии с вашими настройками).
try
{
using (var document = PdfiumViewer.PdfDocument.Load(@"input.pdf"))
{
var image = document.Render(0, 300, 300, true);
image.Save(@"output.png", ImageFormat.Png);
}
}
catch (Exception ex)
{
// handle exception here;
}
Изменить 2: Изменен код, чтобы показать, что индекс страницы равен 0, как указано в комментарии С .C. ниже
Изменить 1: Обновленное решение
Вы пробовали pdfsharp?
Эта ссылка может быть полезной
Забастовкa >
Ответ 2
Вот как я это сделал с помощью PDFLibNet:
public void ConvertPDFtoHojas(string filename, String dirOut)
{
PDFLibNet.PDFWrapper _pdfDoc = new PDFLibNet.PDFWrapper();
_pdfDoc.LoadPDF(filename);
for (int i = 0; i < _pdfDoc.PageCount; i++)
{
Image img = RenderPage(_pdfDoc, i);
img.Save(Path.Combine(dirOut, string.Format("{0}{1}.jpg", i,DateTime.Now.ToString("mmss"))));
}
_pdfDoc.Dispose();
return;
}
public Image RenderPage(PDFLibNet.PDFWrapper doc, int page)
{
doc.CurrentPage = page + 1;
doc.CurrentX = 0;
doc.CurrentY = 0;
doc.RenderPage(IntPtr.Zero);
// create an image to draw the page into
var buffer = new Bitmap(doc.PageWidth, doc.PageHeight);
doc.ClientBounds = new Rectangle(0, 0, doc.PageWidth, doc.PageHeight);
using (var g = Graphics.FromImage(buffer))
{
var hdc = g.GetHdc();
try
{
doc.DrawPageHDC(hdc);
}
finally
{
g.ReleaseHdc();
}
}
return buffer;
}
Ответ 3
Ghostscript не является бесплатным.
Вот решение:
1) Добавьте этот nuget в свой проект: https://www.nuget.org/packages/PdfiumViewer.Native.x86_64.v8-xfa/
2) Добавьте ссылку "PdfiumViewer" в ваш проект.
3) Используйте следующий код:
using (var pdfDocument = PdfiumViewer.PdfDocument.Load(@"document.pdf"))
{
var bitmapImage = pdfDocument.Render(0, 300, 300, true);
bitmapImage.Save(@"image.jpg", ImageFormat.Jpeg);
}