使用免费的c#解决方案将pdf转换为jpeg
本文关键字:pdf 转换 jpeg 解决方案 免费 | 更新日期: 2023-09-27 18:03:05
我需要使用c#将pdf文件转换为jpeg文件。而解决方案(库)必须是免费的。
我查了很多资料,但似乎没有弄清楚。
我已经尝试了itextsharp和pdfbox(但是这个,pdf2image只适用于java,我认为)没有成功。
我试图单独从pdf中提取图像,但当我尝试提取图像时,我有无效参数的错误…似乎他们有一种奇怪的编码。
谁能给我推荐一个库来保存pdf到jpeg?示例也将非常感谢。
库pdfiumviewer在这里可能会有所帮助。也可以作为nuget使用。
- 创建一个新的winforms应用程序。添加nuget"PdfiumViewer"到它。
- 这也将在x86和x64文件夹中添加两个名为"pdfium.dll"的本地dll到您的项目。设置"Copy to Output Directory"为"Copy Always"
-
尝试以下代码(更改路径以适应您的设置)。
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:修改代码,显示页面索引是基于S.C.在
下面的评论中指出的0
编辑1:更新的解决方案
你试过pdfsharp了吗?
这个链接可能有帮助
我就是这样做的:
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;
}