在 .txt 文件中查找并替换 pdftotext 生成的图像字符

Posted

技术标签:

【中文标题】在 .txt 文件中查找并替换 pdftotext 生成的图像字符【英文标题】:Find and replace pdftotext generated image character in .txt file 【发布时间】:2022-01-21 18:12:01 【问题描述】:

我使用 php 的 pdftotext 从 pdf 创建了很多 .txt 文件。

像这样使用它,它对所有文件中的所有文本部分都非常有效:

system("pdftotext -raw dir/$pdf_file 2>&1");

问题

但是,在新的 .txt 文件中,pdf 中的所有图像都显示为:

在 FTP 中打开文件时出现“FF” 浏览器中带有 urlencode 的字符 '%0C' (fopen) 不带 urlencode (fopen) 的向上箭头 ^L,当在命令行上使用 less 时(在 CentOs 7 中),即使是单个文件名上的 sed 's/^L//g' 也不起作用。

因此,在所有这些视图中,我可以通过不同的方式来处理这个奇怪的字符。

问题

在尝试了这么多代码一周后,我仍在寻找一种方法来从所有 .txt 文件中找到并删除这个奇怪的图像字符。

有解决办法吗?

或者,在这里做什么是明智的?使用带有代码或在命令行上的 php 文件?我现在对这个有点迷失了。

【问题讨论】:

这不是 PHP 命令;这是一个系统命令,其手册页在这里:linux.die.net/man/1/pdftotext - 声明“不再推荐使用原始模式”。 ... 【参考方案1】:

打印纯文本时的代码约定是 FF 通常意味着 FormFeed 它是打印机的控制代码

↑ 12 00/12 14 %0C FF (CtrL=^L) FORM FEED(分页符)

这是一种指示/弹出页尾的方法,因此您应该在页面之间的分隔处看到一个。

有一个开关可以删除/排除它们,所以试试吧,

system("pdftotext -raw -nopgbrk dir/$pdf_file 2>&1");

【讨论】:

非常感谢!我本可以自己想到这一点,但现在这也是一个很好的教训!再次感谢! 我正在阅读您的答案,这让我意识到这是一个非常有见地的答案。我当然应该先尝试“nopgbrk”选项,但我希望其他人也能通过你的回答找到他们的解决方案。 ps。更不用说两个姓名首字母相同的人在这里相互交流的可能性和有趣的事实。如果@*** 为此创建了一个徽章,那将是一件很酷的事情!也许是“同名”徽章?可能是一个不错的设计!

以上是关于在 .txt 文件中查找并替换 pdftotext 生成的图像字符的主要内容,如果未能解决你的问题,请参考以下文章

在目录中递归查找和替换文件名

mfc中怎么查找txt文件中数据,并进行修改

bat文件中如何查找某个字符串并对其进行替换

Bat如何替换文件内容?

Bat如何替换文件内容?

使用 sed 在 linux 中查找以开头并替换的行 [重复]