c#如何从PDF页面url中获取PDF文本

本文关键字:PDF 获取 文本 url 页面 | 更新日期: 2023-09-27 18:03:33

c#如何从PDF页面url获取PDF文本

例如一个网页包含PDF文本,我想从页面读取所有文本

c#如何从PDF页面url中获取PDF文本

PDFBox是一个Java PDF库,你也可以在c#中使用。

你应该做:

1。解压缩"PDFBox.zip"包,得到

IKVM.GNU.Classpath.dll
PDFBox-0.7.3.dll
FontBox-0.1.0-dev.dll
IKVM.Runtime.dll

2。将这些dll导入到c#项目中。使用:

using org.pdfbox.pdmodel;
using org.pdfbox.util;

3。你可以这样写代码:

using System.IO;
using System.Text;
using org.pdfbox.pdmodel;
using org.pdfbox.util;
namespace PDFReader
{
    class Program
    {
        public static void pdf2txt(FileInfo pdffile, FileInfo txtfile)
        {
            PDDocument doc = PDDocument.load(pdffile.FullName);
            PDFTextStripper pdfStripper = new PDFTextStripper();
            string text = pdfStripper.getText(doc);
            StreamWriter swPdfChange = new StreamWriter(txtfile.FullName, false, Encoding.GetEncoding("gb2312"));
            swPdfChange.Write(text);
            swPdfChange.Close();
        }
        static void Main(string[] args)
        {
            pdf2txt(new FileInfo(@"C:/Users/yourpdf.pdf"), new FileInfo(@"C:/Users/yourcontent.txt"));
        }
    }
}

//首先发送页面的源路径www.abc.com

public byte[] GetByteArray(string sourcePath)
    {
        byte[] outBytes = null;
        try
        {
            using (WebClient wc = new WebClient())
            {
                outBytes = wc.DownloadData(sourcePath);
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        return outBytes;
    }

//上面的方法返回一个字节数组,使用该字节数组
//使用Itextsharp.dll从字节数组中获取文本//下载以上库使用链接https://sourceforge.net/projects/itextsharp/

  public string[] GetLines(byte[] outBytes)
    {
        string resultPdfText = "";
        string[] lines = null;
        try
        {
            MemoryStream outPDF = new MemoryStream();
            using (PdfReader pdfr = new PdfReader(outBytes))
            {
                iTextSharp.text.Document doc = new iTextSharp.text.Document();
                iTextSharp.text.Document.Compress = true;
                PdfWriter writer = PdfWriter.GetInstance(doc, outPDF);
                doc.Open();
                for (int i = 1; i <= pdfr.NumberOfPages; i++)
                {
                    resultPdfText += PdfTextExtractor.GetTextFromPage(pdfr, i, new LocationTextExtractionStrategy());
                }
                lines = resultPdfText.Split(''n');
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        return lines;
    }

如果你想从在线源代码加载PDF,然后添加这个代码使用这个库

using System.IO;
using org.apache.pdfbox.pdmodel;
using org.apache.pdfbox.util;
using System.Text;
using java.net;

并在代码中使用new URL()方法更改加载文件方法,如下所示

        PDDocument doc = PDDocument.load((new URL("http://www.pdf995.com/samples/pdf.pdf")));
        PDFTextStripper pdfStripper = new PDFTextStripper();
        string text = pdfStripper.getText(doc);