Сохраните PDF в JPEG, используя c# и библиотеку pdfiumviewer - PullRequest
1 голос
/ 09 апреля 2020

Мне нужно конвертировать PDF-файл в jpeg, используя c#.

Решение ( dll library ) должно быть бесплатным.

Я искал В Интернете много информации, но, похоже, библиотека pdfiumviewer может быть полезна здесь. Он также доступен как nuget.

Я пробовал этот код безуспешно, поскольку новый файл в формате jpg не сохраняется.

Как решить эту проблему?

using PdfiumViewer;
using System;
using System.Drawing.Imaging;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            try
            {
                using (var document = PdfDocument.Load(@"sample.pdf"))
                {
                    var image = document.Render(0, 300, 300, true);
                    image.Save(@"output.png", ImageFormat.Png);
                }
            }
            catch (Exception ex)
            {
                // handle exception here;
            }
        }
    }
}

Редактировать # 01

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        try
        {
            using (var document = PdfDocument.Load(@"C:\\Users\\aaa\\Documents\\Visual Studio 2013\\WebSites\\GroupDocsConversion\\sample.pdf"))
            {
                var image = document.Render(0, 300, 300, true);
                image.Save(@"C:\\Users\\aaa\\Documents\\Visual Studio 2013\\WebSites\\GroupDocsConversion\\output.png", ImageFormat.Png);
            }
        }
        catch (Exception ex)
        {
            Response.Write("Error: " + ex.Message);
        }
    }
}

1 Ответ

1 голос
/ 09 апреля 2020

Попробуйте это комбинированное решение с iTextSharp и Ghostscript. NET (доступно в Nuget).

При необходимости установите Ghostscript 9.52 для Windows (32 бита)

Надеюсь, я вам помог.

   <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %>

    <!DOCTYPE html>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:FileUpload ID="flupload" runat="server" />
                <br />
                <br />
                <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
            </div>
        </form>
    </body>
    </html>

    using Ghostscript.NET;
    using iTextSharp.text;
    using iTextSharp.text.pdf;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Web;
    using System.Web.Hosting;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    public partial class Default4 : System.Web.UI.Page
    {
            protected void btnSubmit_Click(object sender, EventArgs e)
            {
                String PdfFolderPath = HostingEnvironment.MapPath("~/PdfFolder/" + flupload.FileName);
                HttpPostedFile file = HttpContext.Current.Request.Files[0];
                file.SaveAs(PdfFolderPath);
                Pdf2ImageConversion(flupload.FileName, PdfFolderPath);
            }

            private void Pdf2ImageConversion(string FileName, string PdfFolderPath)
            {
                String FileNameWithoutExtension = Path.GetFileNameWithoutExtension(FileName);
                String ImgFolderPath = HostingEnvironment.MapPath("~/ImgFolder/"
                    + FileNameWithoutExtension + ".jpeg");
                var info = new System.IO.FileInfo(ImgFolderPath);
                if (info.Exists.Equals(false))
                {
                    GhostscriptPngDevice img = new GhostscriptPngDevice(GhostscriptPngDeviceType.Png16m);
                    img.GraphicsAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
                    img.TextAlphaBits = GhostscriptImageDeviceAlphaBits.V_4;
                    img.ResolutionXY = new GhostscriptImageDeviceResolution(200, 200);
                    img.InputFiles.Add(PdfFolderPath);
                    img.Pdf.FirstPage = 1;
                    img.Pdf.LastPage = 1;
                    img.PostScript = string.Empty;
                    img.OutputPath = ImgFolderPath;
                    img.Process();
                }
            }

        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...