PDF文件操作

itextsharp獲取PDF頁碼
PdfReader reader;
reader = new PdfReader(fileList[i]);
int iPageNum = reader.NumberOfPages;

提取PDF中的文本和圖片(參考):https://www.e-iceblue.cn/spirepdf/extract-text-and-image-from-pdf.html

Spire獲取PDF文件圖片:

public Image GetPDFImg(string filePath, int imgSequence)
{
    Image image = null;
    try
    {
        //加載PDF文檔
        Spire.Pdf.PdfDocument doc = new Spire.Pdf.PdfDocument();
        doc.LoadFromFile(filePath);

        List<Image> ListImage = new List<Image>();

        // 實例化一個Spire.Pdf.PdfPageBase對象,Pages從0開始
        Spire.Pdf.PdfPageBase page = doc.Pages[imgSequence];

        // 獲取PDF第一頁里面的所有圖片
        Image[] images = page.ExtractImages();
        if (images != null && images.Length > 0)
        {
            ListImage.AddRange(images);
        }

        if (ListImage.Count > 0)
        {
            image = ListImage[0];
            //image.Save(@"D:\temp\" + GetDateTimeStr() + ".png", System.Drawing.Imaging.ImageFormat.Png);//保存獲取的圖片
        }
        doc.Dispose();
    }
    catch (Exception e)
    {
        MessageBox.Show(e.ToString(), "錯誤提示");
    }

    return image;
}

itextsharp獲取PDF文件圖片:

public void ExtractImage(string pdfFile)
{

    PdfReader pdfReader = new PdfReader(pdfFile);

    for (int pageNumber = 1; pageNumber <= pdfReader.NumberOfPages; pageNumber++)
    {

        PdfReader pdf = new PdfReader(pdfFile);

        PdfDictionary pg = pdf.GetPageN(pageNumber);

        PdfDictionary res = (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));

        PdfDictionary xobj = (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));

        try
        {

            foreach (PdfName name in xobj.Keys)
            {

                PdfObject obj = xobj.Get(name);

                if (obj.IsIndirect())
                {

                    PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj);

                    string width = tg.Get(PdfName.WIDTH).ToString();

                    string height = tg.Get(PdfName.HEIGHT).ToString();

                    ImageRenderInfo imgRI = ImageRenderInfo.CreateForXObject(new Matrix(), (PRIndirectReference)obj, tg);


                    //圖片保存
                    PdfImageObject image = imgRI.GetImage();
                    Image dotnetImg = image.GetDrawingImage();
                    dotnetImg.Save(@"E:\\000.png");
                }
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString(), "錯誤提示");
        }

        break;
    }
}

合并PDF文件

private void mergePDFFiles(string[] fileList,string outMergeFile)
{
    //try
    //{
        List<PdfReader> readerList = new List<PdfReader>();//記錄合并PDF集合
        PdfReader reader;
        Document document = new Document();
        PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outMergeFile, FileMode.Create));
        document.Open();
        PdfContentByte cb = writer.DirectContent;
        PdfImportedPage newPage;
        PdfDictionary page;
        PdfNumber rotate;

        for (int i = 0; i < fileList.Length; i++)
        {
            if (fileList[i] != null)
            {
                try
                {
                    reader = new PdfReader(fileList[i]);
                    int iPageNum = reader.NumberOfPages;
                    for (int j = 1; j <= iPageNum; j++)
                    {
                        newPage = writer.GetImportedPage(reader, j);
                        page = reader.GetPageN(j);
                        rotate = page.GetAsNumber(PdfName.ROTATE);

                        iTextSharp.text.Rectangle r = reader.GetPageSizeWithRotation(j);

                        document.SetPageSize(r);
                        document.NewPage();

                        //解決PDF合并時,頁面翻轉(zhuǎn)問題
                        if (rotate == null)
                        {
                            cb.AddTemplate(newPage, 1f, 0, 0, 1f, 0, 0);
                        }
                        else
                        {
                            switch (rotate.IntValue)
                            {
                                case 0:
                                    cb.AddTemplate(newPage, 1f, 0, 0, 1f, 0, 0);
                                    break;
                                case 90:
                                    cb.AddTemplate(newPage, 0, -1f, 1f, 0, 0, r.Height);
                                    break;
                                case 180:
                                    cb.AddTemplate(newPage, -1f, 0, 0, -1f, r.Width, r.Height);
                                    break;
                                case 270:
                                    cb.AddTemplate(newPage, 0, 1f, -1f, 0, r.Height, 0);
                                    break;
                                //default:
                                //    throw new InvalidOperationException(string.Format("Unexpected page rotation: [{0}].", pageRotation));
                            }
                        }
                    }
                    readerList.Add(reader);
                }
                catch
                {
                }
            }
        }
        document.Close();
        for (int i = 0; i < readerList.Count; i++)
        {
            readerList[i].Dispose();
        }
    //}
    //catch (Exception)
    //{
    //    MessageBox.Show("合并失敗彤路,請聯(lián)系管理員俭正!", "提示");
    //}
}

獲取PDF文字信息

using iTextSharp.text.pdf;
using iTextSharp.text.pdf.parser;
using System.Diagnostics;
List<string> lst1 = new List<string>();
lst1.Add(@"C:\Users\253\Desktop\20211118\aaa.pdf");

for(int i=0;i<lst1.Count;i++)
{
    PdfReader pdfReader = new PdfReader(lst1[i]);

    iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(400, 400, 800, 800);//獲取指定區(qū)域文字信息

    RenderFilter[] filter = { new RegionTextRenderFilter(rect) };

    ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter);

    string atext = PdfTextExtractor.GetTextFromPage(pdfReader, 1, strategy);
    atext = atext.Replace(" ", "").Replace("發(fā)文編號:\n", "");
    atext = atext.Substring(0, atext.IndexOf("\n"));
    pdfReader.Close();
}

//PdfReader pdfReader = new PdfReader(@"C:\Users\253\Desktop\20211118 \aaa.pdf");
//int numberOfPages = pdfReader.NumberOfPages;
//StringBuilder text = new StringBuilder();
//for (int i = 1; i <= numberOfPages; ++i)
//{
//    text.Append(iTextSharp.text.pdf.parser.PdfTextExtractor.GetTextFromPage(pdfReader, i));//獲取指定頁全部文字信息
//    break;
//}
//pdfReader.Close();
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者旁涤。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子乏屯,更是在濱河造成了極大的恐慌漾月,老刑警劉巖病梢,帶你破解...
    沈念sama閱讀 212,185評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異梁肿,居然都是意外死亡蜓陌,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評論 3 385
  • 文/潘曉璐 我一進店門吩蔑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钮热,“玉大人,你說我怎么就攤上這事烛芬∷砥冢” “怎么了?”我有些...
    開封第一講書人閱讀 157,684評論 0 348
  • 文/不壞的土叔 我叫張陵赘娄,是天一觀的道長仆潮。 經(jīng)常有香客問我,道長擅憔,這世上最難降的妖魔是什么鸵闪? 我笑而不...
    開封第一講書人閱讀 56,564評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮暑诸,結(jié)果婚禮上蚌讼,老公的妹妹穿的比我還像新娘辟灰。我一直安慰自己,他們只是感情好篡石,可當我...
    茶點故事閱讀 65,681評論 6 386
  • 文/花漫 我一把揭開白布芥喇。 她就那樣靜靜地躺著,像睡著了一般凰萨。 火紅的嫁衣襯著肌膚如雪继控。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,874評論 1 290
  • 那天胖眷,我揣著相機與錄音武通,去河邊找鬼。 笑死珊搀,一個胖子當著我的面吹牛冶忱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播境析,決...
    沈念sama閱讀 39,025評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼囚枪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了劳淆?” 一聲冷哼從身側(cè)響起链沼,我...
    開封第一講書人閱讀 37,761評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沛鸵,沒想到半個月后括勺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,217評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谒臼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,545評論 2 327
  • 正文 我和宋清朗相戀三年朝刊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜈缤。...
    茶點故事閱讀 38,694評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖冯挎,靈堂內(nèi)的尸體忽然破棺而出底哥,到底是詐尸還是另有隱情,我是刑警寧澤房官,帶...
    沈念sama閱讀 34,351評論 4 332
  • 正文 年R本政府宣布趾徽,位于F島的核電站,受9級特大地震影響翰守,放射性物質(zhì)發(fā)生泄漏孵奶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,988評論 3 315
  • 文/蒙蒙 一蜡峰、第九天 我趴在偏房一處隱蔽的房頂上張望了袁。 院中可真熱鬧朗恳,春花似錦、人聲如沸载绿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崭庸。三九已至怀浆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間怕享,已是汗流浹背执赡。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留函筋,地道東北人沙合。 一個月前我還...
    沈念sama閱讀 46,427評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像驻呐,于是被迫代替她去往敵國和親灌诅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,580評論 2 349

推薦閱讀更多精彩內(nèi)容