java生成pdf--文

java 操作pdf

文字

分为单行文字和多行文字

类库

  <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>pdfbox</artifactId>
      <version>2.0.27</version>
    </dependency>
    <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>pdfbox-app</artifactId>
      <version>2.0.27</version>
    </dependency>
    <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>fontbox</artifactId>
      <version>2.0.27</version>
    </dependency>
    <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>xmpbox</artifactId>
      <version>2.0.27</version>
    </dependency>
    <dependency>
      <groupId>org.apache.pdfbox</groupId>
      <artifactId>pdfbox-tools</artifactId>
      <version>2.0.27</version>
    </dependency>
   

生成单行文字

 		contentStream.beginText();
        contentStream.setFont(PDType1Font.TIMES_ROMAN, Config.getFontSize());
        contentStream.newLineAtOffset(coordinate.getX(),y);
        contentStream.showText(text);
        contentStream.endText();
  
        

生成多行文字

        contentStream.beginText();
        contentStream.setFont(PDType1Font.TIMES_ROMAN, Config.getFontSize());
        contentStream.newLineAtOffset(coordinate.getX(),y);
        contentStream.setLeading(Config.getMarginLeading());
        List<String> strs = list(text);
        for(String s :strs){
            contentStream.showText(s);
            contentStream.newLine();
            compute(y);
        }
        contentStream.endText();  
        
    private List<String> list(String text){
        String[] strs = text.split("\\n");
        List<String> _list = new ArrayList<>();
        int num = fontNum();
        for(String s:strs){
            do{
                if(s.length()> num){
                    String ss = s.substring(0,num);
                    s = s.substring(num);
                    _list.add(ss);
                }else{
                    _list.add(s);
                }

            }while(s.length()>= num);

        }
        return _list;
    }

测试

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值