C#を使用してpdfファイルをjpegに変換する必要があります。そして、ソリューション(ライブラリ)は無料でなければなりません。
私は多くの情報を検索しましたが、何もはっきりしていません。
私はすでにitextsharpとpdfboxを試しました(しかし、pdf2imageはJava専用です)。
私はpdfから画像を個別に抽出しようとしましたが、画像を抽出しようとすると無効なパラメータのエラーがあります...奇妙なエンコーディングがあるようです。
Pdfをjpegに保存するために、誰でも私にライブラリを推薦できますか?例も非常に高く評価されます。
ありがとう!
解決策:C#を使用してPDFを画像に変換する方法
次のように、アプリケーションにコードを追加します(非常に簡単です):
//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");
ライブラリ pdfiumviewer はここで役立つかもしれません。 nugetとしても利用できます。
次のコードを試してください(セットアップに合わせてパスを変更してください)。
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を試しましたか?
これは私が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;
}