2014-09-29 71 views
3

我試圖使用PDFBox將下劃線文本添加到空白pdf頁面,但我一直未能在網上找到任何示例。所有關於stackoverflow的問題都指向提取帶下劃線的文本,但不是創建它。 PDFBox中沒有實現此功能?查看PDFBox文檔,似乎字體預先呈現爲粗體,斜體和常規。設置PDFBox中帶下劃線的文本樣式

PDFont font = PDType1Font.TIMES_ROMAN. 

宋體粗體表示爲:

例如,Times New Roman字體定期記

PDFont font = PDType1Font.TIMES_BOLD 

斜體表示爲:

PDFont font = PDType1Font.TIMES_ITALIC 

有似乎沒有加下劃線的選項。無論如何要強調文字,還是這不是一個功能?

+2

你不行。只需畫一條線。 – 2014-09-29 18:58:38

+0

@TilmanHausherr就是這樣。一旦我獲得了更多的理解,我會發布我的答案。 – antihero989 2014-09-29 19:36:18

回答

1

我不知道這是否是一個更好的不管選擇與否,但我跟着Tilman Hausherr畫了一條與我的文字相比較的線。舉例來說,我有以下幾點:

public processPDF(int xOne, int yOne, int xTwo, int yTwo) 
{ 
    //create pdf and its contents for one page 
    PDDocument document = new PDDocument(); 
    File file = new File("hello.pdf"); 
    PDPage page = new PDPage(); 
    PDFont font = PDType1Font.HELVETICA_BOLD; 
    PDPageContentStream contentStream; 

    try { 
     //create content stream 
     contentStream = new PDPageContentStream(document, page); 

     //being to create our text for our page 
     contentStream.beginText(); 
     contentStream.setFont(font, largeTitle); 

     //position of text 
     contentStream.moveTextPositionByAmount(xOne, yOne, xTwo, yTwo); 
     contentStream.drawString("Hello"); 
     contentStream.endText(); 

     //begin to draw our line 
     contentStream.drawLine(xOne, yOne - .5, xTwo, yYwo - .5); 

     //close and save document 
     document.save(file); 
     document.close(); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 

在那裏我們的參數XONE,YONE,xTwo和yTwo是我們的文本的位置。該行讓我們從yOne和yTwo減去.5,將它移動到文本位置下方,最終將其設置爲帶下劃線的文本。

可能有更好的辦法,但這是我走的路線。

0

嘗試這樣的回答:

highlight text using pdfbox when it's location in the pdf is known

使用PDAnnotationTextMarkup這種方法,它有四個值

/** 
* The types of annotation. 
*/ 
public static final String SUB_TYPE_HIGHLIGHT = "Highlight"; 
/** 
* The types of annotation. 
*/ 
public static final String SUB_TYPE_UNDERLINE = "Underline"; 
/** 
* The types of annotation. 
*/ 
public static final String SUB_TYPE_SQUIGGLY = "Squiggly"; 
/** 
* The types of annotation. 
*/ 
public static final String SUB_TYPE_STRIKEOUT = "StrikeOut"; 

希望它可以幫助

+0

本週我會嘗試這種方法,因爲我正在處理其他項目。但感謝您的意見!試用後我會接受這個答案。 – antihero989 2014-10-13 16:34:51

+0

看看這個四分點http://stackoverflow.com/questions/18781923/quadbounds-order-for-pdfannotation-markup-using-itext-or-pdfbox – serge 2014-10-13 22:00:41