基于Java實(shí)現(xiàn)PDF文本旋轉(zhuǎn)傾斜
本文介紹通過(guò)Java程序在PDF文檔中設(shè)置文本旋轉(zhuǎn)、傾斜的方法。設(shè)置文本傾斜時(shí),通過(guò)定義方法TransformText(page);并設(shè)置page.getCanvas().skewTransform(float angleX, float angleY);
來(lái)實(shí)現(xiàn)文本傾斜;設(shè)置文本旋轉(zhuǎn)時(shí),通過(guò)定義方法RotateText(page);并設(shè)置page.getCanvas().rotateTransform(float angle);來(lái)實(shí)現(xiàn)文本旋轉(zhuǎn)。詳細(xì)代碼示例參考以下內(nèi)容。
注:需要使用PDF類(lèi)庫(kù)工具Spire.PDF for Java,可下載jar包,并解壓將lib文件夾下載Jar包并解壓,并解壓將lib文件夾下的jar文件導(dǎo)入java程序;或者也可以通過(guò)Maven倉(cāng)庫(kù)下載導(dǎo)入。
Java示例
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
public class TextStyle {
public static void main(String[] args) {
//創(chuàng)建PDF文檔,添加一頁(yè)
PdfDocument pdf = new PdfDocument();
PdfPageBase page = pdf.appendPage();
//設(shè)置文本傾斜
TransformText(page);
//旋轉(zhuǎn)文本
RotateText(page);
//保存文檔
pdf.saveToFile("DrawText.pdf",FileFormat.PDF);
pdf.close();
}
//自定義方法在頁(yè)面添加文本,并設(shè)置文本偏移
private static void TransformText(PdfPageBase page)
{
PdfGraphicsState state = page.getCanvas().save();//保存畫(huà)布狀態(tài)
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 18f);//創(chuàng)建字體,包括字體、字號(hào)等
//創(chuàng)建三個(gè)畫(huà)刷,并指定顏色
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);//設(shè)置文本在畫(huà)布中的坐標(biāo)位置
page.getCanvas().scaleTransform(1f,1f);//設(shè)置文本大?。╯caleX值越大,文本越向右橫向拉伸;scaleY值越大,文本越向上縱向拉伸)
page.getCanvas().skewTransform(-10,0);//設(shè)置文本偏轉(zhuǎn)角度(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);//繪制文本
//再次保存畫(huà)布狀態(tài)
page.getCanvas().restore(state);
}
//自定義方法在頁(yè)面添加文本,并設(shè)置文本旋轉(zhuǎn)
private static void RotateText(PdfPageBase page)
{
PdfGraphicsState state = page.getCanvas().save();//保存畫(huà)布狀態(tài)
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 10f);//創(chuàng)建字體
PdfSolidBrush brush4 = new PdfSolidBrush(new PdfRGBColor(139,69,19));//創(chuàng)建畫(huà)刷4
PdfStringFormat centerAlignment = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);//設(shè)置文本對(duì)齊方式
//指定文本在畫(huà)布中的坐標(biāo)位置
float x = (float) (page.getCanvas().getClientSize().getWidth()/2);
float y = 390;
page.getCanvas().translateTransform(x,y);
//循環(huán)繪制12條文本內(nèi)容,并設(shè)置每條文本內(nèi)容間隔30度,即每一條文本內(nèi)容以繪制的上一文本內(nèi)容旋轉(zhuǎn)30度(這里如只需繪制單個(gè)文本,直接指定旋轉(zhuǎn)角度即可)
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);
}
//再次保存畫(huà)布狀態(tài)
page.getCanvas().restore(state);
}
}
設(shè)置結(jié)果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Java 在PDF中繪制形狀的兩種方法
- 三種Java打印PDF文檔的實(shí)例代碼
- Java 在PDF中添加條形碼的兩種方法
- Java實(shí)現(xiàn)Word/Pdf/TXT轉(zhuǎn)html的實(shí)例代碼
- Java 添加、替換、刪除PDF中的圖片的示例代碼
- Java PDF 添加數(shù)字簽名的實(shí)現(xiàn)方法
- java實(shí)現(xiàn)word文檔轉(zhuǎn)pdf并添加水印的方法詳解
- java實(shí)現(xiàn)截取PDF指定頁(yè)并進(jìn)行圖片格式轉(zhuǎn)換功能
- java pdf加水印的方法
- Java 在PDF中添加騎縫章示例解析
相關(guān)文章
maven基礎(chǔ)教程——簡(jiǎn)單了解maven的特點(diǎn)與功能
這篇文章主要介紹了Maven基礎(chǔ)教程的相關(guān)資料,文中講解非常細(xì)致,幫助大家開(kāi)始學(xué)習(xí)maven,感興趣的朋友可以了解下2020-07-07
Spring?Boot+RabbitMQ?通過(guò)fanout模式實(shí)現(xiàn)消息接收功能(支持消費(fèi)者多實(shí)例部署)
這篇文章主要介紹了Spring?Boot+RabbitMQ?通過(guò)fanout模式實(shí)現(xiàn)消息接收(支持消費(fèi)者多實(shí)例部署),本文通過(guò)案例場(chǎng)景分析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
淺談SpringBoot中的@Conditional注解的使用
這篇文章主要介紹了淺談SpringBoot中的@Conditional注解的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
Java使用cxf發(fā)布及調(diào)用webservice接口的方法詳解
今天小編就為大家分享一篇關(guān)于Java使用CXF發(fā)布及調(diào)用WebService接口的方法,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2023-08-08
Java基礎(chǔ)之詳解基本數(shù)據(jù)類(lèi)型的使用
今天給大家?guī)?lái)的是關(guān)于Java基礎(chǔ)的相關(guān)知識(shí),文章圍繞著基本數(shù)據(jù)類(lèi)型的使用展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
mybatis的好幫手之MybatisCodeHelperPro詳解
這篇文章主要介紹了mybatis的好幫手之MybatisCodeHelperPro詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Java和Ceylon對(duì)象的構(gòu)造和驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了Java和Ceylon對(duì)象的構(gòu)造和驗(yàn)證,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
如何讓W(xué)in10實(shí)現(xiàn)Java文件的開(kāi)機(jī)自啟動(dòng)
這篇文章主要介紹了如何讓W(xué)in10實(shí)現(xiàn)Java文件的開(kāi)機(jī)自啟動(dòng),對(duì)于一些想要一直運(yùn)行的Java文件,就會(huì)造成每次系統(tǒng)更新之后的重啟導(dǎo)致Java文件無(wú)法繼續(xù)運(yùn)行。,需要的朋友可以參考下2019-06-06

