Извлечь текст и изображение из PDF в выбранной области или координаты - PullRequest
2 голосов
/ 11 марта 2010

У меня есть особые требования для извлечения текста и изображений из определенной области в файле PDF. Эта область может быть выделена или выделена, или из заданного набора координат.

Когда я прошел, все подходы заключаются в том, чтобы полностью извлечь изображения и текст из PDF, а не в указанном месте. Я пробовал с iTextSharp, Syncfussion, Apose, но не мог найти лучший подход для этого.

Если бы кто-то мог помочь мне в этом, это было бы замечательно. Можете ли вы поделиться своими идеями и предложениями о том, как реализовать это в .net.

С уважением, Arun.M

1 Ответ

1 голос
/ 23 марта 2011

этот код извлекает изображения из pdf

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Drawing.Imaging;
using System.IO;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Bytescout.PDFExtractor;

namespace ExtractAllImages
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // This test file will be copied to the project directory on the pre-build event (see the project properties).
            String inputFile = Server.MapPath("sample1.pdf");

            // Create Bytescout.PDFExtractor.ImageExtractor instance
            ImageExtractor extractor = new ImageExtractor();
            extractor.RegistrationName = "demo";
            extractor.RegistrationKey = "demo";

            // Load sample PDF document
            extractor.LoadDocumentFromFile("sample1.pdf");

            Response.Clear();

            int i = 0;

            // Initialize image enumeration
            if (extractor.GetFirstImage())
            {
                do
                {
                    if (i == 0) // Write the fist image to the Response stream
                    {
                        string imageFileName = "image" + i + ".png";

                        Response.Write("<b>" + imageFileName + "</b>");

                        Response.ContentType = "image/png";
                        Response.AddHeader("Content-Disposition", "inline;filename=" + imageFileName);

                        // Write the image bytes into the Response output stream
                        Response.BinaryWrite(extractor.GetCurrentImageAsArrayOfBytes());
                    }

                    i++;

                } while (extractor.GetNextImage()); // Advance image enumeration
            }

            Response.End();
        }
    }
}
...