Aspose.PDF功能演示:使用Java查找和替換PDF中的文本
在各種情況下,可能需要查找并替換PDF文檔中的特定文本。但是,手動查找和更新每個事件可能會花費您額外的時間和精力。在這種情況下,“查找并替換”選項使工作更輕松。在本文中,將學習如何使用Java自動查找和替換PDF文檔中的文本。
- 使用Java查找和替換PDF中的文本
- 替換PDF中特定頁面上的文本
- 使用正則表達式替換文本
Aspose.PDF for Java旨在從Java應用程序內部生成和處理PDF文件。該API提供了廣泛的基本和高級PDF操作功能,包括查找和替換文本。感興趣的朋友可點擊下方按鈕下載最新版。
使用Java查找和替換PDF中的文本
為了替換PDF中的特定文本,首先需要獲取與搜索字符串匹配的所有文本片段。有了它們后,只需將每個片段替換為更新的文本即可。以下是在PDF文件中查找和替換文本的步驟。
- 使用Document類加載PDF文件。
- 創(chuàng)建一個TextFragmentAbsorber類的對象,并使用您要查找和替換的文本對其進行初始化。
- 使用Document.getPages()。accept(TextFragmentAbsorber)方法為PDF頁面接受吸收器。
- 將由TextFragmentAbsorber.getTextFragments()返回的所有出現(xiàn)的文本獲取到TextFragmentCollection對象中。
- 循環(huán)遍歷TextFragmentCollection對象中的每個TextFragment,并使用TextFragment.setText(String)方法替換文本。
- 使用Document.save(String)方法保存更新的PDF文件。
下面的代碼示例演示如何使用Java查找和替換PDF中的文本。
// Open document Document pdfDocument = new Document("source.pdf"); // Create TextAbsorber object to find all instances of the input search phrase TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("sample"); // Accept the absorber for all pages of document pdfDocument.getPages().accept(textFragmentAbsorber); // Get the extracted text fragments into collection TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments(); // Loop through the fragments for (TextFragment textFragment : (Iterable) textFragmentCollection) { // Update text and other properties textFragment.setText("New Pharase"); textFragment.getTextState().setFont(FontRepository.findFont("Verdana")); textFragment.getTextState().setFontSize(22); textFragment.getTextState().setForegroundColor(Color.getBlue()); textFragment.getTextState().setBackgroundColor(Color.getGray()); } // Save the updated PDF file pdfDocument.save("Updated_Text.pdf");
替換PDF中特定頁面上的文本
除了在整個PDF中查找和替換文本外,您還可以指定一個頁面來替換出現(xiàn)的文本。在這種情況下,僅通過指定頁面索引即可接受特定頁面的TextFragmentAbsorber。以下是在PDF的特定頁面上查找和替換文本的步驟。
- 使用Document類加載PDF文件。
- 創(chuàng)建一個TextFragmentAbsorber類的對象,并使用您要查找和替換的文本對其進行初始化。
- 使用Document.getPages()。get_Item(Int pageIndex).accept(TextFragmentAbsorber)方法接受PDF中特定頁面的吸收器。
- 將由TextFragmentAbsorber.getTextFragments()返回的所有出現(xiàn)的文本獲取到TextFragmentCollection對象中。
- 循環(huán)遍歷TextFragmentCollection對象中的每個TextFragment,并使用TextFragment.setText(String)方法替換文本。
- 使用Document.save(String)方法保存更新的PDF文件。
下面的代碼示例演示如何使用Java在PDF的特定頁面上查找和替換文本。
// Open document Document pdfDocument = new Document("source.pdf"); // Create TextAbsorber object to find all instances of the input search phrase TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("sample"); // Accept the absorber for first page of document pdfDocument.getPages().get_Item(0).accept(textFragmentAbsorber); // Get the extracted text fragments into collection TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments(); // Loop through the fragments for (TextFragment textFragment : (Iterable) textFragmentCollection) { // Update text and other properties textFragment.setText("New Pharase"); textFragment.getTextState().setFont(FontRepository.findFont("Verdana")); textFragment.getTextState().setFontSize(22); textFragment.getTextState().setForegroundColor(Color.getBlue()); textFragment.getTextState().setBackgroundColor(Color.getGray()); } // Save the updated PDF file pdfDocument.save("Updated_Text.pdf");
使用PDF中的正則表達式替換文本
還可以指定正則表達式來查找與特定模式(例如電子郵件,SSN等)匹配的文本。以下是定義和使用正則表達式查找和替換PDF中文本的步驟。
- 使用Document類加載PDF文件。
- 創(chuàng)建TextFragmentAbsorber類的對象,并使用要使用的正則表達式對其進行初始化。
- 創(chuàng)建TextSearchOptions類的對象,并將其初始化為true以啟用基于正則表達式的搜索。
- 使用TextFragmentAbsorber.setTextSearchOptions(TextSearchOptions)方法設置選項。
- 使用Document.getPages()。accept(TextFragmentAbsorber)方法為PDF頁面接受吸收器。
- 將所有找到的由TextFragmentAbsorber.getTextFragments()返回的文本的出現(xiàn)都獲取到TextFragmentCollection對象中。
- 循環(huán)遍歷TextFragmentCollection對象中的每個TextFragment,并使用TextFragment.setText(String)方法替換文本。
- 使用Document.save(String)方法保存更新的PDF文件。
下面的代碼示例演示如何使用Java中的正則表達式查找和替換PDF中的文本。
// Open document Document pdfDocument = new Document("input.pdf"); // Create TextAbsorber object to find all instances of the input search phrase TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("\\d{4}-\\d{4}"); // like 1999-2000 // Set text search option to enable regular expression usage TextSearchOptions textSearchOptions = new TextSearchOptions(true); textFragmentAbsorber.setTextSearchOptions(textSearchOptions); // Accept the absorber for all pages of document pdfDocument.getPages().accept(textFragmentAbsorber); // Get the extracted text fragments into collection TextFragmentCollection textFragmentCollection = textFragmentAbsorber.getTextFragments(); // Loop through the fragments for (TextFragment textFragment : (Iterable) textFragmentCollection) { // Update text and other properties textFragment.setText("New Pharase"); textFragment.getTextState().setFont(FontRepository.findFont("Verdana")); textFragment.getTextState().setFontSize(22); textFragment.getTextState().setForegroundColor(Color.getBlue()); textFragment.getTextState().setBackgroundColor(Color.getGray()); } // Save the updated PDF file pdfDocument.save("Updated_Text.pdf");
如果您有任何疑問或需求,請隨時加入Aspose技術交流群(761297826),我們很高興為您提供查詢和咨詢。