本文介绍通过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文件导入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);
}
}

设置结果:

(完)

Java 设置PDF中的文本旋转、倾斜的更多相关文章

  1. Java 读取PDF中的文本和图片

    本文将介绍通过Java程序来读取PDF文档中的文本和图片的方法.分别调用方法extractText()和extractImages()来读取.   使用工具:Free Spire.PDF for Ja ...

  2. Java 在PDF中添加水印——文本/图片水印

    水印是一种十分常用的防伪手段,常用于各种文档.资料等.常见的水印,包括文字类型的水印.图片或logo类型的水印.以下Java示例,将分别使用insertTextWatermark(PdfPageBas ...

  3. java从pdf中提取文本

    一(单文件转换):下载pdfbox包,百度搜pdfbox.(fontbox-1.8.16.jar和pdfbox-app-1.8.16.jar) package pdf; import java.io. ...

  4. java itext替换PDF中的文本

    itext没有提供直接替换PDF文本的接口,我们可以通过在原有的文本区域覆盖一个遮挡层,再在上面加上文本来实现. 所需jar包: 1.先在PDF需要替换的位置覆盖一个白色遮挡层(颜色可根据PDF文字背 ...

  5. C# 设置或验证 PDF中的文本域格式

    概述 PDF中的文本域可以通过设置不同格式,用于显示数字.货币.日期.时间.邮政编码.电话号码和社保号等等.Adobe Acrobat提供了许多固定的JavaScripts用来设置和验证文本域的格式, ...

  6. 使用itext直接替换PDF中的文本

    直接说问题,itext没有直接提供替换PDF中文本的接口(查看资料得到的结论是PDF不支持这种操作),不过存在解决思路:在需要替换的文本上覆盖新的文本.按照这个思路我们需要解决以下几个问题: itex ...

  7. Java 在PDF中添加工具提示|ToolTip

    本文,将介绍如何通过Java后端程序代码在PDF中创建工具提示.添加工具提示后,当鼠标悬停在页面上的元素时,将显示工具提示内容. 导入jar包 本次程序中使用的是 Free Spire.PDF for ...

  8. Java 在PDF中添加水印

    在日常工作和学习中,PDF的普及给人们带来了极大的便利,但同时也出现了很多问题. PDF文件容易复制和传播,版权难以保护. 在海量文件中也很难区分信息,例如,你有没有打开一个文件夹,里面有这么多同名的 ...

  9. Java 在PDF 中添加超链接

    对特定元素添加超链接后,用户可以通过点击被链接的元素来激活这些链接,通常在被链接的元素下带有下划线或者以不同的颜色显示来进行区分.按照使用对象的不同,链接又可以分为:文本超链接,图像超链接,E-mai ...

随机推荐

  1. F - Distinct Numbers

    链接:https://atcoder.jp/contests/abc143/tasks/abc143_f 题解:开两个数组,其中一个arr用来保存每个元素出现的次数,同时再开一个数组crr用来保存出现 ...

  2. Windows线程+进程通信

    一 Windows线程进程 1)定义 按照MS的定义, Windows中的进程简单地说就是一个内存中的可执行程序, 提供程序运行的各种资源. 进程拥有虚拟的地址空间, 可执行代码, 数据, 对象句柄集 ...

  3. billu b0x2靶机渗透

    实战渗透靶机billu b0x2 攻击kali :192.168.41.147 靶机b0x2: 192.168.41.148 起手先nmap扫了一下 扫到了四个开放的端口,有ssh,http,rpcb ...

  4. Java中BigDecimal类

    由于在运算的时候,float类型和double很容易丢失精度,演示案例,所以,为了能精确地表示.计算浮点数,Java提供了BIgDecimal BigDecimal类的概述 不可变的.任意精度的有符号 ...

  5. java redis面试专题(附答案)

    1.什么是Redis?简述它的优缺点? Redis的全称是:Remote Dictionary.Server,本质上是一个Key-Value类型的内存数据库,很像 memcached,整个数据库统统加 ...

  6. golang/beego 微信模版消息

    // GO的微信SDK我用的是这个:https://github.com/silenceper/wechat // 发送模版消息 // UserNickName,UserMobile是发起预约的人的昵 ...

  7. 编译原理-第四章 语法分析-4.6 简单LR技术

    简单LR分析方法 一.LR语言分析器模型与算法 1.输入.输出.栈和方法 2.LR语法分析表 3.LR分析程序 4.例 例1: 例2: 二.LR语法分析算法 1.LR语法分析算法的定义和概念 定义: ...

  8. MarkDown排版测试

    1.标题设置 标题(大标题) 标题(小标题) 标题(一级标题) 标题( 二级标题) 标题(三级标题) 标题(四级标题) 备注:大标题与一级标题一样,小标题与二级标题一样,"#"前无 ...

  9. C++ Windows - How to get process path from its PID

    出处 https://stackoverflow.com/questions/1933113/c-windows-how-to-get-process-path-from-its-pid 注意质疑(我 ...

  10. Spring boot自定义parent POM

    文章目录 概述 不使用Parent POM来引入Spring boot 覆盖依赖项版本 概述 在之前的Spring Boot例子中,我们都会用到这样的parent POM. <parent> ...