博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java实现pdf旋转_基于Java实现PDF文本旋转倾斜
阅读量:6452 次
发布时间:2019-06-23

本文共 2666 字,大约阅读时间需要 8 分钟。

本文介绍通过Java程序在PDF文档中设置文本旋转、倾斜的方法。设置文本倾斜时,通过定义方法TransformText(page);并设置page.getCanvas().skewTransform(float angleX, float angleY);

来实现文本倾斜;设置文本旋转时,通过定义方法RotateText(page);并设置page.getCanvas().rotateTransform(float angle);来实现文本旋转。详细代码示例参考以下内容。

注:需要使用PDF类库工具Spire.PDF for Java,可下载jar包,并解压将lib文件夹下载Jar包并解压,并解压将lib文件夹下的jar文件导入java程序;或者也可以通过Maven仓库下载导入。

Java示例

import com.spire.pdf.*;

import com.spire.pdf.graphics.*;

import java.awt.*;

public class TextStyle {

public static void main(String[] args) {

//创建PDF文档,添加一页

PdfDocument pdf = new PdfDocument();

PdfPageBase page = pdf.appendPage();

//设置文本倾斜

TransformText(page);

//旋转文本

RotateText(page);

//保存文档

pdf.saveToFile("DrawText.pdf",FileFormat.PDF);

pdf.close();

}

//自定义方法在页面添加文本,并设置文本偏移

private static void TransformText(PdfPageBase page)

{

PdfGraphicsState state = page.getCanvas().save();//保存画布状态

PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 18f);//创建字体,包括字体、字号等

//创建三个画刷,并指定颜色

PdfSolidBrush brush1 = new PdfSolidBrush(new PdfRGBColor(new Color(60,179,113)));

PdfSolidBrush brush2 = new PdfSolidBrush(new PdfRGBColor(new Color(139,0,139)));

PdfSolidBrush brush3 = new PdfSolidBrush(new PdfRGBColor(new Color(205,92,92)));

page.getCanvas().translateTransform(20,120);//设置文本在画布中的坐标位置

page.getCanvas().scaleTransform(1f,1f);//设置文本大小(scaleX值越大,文本越向右横向拉伸;scaleY值越大,文本越向上纵向拉伸)

page.getCanvas().skewTransform(-10,0);//设置文本偏转角度(angleX值为文本整体偏移角度,angleY值为字符偏移角度)

page.getCanvas().drawString("Go! Turn Around! Go! Go! Go!", font, brush1, 0, 0);//绘制文本

page.getCanvas().skewTransform(10, 10);

page.getCanvas().drawString("Go! Turn Around! Go! Go! Go!", font, brush2, 0, 0);//绘制文本

page.getCanvas().scaleTransform(1f, -2f);

page.getCanvas().drawString("Go! Turn Around! Go! Go! Go!", font, brush3, 0, -2 * 18);//绘制文本

//再次保存画布状态

page.getCanvas().restore(state);

}

//自定义方法在页面添加文本,并设置文本旋转

private static void RotateText(PdfPageBase page)

{

PdfGraphicsState state = page.getCanvas().save();//保存画布状态

PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 10f);//创建字体

PdfSolidBrush brush4 = new PdfSolidBrush(new PdfRGBColor(139,69,19));//创建画刷4

PdfStringFormat centerAlignment = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);//设置文本对齐方式

//指定文本在画布中的坐标位置

float x = (float) (page.getCanvas().getClientSize().getWidth()/2);

float y = 390;

page.getCanvas().translateTransform(x,y);

//循环绘制12条文本内容,并设置每条文本内容间隔30度,即每一条文本内容以绘制的上一文本内容旋转30度(这里如只需绘制单个文本,直接指定旋转角度即可)

for (int i = 0; i < 12; i++) {

page.getCanvas().rotateTransform(30);

page.getCanvas().drawString("Go! Turn Around! Go! Go! Go!", font, brush4, 20, 0, centerAlignment);

}

//再次保存画布状态

page.getCanvas().restore(state);

}

}

设置结果:

b4f67b83c5bc3727c9119e6ecaf86f9e.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

转载地址:http://vcyzo.baihongyu.com/

你可能感兴趣的文章
easyui的combotree以及tree,c#后台异步加载的详细介绍
查看>>
1、串(字符串)以及串的模式匹配算法
查看>>
[Processing]点到线段的最小距离
查看>>
考研随笔2
查看>>
ubuntu Linux 操作系统安装与配置
查看>>
操作系统os常识
查看>>
乱码的情况
查看>>
虚拟机centos 同一个tomcat、不同端口访问不同的项目
查看>>
在不花一分钱的情况下,如何验证你的创业想法是否可行?《转》
查看>>
Linux/Android 性能优化工具 perf
查看>>
GitHub使用教程、注册与安装
查看>>
论以结果为导向
查看>>
CODE[VS] 1294 全排列
查看>>
<<The C Programming Language>>讀書筆記
查看>>
如何在目录中查找具有指定字符串的文件(shell)
查看>>
DotNet(C#)自定义运行时窗体设计器 一
查看>>
JS详细入门教程(上)
查看>>
Android学习笔记21-ImageView获取网络图片
查看>>
线段树分治
查看>>
git代码冲突
查看>>