多数の PDF ファイル内の一部のテキストをプログラムで検索して置換するにはどうすればよいですか? 一連のファイルに追加された URL を削除したいと考えています。Adobe Pro のバッチ処理で JavaScript を使用してリンクを削除できましたが、リンク テキストが残っています。手動で機能するテキストのタッチアップを使用することをお勧めしますが、1300 個のファイルを手動で変更したくありません。
10 に答える
PDFでテキストを検索することは、ドキュメント形式のグラフィックの性質のために本質的に難しい場合があります-検索している文字がファイル内で連続していない可能性があります。とはいえ、CAM::PDFにはいくつかの検索置換機能とヒューリスティックがあります。changepagestring.plを試して、PDFで機能するかどうかを確認してください。
インストールするには:
$ cpan install CAM::PDF
# start a new terminal if this is your first cpan module
$ changepagestring.pl input.pdf oldtext newtext output.pdf
私も必死になりました。すべての費用がかかり、成功しなかった10回のPDFエディターのインストール後:
pdftk + エディタで十分です:
PDF ファイルのテキストを置換
pdftk を使用して PDF ページ ストリームを圧縮解除する
pdftk original.pdf 出力 original.uncompressed.pdf 解凍
original.uncompressed.pdf 内のテキストを置き換えます (これが機能する場合と機能しない場合があります)。
変更された (現在は壊れている) PDF を修復する
pdftk original.uncompressed.pdf 出力 original.uncompressed.fixed.pdf
(ジョエル・デアより)
Adobe Acrobat Proの「編集」機能を使用して、1つのステップで単一のドキュメント内のすべての参照を検索および置換できます...複数のステップに自動化できるかどうかはわかりません。
http://help.adobe.com/en_US/Acrobat/9.0/Professional/WS5E28D332-9FF7-4569-AFAD-79AD60092D4D.w.html
二重発音区別符号と合成発音区別符号の文字が交互発音区別符号に置き換えられる別のテキストを生成することを期待して、発音区別符号が追加されたテキストで構成されるテキストのインフィックスを試し終えたところです。Infixは、プログラマティックソリューションの動作を理解する手間を気にしない人にとっては間違いなく良いソリューションです。すべてのリクエストの変更が有効になりました。テキストのレイアウトを変更する単語のリフローを実行する方法を理解する必要があります。
これは解決策の半分にすぎませんが、私は Touch up を AppleScript のキーストローク送信サポートと組み合わせて使用し、何千ものテーブル セルの文字列を置き換えました。ページのレイアウトによっては、うまくいく可能性があります。私の場合、すべてのテーブルの先頭にカーソルを手動で挿入する必要がありました (数十のテーブル - 手動プロセスでは非常に管理しやすい) が、その後、数千のセルを自動的に置き換えました。
あなたの 1300 ファイルを変更するためのコードを書くためのすべての作業を、あなたに代わって実行できるプログラムがある場合に、私がすべて行いたいと思うかどうかはわかりません。先日、Professional バージョンの Infix を使用して、「ファイル内の検索と置換」機能を使用して、ほぼ 100 個のファイルをバッチ変更しました。それはうまくいきます。Microsoft Word に似た検索および置換機能を見つけることを期待して、他のプログラムを評価しました。Infix は、それができる唯一のものでした。チェックアウト: http://www.iceni.com/infix-pro.htm
かなり古いスレッドですが。PDF 内のテキストを検索および置換する Node.js パッケージ オプションを共有したかっただけです: 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);
//});