使用itext向pdf插入图片时,如何设置文本样式、图片位置??

st1122_xx 发布于 2015/06/11 14:34
阅读 16K+
收藏 0

在java中,使用itext在做doc转pdf时,一直没能找到完美的办法支持doc中的图片、文本样式等格式,所以现在想先提取出文档内容,再通过itext填入pdf;

已经提取doc文档内容,现在用itext将内容填入pdf中,请问:

1、插入文本时,如何获取到每个文本的样式??

2、插入图片时,如何控制插入图片的位置??

加载中
0
YYYYYYweoriusdilfj
YYYYYYweoriusdilfj

插入文本时样式可以用Font来定义:

Document doc = new Document();
doc.open();
Paragraph text = new Paragraph("your text", new Font(Font.getFamily("TIMES_ROMAN"), 18, Font.BOLD));
text.setAlignment(Element.ALIGN_CENTER);
doc.add(text);

以前插入过PDF文档,是用PdfReader读取然后用PdfWriter插入。插入图片应该是一样的原理:

PdfWriter.getImportedPage(new PdfReader(bufferdInputStream), pageNumber);

s
st1122_xx
插入的时候定义插入的样式我知道,但是文本是通过poi从doc/docx中抓取的,原有文本的样式如何获取呢?
0
YYYYYYweoriusdilfj
YYYYYYweoriusdilfj
poi我没用过,从网上搜了一下,这个应该可以解决你的问题:
http://stackoverflow.com/questions/17584413/how-to-read-font-size-of-each-word-in-a-word-document-using-poi


HWPFDocument doc = new HWPFDocument (fileStream);
WordExtractor we = new WordExtractor(doc);
Range range = doc.getRange();
String[] paragraphs = we.getParagraphText();
for (int i = 0; i < paragraphs.length; i++) {
  Paragraph pr = range.getParagraph(i);
  int k = 0;
  while (true) {
     CharacterRun run = pr.getCharacterRun(k++);
     System.out.println("Color: " + run.getColor());
     System.out.println("Font: " + run.getFontName());
     System.out.println("Font Size: " + run.getFontSize());
     if (run.getEndOffSet() == pr.getEndOffSet())
       break;
  }
}
s
st1122_xx
多谢帮助,刚才试用了一下,run.getFontName可以获取到字体名称,如“楷体”,但是代码中如何转换成Font呢?试用Font.getFamily("")是获取不到的
0
雨翔河
雨翔河
目前搞定了docx转pdf,doc的没搞定,我的想法是读取出所有的内容然后往pdf里插,但是这样问题遇到很多,最后放弃了,楼主有好的方法一定要告知下啊
xlongwei
xlongwei
使用第三方接口,https://www.showapi.com/api/lookPoint/770
s
st1122_xx
回复 @雨翔河 : 转pdf的过程实现了保留文本样式等格式了么
s
st1122_xx
回复 @雨翔河 : 不知道是否方便共享学习一下?我的Email是qt1143@163.com.....
雨翔河
雨翔河
回复 @st1122_xx : 有一个jar包,然后自己写了一下转换的代码,本来我想开源的,但是没啥时间提交到git@osc,所以没搞,可以交流一下,实现了docx转pdf,doc文字过滤,docx文字过滤,pdf文字过滤。
s
st1122_xx
回复 @蓝水晶飞机 : doc和docx底层结构都不一样,解析起来非常麻烦……
下一页
返回顶部
顶部