java中字符串后加Box_PDFBox添加多行文档

在前一章中提供的示例中,学习了如何在PDF中向页面添加文本,但通过此程序,只能添加适合单行的文本。 如果您尝试添加更多内容,则不会显示超出行间距的所有文字。

例如,如果传递以下字符串在上一章中执行上述程序,则只会显示其中的一部分。

String text = "This is an example of adding text to a page in the pdf document. we can

add as many lines as we want like this using the showText() method of the

ContentStream class";

用上面提到的字符串替换上一章中例子的字符串文本并执行它。 执行后,将得到类似以下输出。

46123e88c1e8b4cfd33d71d9014ab314.png

如果仔细观察输出,可以看到只显示了一部分字符串。

要将多行添加到PDF,需要使用setLeading()方法设置前导,并在每行完成后使用newline()方法切换到新行。

以下是创建空白文档并将多行文本内容添加到页面的步骤。

第1步:加载现有文档

使用PDDocument类的load()方法加载现有文档。 因此,请实例化此类并加载所需的文档,如下所示。

File file = new File("Path of the document");

PDDocument doc = PDDocument.load(file);

第2步:获取所需的页面

使用getPage()方法获取文档中的所需页面。 通过将索引传递给此方法来检索所需页面的对象,如下所示。

PDPage page = doc.getPage(1);

第3步:准备内容流

使用PDPageContentStream类的对象来插入各种数据元素。 因此,需要将文档对象和页面对象传递给此类的构造函数,通过传递在前面的步骤中创建的这两个对象来实例化此类,如下所示。

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

第4步:开始文本

在PDF文档中插入文本时,可以使用PDPageContentStream类的beginText()和endText()方法指定文本的开始点和结束点,如下所示。

contentStream.beginText();

......

code to add text content

......

contentStream.endText();

因此,使用beginText()方法开始文本,如下所示。

contentStream.beginText();

第5步:设置文本的位置

使用newLineAtOffset()方法,可以在页面中设置内容流的位置。

//Setting the position for the line

contentStream.newLineAtOffset(25, 700);

第6步:设置字体

使用PDPageContentStream类的setFont()方法将文本的字体设置为所需的样式,如下所示,需要传递该字体的类型和大小。

contentStream.setFont( font_type, font_size );

第7步:设置文本引导

可以使用setLeading()方法设置文本引导,如下所示。

contentStream.setLeading(14.5f);

第8步:使用newline()插入多个字符串

使用PDPageContentStream类的ShowText()方法插入多个字符串,方法是使用newline()方法将每个字符串分开,如下所示。

contentStream. ShowText(text1);

contentStream.newLine();

contentStream. ShowText(text2);

第9步:结束文本

插入文本后,需要使用PDPageContentStream类的endText()方法结束文本,如下所示。

contentStream.endText();

第10步:关闭PDPageContentStream

使用close()方法关闭PDPageContentStream对象,如下所示。

contentstream.close();

第11步:保存文档

添加所需内容后,使用PDDocument类的save()方法保存PDF文档,如以下代码块中所示。

doc.save("Path");

第12步:关闭文件

最后,使用PDDocument类的close()方法关闭文档,如下所示。

doc.close();

示例

本示例演示如何使用PDFBox在PDF中添加多行。 此程序保存在名称为AddMultipleLines.java的文件中。

package com.yiibai;

import java.io.File;

import java.io.IOException;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.pdmodel.PDPage;

import org.apache.pdfbox.pdmodel.PDPageContentStream;

import org.apache.pdfbox.pdmodel.font.PDFont;

import org.apache.pdfbox.pdmodel.font.PDType0Font;

import org.apache.pdfbox.pdmodel.font.PDType1Font;

public class AddMultipleLines {

public static void main(String args[]) throws IOException {

//Loading an existing document

File file = new File("F:/worksp/pdfbox/my_doc.pdf");

PDDocument doc = PDDocument.load(file);

//Creating a PDF Document

PDPage page = doc.getPage(1);

PDFont font = PDType0Font.load(doc, new File("c:/windows/fonts/times.ttf"));

PDPageContentStream contentStream = new PDPageContentStream(doc, page);

//Begin the Content stream

contentStream.beginText();

//Setting the font to the Content stream

contentStream.setFont( PDType1Font.TIMES_ROMAN, 16 );

System.out.println(" getName => "+font.getName());

// contentStream.setFont( font, 16 );

//Setting the leading

contentStream.setLeading(14.5f);

//Setting the position for the line

contentStream.newLineAtOffset(25, 725);

String text1 = "This is an example of adding text to a page in the pdf document. we can add as many lines";

String text2 = "as we want like this using the ShowText() method of the ContentStream class";

//Adding text in the form of string

contentStream.showText(text1);

contentStream.newLine();

contentStream.newLine();

contentStream.showText(text2);

contentStream.newLine();

//Ending the content stream

contentStream.endText();

System.out.println("Content added");

//Closing the content stream

contentStream.close();

//Saving the document

doc.save(new File("F:/worksp/pdfbox/new-mul-doc.pdf"));

//Closing the document

doc.close();

}

}

执行上面示例代码后,在指定路径中打开PDF文档:new-mul-doc.pdf,则可以观察到给定内容以多行添加到文档中,如下所示。

6710e7f7b55ee67da8238b39e99a6fec.png

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值