0
A
回答
0
我發現在pdf中編輯文本是不可靠的,所以嘗試用矩形(白色/背景色填充)清除文本,並將新文本寫入清除的位置。這是一個示例代碼。
//to add a link in footer
//to replace a text
//to replace a link/url/href
public static void editTextorUrl(String inputFile, String outputFile)
throws IOException, COSVisitorException {
// the document
PDDocument doc = null;
try {
System.out.println(inputFile);
doc = PDDocument.load(inputFile);
List pages = doc.getDocumentCatalog().getAllPages();
for (int i = 0; i < pages.size(); i++) {
float inch = 72;
PDGamma colourRed = new PDGamma();
colourRed.setR(1);
PDGamma colourBlue = new PDGamma();
colourBlue.setB(1);
PDGamma white = new PDGamma();
white.setR(1);
white.setB(1);
white.setG(1);
PDBorderStyleDictionary borderThick = new PDBorderStyleDictionary();
borderThick.setWidth(inch/12); // 12th inch
PDBorderStyleDictionary borderThin = new PDBorderStyleDictionary();
borderThin.setWidth(inch/72); // 1 point
PDBorderStyleDictionary borderULine = new PDBorderStyleDictionary();
borderULine.setStyle(PDBorderStyleDictionary.STYLE_UNDERLINE);
borderULine.setWidth(inch/72); // 1 point
PDPage page = (PDPage) pages.get(i);
PDFont font = PDType1Font.HELVETICA;
PDPageContentStream contentStream = new PDPageContentStream(
doc, page, true, false);
contentStream.setNonStrokingColor(Color.WHITE);
contentStream.fillRect(55, 27, 144, 17);
contentStream.setNonStrokingColor(Color.BLUE);
contentStream.beginText();
contentStream.setFont(font, 11);
contentStream.moveTextPositionByAmount(55, 37);
contentStream.drawString("www.loasoftwares.com"); //text to be replaced
contentStream.endText();
contentStream.setLineWidth(inch/300);
contentStream.setStrokingColor(Color.BLUE);
contentStream.drawLine(55, 34, 188, 34);
contentStream.close();
PDAnnotationLink txtLink = new PDAnnotationLink();
PDRectangle position = new PDRectangle();
position.setLowerLeftX(55);
position.setLowerLeftY(27);
position.setUpperRightX(188);
position.setUpperRightY(50);
txtLink.setRectangle(position);
// add an action
PDActionURI action = new PDActionURI();
action.setURI("www.loasoftwares.com");
txtLink.setBorderStyle(borderULine);
txtLink.setAction(action);
txtLink.setColour(white);
page.getAnnotations().add(txtLink);
}
doc.save(outputFile);
} finally {
if (doc != null) {
doc.close();
}
}
}
+0
儘管真正編輯PDF中的文本通常很困難,但簡單地用白色矩形覆蓋文本通常不是一個好主意:文本仍可通過複製和粘貼訪問,而白色可能在非純白色的背景。 – mkl
相關問題
- 1. 使用PDFBox從Java編輯PDF
- 2. Java PDFBOX文本編碼
- 3. 創建文本PDF(PDFBox的?)
- 4. 使用pdfbox編輯pdf頁面
- 5. Java編輯PDF
- 6. 用Java編輯PDF文件
- 7. 使用Java PDFBox庫編寫俄語PDF
- 8. 創建PDF與PDFBOX
- 9. 使PDF可編輯在Java
- 10. PDFBox的0.7.3將PDF轉換爲文本
- 11. PDFBOX支持的PDF版本
- 12. Java - PDFBox 1.8.9 unicode textfile to pdf
- 13. 使用PDFBox替換PDF文本
- 14. PDF與itext和pdfbox合併
- 15. 使用Java iText PDF API保存可編輯的PDF
- 16. J2ME中的文本編輯器 - 將文本存儲在內存中以編輯
- 17. 在Java中讀取PDF作爲文件並使「PDF」可編輯
- 18. iText連續PDF編輯java
- 19. 剪輯和創建新的PDF與現有的PDF頁碼作爲輸入 - pdfbox
- 20. 在java中編輯文本文件
- 21. pdfbox操縱PDF文檔 - android
- 22. Java文本編輯器Api
- 23. Java Eclipse文本編輯器
- 24. 在PDFBOX中創建PDF文件(從現有的pdf文件)
- 25. 如何在java中編輯PDF屬性?
- 26. PDFBox新增文本不會出現在PDF文檔中
- 27. 可編輯QComboBox:與項目文本同步編輯文本
- 28. 保存文本編輯文本
- 29. 的Apache PDFBox的2.0文本不中創建PDF文件
- 30. 在UIDocumentInteractionController中編輯PDF並保存..?
見http://stackoverflow.com/questions/7269257/editing-pdf-from-java-using-pdfbox –
我發現這一點,但只是添加文本。不編輯。在圖書館是類PDFTextStripper和工作,但它只提取文本,沒有風格等...而我需要編輯存在的文本。 – cervotoc