如何在 iTextSharp 中将 PDF 转换为文本文件

2023-11-23

我必须从 PDF 文件中检索文本。但使用下面的代码我只得到空文本文件。

for (int i = 0; i < n; i++)
{
    pagenumber = i + 1;
    filename = pagenumber.ToString();
    while (filename.Length < digits) filename = "0" + filename;
    filename = "_" + filename;
    filename = splitFile + name + filename;
    // step 1: creation of a document-object
    document = new Document(reader.GetPageSizeWithRotation(pagenumber));
    // step 2: we create a writer that listens to the document
    PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(filename + ".pdf", FileMode.Create));

    // step 3: we open the document
    document.Open();

    PdfContentByte cb = writer.DirectContent;
    PdfImportedPage page = writer.GetImportedPage(reader, pagenumber);
    int rotation = reader.GetPageRotation(pagenumber);
    if (rotation == 90 || rotation == 270)
    {
        cb.AddTemplate(page, 0, -1f, 1f, 0, 0, reader.GetPageSizeWithRotation(pagenumber).Height);
    }
    else
    {
        cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
    }
    // step 5: we close the document

    document.Close();
    PDFParser parser = new PDFParser();
    parser.ExtractText(filename + ".pdf", filename + ".txt");
}

我做错了什么以及如何从 PDF 中提取文本?


对于使用 iTextSharp 进行文本提取,请获取该库的当前版本并使用

PdfTextExtractor.GetTextFromPage(reader, pageNumber);

请注意,某些 5.3.x 版本中的文本提取代码存在错误,目前已修复。因此,请确保您使用的是最新的 5.5.x 版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 iTextSharp 中将 PDF 转换为文本文件 的相关文章

随机推荐

  • 如果用户提交表单,则不要询问确认

    我使用以下 JavaScript 代码来警告用户 如果他尝试重定向到另一个页面而不提交表单 window onbeforeunload function return Are you sure that you want to leave
  • servicePrincipalName 应该具有什么值?

    我正在尝试在我的服务上设置客户端模拟 我需要为我的服务端点的 servicePrincipalName 设置一个值 我正在看这个MSDN 文章但还是不太明白 我的服务托管在我们称为 ServerName1 的服务器上的控制台应用程序中 乌里
  • 类型的打字稿扩展运算符[重复]

    这个问题在这里已经有答案了 我正在尝试定义一种类型 该类型获取函数类型作为泛型参数 并返回一个与输入函数类型相同的函数类型 只是它最后还有一个参数 type AugmentParam
  • java.lang.NoClassDefFoundError:无法初始化类 sun.nio.ch.FileChannelImpl

    我正在开发一个执行的应用程序Jython 2 5 3脚本来自JAVA 1 6 027 该脚本只是使用编解码器库打开一个文件 如下所示 try from codecs import open as codecs open except Imp
  • 以正确的方式避免循环依赖 - NestJS

    说我有一个StudentService一种为学生增加课程的方法LessonService使用一种将学生添加到课程中的方法 在我的课程和学生解决程序中 我希望能够更新本课程学生关系 所以在我的LessonResolver我有一些类似的事情 a
  • 在 VS Code 控制台中调试 JavaScript

    如何在 VSCode 控制台中快速测试 JavaScript 如下图所示 我必须安装扩展才能执行此操作吗 我在 Ubuntu 和 Windows 10 中使用 VSCode 但我没有看到Console 我所看到的只是调试控制台 Proble
  • 这个带有可变引用参数的 JavaScript 函数是纯函数吗?

    我有同样的问题this one 但是在 JavaScript 的上下文中 From 维基百科 纯函数 的返回值与same论据 那里进一步声称 纯函数不允许使用 可变引用参数 来改变返回值 在 JavaScript 中 每个普通对象都作为 可
  • 将简单套接字变成 SSL 套接字

    我编写了简单的 C 程序 它们使用套接字 客户端 和 服务器 UNIX Linux 用法 服务器端简单地创建一个套接字 sockfd socket AF INET SOCK STREAM 0 然后将其绑定到 sockaddr bind so
  • 为什么 JPA 实体中的属性不允许“公共”?

    The JPA 2 0规范第 22 页说 类的实例变量必须 是私有的 受保护的或包的 可见性与是否 字段访问或属性访问是 用过的 当使用属性访问时 属性访问器方法必须是 公共或受保护 为什么不允许公众访问 对于公共字段 代理将无法可靠地工作
  • 使用自定义访问者时,如何停止使用 Boost Graph Library 进行广度优先搜索?

    假设我找到了符合我的条件的节点 我需要停止搜索 解决方案是抛出已知类型的异常 然后在调用方捕获它 来自FAQ 如何提前退出 BFS 等算法 创建一个在您想要中断搜索时抛出异常的访问者 然后将对 breadth first search 的调
  • Select 和 SelectMany 之间的区别

    我一直在寻找之间的区别Select and SelectMany但我一直没能找到合适的答案 我需要了解使用 LINQ To SQL 时的区别 但我发现的只是标准数组示例 有人可以提供 LINQ To SQL 示例吗 SelectMany展平
  • OpenCV Android - 使用 CameraBridgeViewBase 的颜色问题

    我在使用 Android 模拟器和 OpenCV 时遇到一个奇怪的问题CameraBridgeViewBase Using onCameraFrame我收到一张看起来未正确解码的图片 public Mat onCameraFrame CvC
  • 数组的 Arrays.asList()

    这个转换有什么问题吗 public int getTheNumber int factors ArrayList
  • Haskell 计算密集型线程会阻塞所有其他线程

    我想编写一个程序 其主线程分叉一个新线程进行计算并等待它完成一段时间 如果子线程没有在给定时间内完成 它将超时并被终止 我有以下代码 import Control Concurrent fibs Int gt Int fibs 0 0 fi
  • 恢复 Django-mailer 数据库时 MySQL 错误 1118(行大小太大)

    我从 django 应用程序转储了一个正在运行的生产数据库 并尝试将其迁移到我的本地开发环境 生产服务器运行MySQL 5 1 本地我有5 6 当迁移 django mailer 的 messagelog 表时 我遇到了可怕的错误 1118
  • SQL 错误:ORA-02000:创建基于标识列的表时缺少 ALWAYS 关键字

    我尝试在表上创建一个自动递增列 正如我在此看到的post有两种方法 使用 Identity 列的第二种实现是一个更优雅的解决方案 但是当我尝试实现它时 出现以下错误 Error at Command Line 3 Column 31 Err
  • 散点图中的颜色编码误差线

    我正在尝试创建一个森林地块 with R plotly我想通过相应的 p 值对效应大小 点 及其误差线进行颜色编码 以下是玩具数据 set seed 1 factors lt paste0 1 25 age effect sizes lt
  • 为什么 Devise 将注册错误重定向到不同的页面?

    我创建了新的 Rails 项目 仅使用生成的主页控制器来测试它 我的设计型号是User 所以注册页面是http localhost 3000 users sign up 如果我触发错误 例如 在未提供密码的情况下提交表单 我会被重定向到ht
  • UIView alpha = 0 导致触摸被删除到下面的视图

    因此 我创建了一个玻璃窗格或自定义 UIView 来处理触摸 该玻璃窗格位于其他视图 例如虚拟 UIButtons 之上 当我将 alpha 设置为 0 时 触摸实际上会被玻璃视图下方的视图拦截 这是错误的 但是 当我将 alpha 设置为
  • 如何在 iTextSharp 中将 PDF 转换为文本文件

    我必须从 PDF 文件中检索文本 但使用下面的代码我只得到空文本文件 for int i 0 i lt n i pagenumber i 1 filename pagenumber ToString while filename Lengt