Я ищу программное решение для обновления всех PDF-файлов путем замены в них определенного текста. Я готов реализовать это решение с использованием Java или Python.
Я попробовал приведенный ниже код, но он работает неправильно. Я получаю пустой документ.
Я также попробовал несколько предложений, опубликованных на stackoverflow, с использованием разных библиотек.
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.pdfbox.text.TextPosition;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class ReplaceTextPreserveFont {
public static void replaceTextInPDF(String inputFilePath, String outputFilePath, String targetText,
String replacementText) throws IOException {
// Load the PDF document
PDDocument document = PDDocument.load(new File(inputFilePath));
// Extract text and replace
List textPositions = new ArrayList();
PDFTextStripper stripper = new PDFTextStripper() {
@Override
protected void writeString(String text, List textPositionsList) throws IOException {
textPositions.addAll(textPositionsList);
super.writeString(text, textPositionsList);
}
};
// Extract text to locate the target text
stripper.getText(document);
for (PDPage page : document.getPages()) {
PDPageContentStream contentStream = new PDPageContentStream(document, page,
PDPageContentStream.AppendMode.OVERWRITE, false);
for (TextPosition textPosition : textPositions) {
String text = textPosition.getUnicode();
if (text.contains(targetText)) {
// Replace the text at the same position
contentStream.beginText();
contentStream.setFont(textPosition.getFont(), textPosition.getFontSize());
contentStream.newLineAtOffset(textPosition.getXDirAdj(), textPosition.getYDirAdj());
contentStream.showText(replacementText);
contentStream.endText();
}
}
contentStream.close();
}
// Save the updated document
document.save(outputFilePath);
document.close();
System.out.println("Text replaced and saved to: " + outputFilePath);
}
public static void main(String[] args) {
String inputFilePath = "G:\\Document.pdf";
String outputFilePath = "G:\\Updated_Document.pdf";
String targetText = "Jesse";
String replacementText = "James";
try {
replaceTextInPDF(inputFilePath, outputFilePath, targetText, replacementText);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... ginal-styl
Заменить все вхождения текста в PDF-файле программно, сохраняя исходный стиль. ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Заменить все вхождения текста в PDF-файле программно, сохраняя исходный стиль.
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-