web-dev-qa-db-ja.com

C#を使用してPDFをJPGに保存する

C#を使用してpdfファイルをjpegに変換する必要があります。そして、ソリューション(ライブラリ)は無料でなければなりません。

私は多くの情報を検索しましたが、何もはっきりしていません。

私はすでにitextsharpとpdfboxを試しました(しかし、pdf2imageはJava専用です)。

私はpdfから画像を個別に抽出しようとしましたが、画像を抽出しようとすると無効なパラメータのエラーがあります...奇妙なエンコーディングがあるようです。

Pdfをjpegに保存するために、誰でも私にライブラリを推薦できますか?例も非常に高く評価されます。

ありがとう!


解決策:C#を使用してPDFを画像に変換する方法

  1. 次へ移動します http://www.codeproject.com/KB/cs/GhostScriptUseWithCSharp.aspx
  2. ライブラリをダウンロード
  3. Webの手順に従います
  4. 次のように、アプリケーションにコードを追加します(非常に簡単です):

        //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");  
    
38
FrioneL

ライブラリ pdfiumviewer はここで役立つかもしれません。 nugetとしても利用できます。

  1. 新しいwinformsアプリを作成します。 nuget "PdfiumViewer"を追加します。
  2. これにより、x86およびx64フォルダーにある「pdfium.dll」という名前の2つのネイティブdllがプロジェクトに追加されます。 「出力ディレクトリにコピー」を「常にコピー」に設定します。
  3. 次のコードを試してください(セットアップに合わせてパスを変更してください)。

        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を試しましたか?

このリンクは役に立つかもしれません

22
Vijay Gill

これは私が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;

}