不久,我想提請使用iText
在特定的矩形文本,它可以在PDF編輯器工具可以選擇。這裏是我的嘗試:畫出矩形可選擇的文本與iText的
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE_RESULT));
document.open();
// first
TextField data = new TextField(writer, new Rectangle(30, 60, 200, 200), "1- this text generated by textfiled");
data.setFontSize(10);
data.setTextColor(BaseColor.GRAY);
data.setText("1- this text generated by textfiled");
PdfFormField datafield = data.getTextField();
writer.addAnnotation(datafield);
// second
PdfContentByte cb = writer.getDirectContent();
cb.saveState();
cb.beginText();
cb.moveText(200, 400);
cb.setFontAndSize(BaseFont.createFont(), 14);
cb.showText("2- this text is generated by PdfContentByte ");
cb.endText();
cb.restoreState();
// third
ColumnText ct = new ColumnText(writer.getDirectContent());
writer.setCompressionLevel(0);
ct.setSimpleColumn(100,100,400,300);
ct.setText(new Phrase("3- this text is generated by ColumnText"));
ct.go();
document.close();
我在我的電腦和谷歌驅動文件在網絡上使用Foxit reader
爲PDF格式的工具,谷歌的驅動器可以選擇文本,但福昕不能(只要再次測試)。
而here是輸出。
以上三種方式並不是我想要的。我想另一種方式,我可以輸入一個矩形(左,上,下,右),文字將適合這個矩形,因爲它可以(字體大小是動態的)。有什麼想法或例子可以實現這一點嗎?
P/S:要解釋布魯諾Lowagie:
- 我不知道
PdfContentByte
添加文本是爲專業人士或沒有,我只是尋找和嘗試。 - 我已經嘗試了第二種方式(
PdfContentByte
),但它不工作,那麼我刪除這些代碼,所以現在我要再次搜索複製併發布到StackOverflow上,我認爲這是類似於我試試。現在我再次寫測試。
你沒有提到你的意思是「PDF編輯器工具」,你的指控是錯誤的。在第一個代碼片段中,創建一個AcroForm表單字段。文本字段的文本是交互式的。它是可選的,可編輯的,你可以複製/粘貼它。在你的第二個代碼片段中,你可以使用最困難的代碼在絕對位置添加靜態文本。你可能需要'ColumnText',但你應該首先更新你的問題,因爲它有不同的缺陷。請參閱http://itextpdf.com/themes/keyword.php?id=59查看「ColumnText」示例。 –
我已更新我的問題。我忘記了提及我使用了'Foxit reader'(和Google Drive on web)來選擇文本,但我認爲這不是投票結束和關閉提問請求的原因。簡單地投票沒有任何意義。問題在於第一種方法,文本無法通過這些工具選擇。因爲我只是這個圖書館的新手,所以我不知道如何正確使用它,這就是我在這裏發佈的原因。我會看一下'Column Text'。謝謝! – R4j
我「棄解」我的投票,但我仍然認爲這個問題很奇怪。分享PDF。如果您確實擁有AcroForm文本字段,則應該可以選擇,即使在Foxit中也是如此。這是添加* interactive *字段的整個想法。你說什麼會違反ISO的ISO標準。另外,如果你是新手,你應該從官方文檔開始。使用'PdfContentByte'添加文本是專業人士使用的。我不知道爲什麼新手會複製/粘貼這樣的代碼。 –