c# PdfSharp 判断PDF某页是否存在图片和文本内容

使用PDFSharp 判断某一页PDF文件 是否有图片,是否有文本内容,我使用的是c# pdfsharp 版本:1.50.5147

private void Button_Click(object sender, RoutedEventArgs e)
        {
        //this.tb_html.Text.Trim()  是获取pdf本地路径
            using (PdfDocument document = PdfReader.Open(this.tb_html.Text.Trim(), PdfDocumentOpenMode.Modify))
            {
                foreach (PdfPage page in document.Pages)
                {
                    try
                    {
                        bool isImg = false;
                        // Get resources dictionary
                        PdfDictionary resources = page.Elements.GetDictionary("/Resources");
                        if (resources != null)
                        {
                            // Get external objects dictionary
                            PdfDictionary xObjects = resources.Elements.GetDictionary("/XObject");
                            if (xObjects != null)
                            {
                                ICollection<PdfItem> items = xObjects.Elements.Values;

                                // Iterate references to external objects
                                foreach (PdfItem item in items)
                                {
                                    PdfReference reference = item as PdfReference;
                                    if (reference != null)
                                    {
                                        PdfDictionary xObject = reference.Value as PdfDictionary;
                                        // Is external object an image?
                                        if (xObject != null && xObject.Elements.GetString("/Subtype") == "/Image")
                                        {

                                            //TODO 有图片
                                            isImg = true;
                                            break;
                                            // do something with your image here 
                                             only the first image is handled here
                                            //var bitmap = ExportImage(xObject);
                                            //bmp.Save(@"c:\temp\exported.png", System.Drawing.Imaging.ImageFormat.Bmp);
                                        }
                                    }
                                }
                            }
                        }
                        // 解析页面内容
                        CObject content = ContentReader.ReadContent(page);
                        var text = ExtractText(content)?.ToList();
                        Debug.WriteLine($"当前页是否存在文本内容{text?.Count > 0}#是否存在图片{isImg}");

                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!你可以使用C#编写一个程序来PDF文件的文本信息。下面是一个简单的示例代码: ```csharp using System; using PdfSharp.Pdf; using PdfSharp.Pdf.IO; using PdfSharp.Pdf.Content; using PdfSharp.Pdf.Content.Objects; namespace PDFTextExtractor { class Program { static void Main(string[] args) { string pdfFilePath = "path_to_your_pdf_file.pdf"; // 打开PDF文件 PdfDocument document = PdfReader.Open(pdfFilePath); string text = ""; // 遍历每一页 for (int pageNumber = 0; pageNumber < document.Pages.Count; pageNumber++) { // 获取当前页的内容 CObject content = ContentReader.ReadContent(document.Pages[pageNumber]); // 提取文本内容 foreach (var item in ExtractText(content)) { text += item.Text; } } Console.WriteLine(text); } // 递归提取文本内容 static private CObject[] ExtractText(CObject obj) { if (obj is COperator) { COperator op = (COperator)obj; if (op.OpCode.Name == OpCodeName.Tj.ToString() || op.OpCode.Name == OpCodeName.TJ.ToString()) return op.Operands; } if (obj is CSequence) { CSequence seq = (CSequence)obj; foreach (CObject item in seq) { CObject[] result = ExtractText(item); if (result != null) return result; } } return null; } } } ``` 请确保你已经安装了 `PdfSharp` 库,并将 `path_to_your_pdf_file.pdf` 替换为你要提取文本PDF文件的路径。 这个程序将遍历PDF文件的每一页,并提取文本内容。最后,将提取到的文本打印到控制台上。你可以根据自己的需求进行进一步的处理和使用。 希望对你有所帮助!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值