如何使用PDFBox2.0找到和替换PDF文档中的文本,他们拉出了旧的示例,它的语法不再有效,所以我想知道这是否仍然可能,如果是,最好的方法是什么。谢了!
您可以这样尝试:
public static PDDocument replaceText(PDDocument document, String searchString, String replacement) throws IOException {
if (Strings.isEmpty(searchString) || Strings.isEmpty(replacement)) {
return document;
}
PDPageTree pages = document.getDocumentCatalog().getPages();
for (PDPage page : pages) {
PDFStreamParser parser = new PDFStreamParser(page);
parser.parse();
List tokens = parser.getTokens();
for (int j = 0; j < tokens.size(); j++) {
Object next = tokens.get(j);
if (next instanceof Operator) {
Operator op = (Operator) next;
//Tj and TJ are the two operators that display strings in a PDF
if (op.getName().equals("Tj")) {
// Tj takes one operator and that is the string to display so lets update that operator
COSString previous = (COSString) tokens.get(j - 1);
String string = previous.getString();
string = string.replaceFirst(searchString, replacement);
previous.setValue(string.getBytes());
} else if (op.getName().equals("TJ")) {
COSArray previous = (COSArray) tokens.get(j - 1);
for (int k = 0; k < previous.size(); k++) {
Object arrElement = previous.getObject(k);
if (arrElement instanceof COSString) {
COSString cosString = (COSString) arrElement;
String string = cosString.getString();
string = StringUtils.replaceOnce(string, searchString, replacement);
cosString.setValue(string.getBytes());
}
}
}
}
}
// now that the tokens are updated we will replace the page content stream.
PDStream updatedStream = new PDStream(document);
OutputStream out = updatedStream.createOutputStream();
ContentStreamWriter tokenWriter = new ContentStreamWriter(out);
tokenWriter.writeTokens(tokens);
page.setContents(updatedStream);
out.close();
}
return document;
}
在Atom中,对你文件或者项目中的文本进行查找或者替换,非常快速而且容易。 cmd-F 在缓冲区中查找 cmd-shift-f 在整个项目中查找 如果你执行了这些命令,你屏幕的底部会出现一个“Find and Replace”面板。 你可以按下cmd-F,输入需要搜索的字符串,并且多次按下回车(或者cmd-G,或者“Find Next”按钮)来在当前文件中搜索,循环查找当前文件中的匹配内容。“Fi
当我检查doc_text字符串时,我可以看到“{Today}”,但“{ConsultantName}”被拆分为多个运行。开始大括号和结束大括号不与单词放在一起--它们之间有XML标记: 代码
我有一些占位符的docx文档。现在我应该用其他内容替换它们,并保存新的docx文档。我从docx4j开始,发现了这个方法: 但这很少起作用,因为通常占位符会在多个文本运行中拆分。 如何解决这个问题?
了解如何在当前文档、文件夹、站点或所有打开的文档中查找和替换代码、文本或标签(包含或不包含属性)。 使用 Dreamweaver 强大的查找和替换功能在当前文档、文件夹、站点或所有打开的文档中查找和替换代码、文本或标签(包含或不包含属性)。 您还可以将强大的模式匹配算法(正则表达式)用于高级查找和替换操作。 可以查找和替换的内容如下: 代码中的标签、属性和文本 一个选区或多个选区中的文本 多个文档
我试图在表格的第2列中找到所有文本为“0.118”的单元格,并为该行列出命令列表。我还试图从该行中找到的选定文本的第5列中获取值,然后减去我在该行的输入框中输入的值。 我遇到的问题是,它只改变了我找到的“0.118”之一,而不是每行中的所有内容。 我不知道如何搜索选定行的列(5)。 任何帮助都将不胜感激。 非常感谢。
问题内容: 我有一个大约40万行的文本文件。我需要将此文本文件导入一个程序,该程序仅接受以空格或制表符分隔的文本文件,但是此文本文件以分号分隔。我要从(Arcmap)导出文本文件的程序中没有选项来更改分隔,并且在文本文件本身中进行查找和替换实际上需要2天。 我已经搜索了一个脚本来执行此操作,但是它们似乎都用空格替换了单词文件的整个LINE,而不是单独替换了每个分号,而给我留了一个空的文本文件。 这