如何编写文本搜索和替换PDF文件

时间:2008-10-21 00:54:11

标签: javascript pdf replace

我如何能够以编程方式搜索和替换大量PDF文件中的某些文本?我想删除已添加到一组文件的URL。我已经能够在Adobe Pro的批处理下使用javascript删除链接,但链接文本仍然存在。我见过使用文本touchup的建议,手动工作,但我不想手动修改1300个文件。

10 个答案:

答案 0 :(得分:15)

由于文档格式的图形性质,在PDF中查找文本本质上很难 - 您搜索的字母在文件中可能不是连续的。也就是说,CAM::PDF具有一些搜索替换功能和启发式功能。试试changepagestring.pl,看看它是否适用于您的PDF。

答案 1 :(得分:6)

我也变得绝望了。经过10次PDF编辑器安装后,这些都需要花钱,但没有成功:

pdftk +编辑器就足够了:

替换PDF文件中的文字

  • 使用pdftk解压缩PDF页面 流

    pdftk original.pdf output original.clear.pdf uncompress

  • 替换文字(有时会这样 工作,有时它没有。)

  • 修复修改后的(现在已损坏) PDF

    pdftk original.clear.pdf输出original.clear.fixed.pdf

  

(来自Joel Dare)

答案 2 :(得分:2)

您可以使用Adobe Acrobat Pro中的“编辑”功能查找&一步替换单个文档中的所有引用...不确定它是否可以自动执行多个步骤。

http://help.adobe.com/en_US/Acrobat/9.0/Professional/WS5E28D332-9FF7-4569-AFAD-79AD60092D4D.w.html

答案 3 :(得分:2)

当有程序可以为您执行此操作时,我不确定是否要执行编写代码来修改1300文件的所有工作。前几天,我使用专业版的Infix批量修改了近100个文件,使用其“在文件中查找和替换”功能。它很棒。我已经评估了其他程序,希望找到一个类似于Microsoft Word的查找和替换功能。 Infix是我发现的唯一可以做到的。查看:http://www.iceni.com/infix-pro.htm

答案 4 :(得分:1)

我刚刚尝试了一个由文本组成的文本中缀,该文本包含变音符号,希望生成另一个文本,其中带有双重和复合变音符号的字符被替换为单个变音符号。对于那些不关心理解程序化解决方案工作的人来说,Infix绝对是一个很好的解决方案。所有请求更改都已生效。仍然需要了解如何影响改变文本布局的单词的重排。

答案 5 :(得分:1)

这只是解决方案的一半,但我使用Touch up结合AppleScript支持发送击键来替换数千个表格单元格中的字符串。根据页面布局的不同,它可能适合您。在我的情况下,我不得不手动将光标插入每个表的开头(数十个表 - 对于手动过程来说非常易于管理),但之后我自动替换了数千个单元格。

答案 6 :(得分:1)

问题在于程序化解决方案,但我仍然会分享这个免费的在线工具,它帮助我大量替换某些PDF文件中的文本:

http://www.pdfdu.com/pdf-replace-text.aspx

替换文字后,我在结果PDF文件中没有注意到任何广告或其他修改。

我无法使用我尝试过的软件在本地进行更改。我认为主要问题是我错过了PDF中使用的字体,即使使用Acrobat Pro也无法正常工作。在线工具没有抱怨并产生了很好的结果。

答案 7 :(得分:0)

我建议您使用VeryPDF PDF Text Replacer命令行软件批量替换PDF页面中的文本,您可以运行pdftr.exe轻松替换PDF页面中的文本,例如,

pdftr.exe -contentreplace“我的名字=>你的名字”D:\ in.pdf D:\ out.pdf

pdftr.exe -searchandoverlaytext“我的名字=>你的名字”D:\ in.pdf D:\ out.pdf

pdftr.exe -searchandoverlaytext“我的名字=> D:\ temp \ myname.png * 20 * 20”D:\ in.pdf D:\ out.pdf

pdftr.exe -pagerange 1-3 -contentreplace“Old Text => New Text || VeryPDF => VeryDOC || My Name => Your Name”D:\ in.pdf D:\ out.pdf

pdftr.exe -searchtext“string”C:\ in.pdf

pdftr.exe -pagerange 1 -searchtext“string”C:\ in.pdf

pdftr.exe -pagerange 1 -searchandoverlaytext“Old Text => New Text || VeryPDF => VeryDOC || My Name => Your Name”D:\ in.pdf D:\ out.pdf

pdftr.exe -overlaytextfontname“Arial”-overlaytextcolor FF0000 -overlaybgcolor 00FF00 -searchandoverlaytext“Old Text => New Text || VeryPDF => VeryDOC || My Name => Your Name”D:\ in.pdf d:\ out.pdf

pdftr.exe -opw 123 -upw 456 -contentreplace“Old Text => New Text || VeryPDF => VeryDOC || My Name => Your Name”D:\ in.pdf D:\ out。 PDF

pdftr.exe -searchandoverlaytext“PDFcamp Printer => VeryPDF Printer”-overlaytextfontsize 8 D:\ in.pdf D:\ out.pdf

pdftr.exe -searchandoverlaytext“PDFcamp Printer => VeryPDF Printer”-overlaytextfontsize 80%D:\ in.pdf D:\ out.pdf

答案 8 :(得分:0)

虽然它是一个很老的线程。只是想分享一个 Node.js 包选项来搜索和替换 PDF 中的文本:Aspose.PDF Cloud SDK for Node.js。它是付费产品,但每月提供 150 次免费 API 调用。


const { PdfApi } = require("asposepdfcloud");
const { TextReplaceListRequest }= require("asposepdfcloud/src/models/textReplaceListRequest");
const { TextReplace }= require("asposepdfcloud/src/models/textReplace");

// Get Client ID and Client Secret from https://dashboard.aspose.cloud/
pdfApi = new PdfApi("xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxx");
var fs = require('fs');

const name = "02_pages.pdf";
const remoteTempFolder = "Temp";
//const localTestDataFolder = "C:\\Temp";
//const path = remoteTempFolder + "\\" + name;
//const outputFile= "Replace_output.pdf";


// Upload File
//pdfApi.uploadFile(path, fs.readFileSync(localTestDataFolder + "\\" + name)).then((result) => {  
//                     console.log("Uploaded File");    
//                    }).catch(function(err) {
    // Deal with an error
//    console.log(err);
//});
    
const textReplace= new TextReplace();
        textReplace.oldValue= "origami"; 
        textReplace.newValue= "aspose";
        textReplace.regex= false;

const textReplace1= new TextReplace();
        textReplace1.oldValue= "candy"; 
        textReplace1.newValue= "biscuit";
        textReplace1.regex= false;
    
const trr = new TextReplaceListRequest();
            trr.textReplaces = [textReplace,textReplace1];


// Replace text
pdfApi.postDocumentTextReplace(name, trr, null, remoteTempFolder).then((result) => {    
    console.log(result.body.code);                  
}).catch(function(err) {
    // Deal with an error
    console.log(err);
});

//Download file
//const outputPath = "C:/Temp/" + outputFile;

//pdfApi.downloadFile(path).then((result) => {    
//  fs.writeFileSync(outputPath, result.body);
//    console.log("File Downloaded");    
//}).catch(function(err) {
    // Deal with an error
//    console.log(err);
//});

答案 9 :(得分:0)

由于我找不到与 glyph spacing offsets 类似的任何内容,即看起来像这样的文本(这在 pdf 中似乎很常见),因此“其他信息”一词的显示方式如下:

 [(O)-16(ther i)-20(nformati)-11(on )]TJ

我试图自己写一个。它适用于常见用例。看看here

首先解压你的pdf,然后

语法

 $ crystal replaceinpdf.cr input_filename.pdf "something you want replaced" "what you want it replaced with" output.pdf