All Downloads are FREE. Search and download functionalities are using the official Maven repository.

wiki.xsx.core.pdf.handler.XEasyPdfHandler Maven / Gradle / Ivy

The newest version!
package wiki.xsx.core.pdf.handler;

import wiki.xsx.core.pdf.component.XEasyPdfComponent;
import wiki.xsx.core.pdf.component.barcode.XEasyPdfBarCode;
import wiki.xsx.core.pdf.component.circle.XEasyPdfCircle;
import wiki.xsx.core.pdf.component.image.XEasyPdfImage;
import wiki.xsx.core.pdf.component.image.XEasyPdfImageType;
import wiki.xsx.core.pdf.component.image.XEasyPdfSVGImage;
import wiki.xsx.core.pdf.component.layout.XEasyPdfHorizontalLayout;
import wiki.xsx.core.pdf.component.layout.XEasyPdfLayoutComponent;
import wiki.xsx.core.pdf.component.layout.XEasyPdfVerticalLayout;
import wiki.xsx.core.pdf.component.line.XEasyPdfBaseLine;
import wiki.xsx.core.pdf.component.line.XEasyPdfDottedSplitLine;
import wiki.xsx.core.pdf.component.line.XEasyPdfSolidSplitLine;
import wiki.xsx.core.pdf.component.rect.XEasyPdfRect;
import wiki.xsx.core.pdf.component.table.XEasyPdfCell;
import wiki.xsx.core.pdf.component.table.XEasyPdfRow;
import wiki.xsx.core.pdf.component.table.XEasyPdfTable;
import wiki.xsx.core.pdf.component.text.XEasyPdfText;
import wiki.xsx.core.pdf.component.text.XEasyPdfTextExtend;
import wiki.xsx.core.pdf.component.text.XEasyPdfTextScript;
import wiki.xsx.core.pdf.doc.*;
import wiki.xsx.core.pdf.footer.XEasyPdfDefaultFooter;
import wiki.xsx.core.pdf.footer.XEasyPdfFooter;
import wiki.xsx.core.pdf.header.XEasyPdfDefaultHeader;
import wiki.xsx.core.pdf.header.XEasyPdfHeader;
import wiki.xsx.core.pdf.mark.XEasyPdfDefaultWatermark;
import wiki.xsx.core.pdf.util.XEasyPdfFontUtil;

import java.io.File;
import java.io.InputStream;
import java.util.List;

/**
 * pdf助手
 *
 * @author xsx
 * @date 2020/4/1
 * @since 1.8
 * 

* Copyright (c) 2020-2023 xsx All Rights Reserved. * x-easypdf is licensed under Mulan PSL v2. * You can use this software according to the terms and conditions of the Mulan PSL v2. * You may obtain a copy of Mulan PSL v2 at: * http://license.coscl.org.cn/MulanPSL2 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. * See the Mulan PSL v2 for more details. *

*/ public class XEasyPdfHandler { /** * pdf文档 */ public static class Document { /** * 构建pdf */ public static XEasyPdfDocument build() { return new XEasyPdfDocument(); } /** * 构建pdf * * @param pages 页面 */ public static XEasyPdfDocument build(XEasyPdfPage... pages) { return new XEasyPdfDocument().addPage(pages); } /** * 构建pdf * * @param pages 页面列表 */ public static XEasyPdfDocument build(List pages) { return new XEasyPdfDocument().addPage(pages); } /** * 加载pdf * * @param sourcePath 源文件路径 */ public static XEasyPdfDocument load(String sourcePath) { return new XEasyPdfDocument(sourcePath); } /** * 加载pdf * * @param sourcePath 源文件路径 * @param password 密码 */ public static XEasyPdfDocument load(String sourcePath, String password) { return new XEasyPdfDocument(sourcePath, password); } /** * 加载pdf * * @param sourcePath 源文件路径 * @param password 密码 * @param keyStore 证书输入流 * @param alias 证书别名 */ public static XEasyPdfDocument load(String sourcePath, String password, InputStream keyStore, String alias) { return new XEasyPdfDocument(sourcePath, password, keyStore, alias); } /** * 加载pdf * * @param sourceInputStream 源文件数据流 */ public static XEasyPdfDocument load(InputStream sourceInputStream) { return new XEasyPdfDocument(sourceInputStream); } /** * 加载pdf * * @param sourceInputStream 源文件数据流 * @param password 密码 */ public static XEasyPdfDocument load(InputStream sourceInputStream, String password) { return new XEasyPdfDocument(sourceInputStream, password); } /** * 加载pdf * * @param sourceInputStream 源文件数据流 * @param password 密码 * @param keyStore 证书输入流 * @param alias 证书别名 */ public static XEasyPdfDocument load(InputStream sourceInputStream, String password, InputStream keyStore, String alias) { return new XEasyPdfDocument(sourceInputStream, password, keyStore, alias); } } /** * pdf页面 */ public static class Page { /** * 总页码占位符 */ private static final String TOTAL_PAGE_PLACEHOLDER = XEasyPdfConstants.TOTAL_PAGE_PLACEHOLDER; /** * 当前页码占位符 */ private static final String CURRENT_PAGE_PLACEHOLDER = XEasyPdfConstants.CURRENT_PAGE_PLACEHOLDER; /** * 构建页面 * * @param components 组件列表 * @return 返回pdf页面组件 */ public static XEasyPdfPage build(List components) { return new XEasyPdfPage(null).addComponent(components); } /** * 构建页面 * * @param components 组件 * @return 返回pdf页面组件 */ public static XEasyPdfPage build(XEasyPdfComponent... components) { return new XEasyPdfPage(null).addComponent(components); } /** * 构建页面 * * @param watermark 页面水印组件 * @param components 组件 * @return 返回pdf页面组件 */ public static XEasyPdfPage build(XEasyPdfDefaultWatermark watermark, XEasyPdfComponent... components) { return new XEasyPdfPage(null).setWatermark(watermark).addComponent(components); } /** * 构建页面 * * @param watermark 页面水印组件 * @param components 组件列表 * @return 返回pdf页面组件 */ public static XEasyPdfPage build(XEasyPdfDefaultWatermark watermark, List components) { return new XEasyPdfPage(null).setWatermark(watermark).addComponent(components); } /** * 构建页面 * * @param pageSize pdf页面尺寸 * @param components 组件 * @return 返回pdf页面组件 */ public static XEasyPdfPage build(XEasyPdfPageRectangle pageSize, XEasyPdfComponent... components) { return new XEasyPdfPage(pageSize).addComponent(components); } /** * 构建页面 * * @param pageSize pdf页面尺寸 * @param components 组件列表 * @return 返回pdf页面组件 */ public static XEasyPdfPage build(XEasyPdfPageRectangle pageSize, List components) { return new XEasyPdfPage(pageSize).addComponent(components); } /** * 构建页面 * * @param pageSize pdf页面尺寸 * @param watermark 页面水印组件 * @param components 组件 * @return 返回pdf页面组件 */ public static XEasyPdfPage build(XEasyPdfPageRectangle pageSize, XEasyPdfDefaultWatermark watermark, XEasyPdfComponent... components) { return new XEasyPdfPage(pageSize).setWatermark(watermark).addComponent(components); } /** * 构建页面 * * @param pageSize pdf页面尺寸 * @param watermark 页面水印组件 * @param components 组件列表 * @return 返回pdf页面组件 */ public static XEasyPdfPage build(XEasyPdfPageRectangle pageSize, XEasyPdfDefaultWatermark watermark, List components) { return new XEasyPdfPage(pageSize).setWatermark(watermark).addComponent(components); } /** * 获取总页码占位符 * * @return 返回总页码占位符 */ public static String getTotalPagePlaceholder() { return TOTAL_PAGE_PLACEHOLDER; } /** * 获取当前页码占位符 * * @return 返回当前页码占位符 */ public static String getCurrentPagePlaceholder() { return CURRENT_PAGE_PLACEHOLDER; } /** * 页面尺寸 */ public static class Rectangle { /** * A0 *

841 * 1189,单位:mm

*

2383.937 * 3370.3938,单位:px

*/ public static final XEasyPdfPageRectangle A0 = XEasyPdfPageRectangle.A0; /** * A1 *

594 * 841,单位:mm

*

1683.7795 * 2383.937,单位:px

*/ public static final XEasyPdfPageRectangle A1 = XEasyPdfPageRectangle.A1; /** * A2 *

420 * 594,单位:mm

*

1190.5513 * 1683.7795,单位:px

*/ public static final XEasyPdfPageRectangle A2 = XEasyPdfPageRectangle.A2; /** * A3 *

297 * 420,单位:mm

*

841.8898 * 1190.5513,单位:px

*/ public static final XEasyPdfPageRectangle A3 = XEasyPdfPageRectangle.A3; /** * A4 *

210 * 297,单位:mm

*

595.27563 * 841.8898,单位:px

*/ public static final XEasyPdfPageRectangle A4 = XEasyPdfPageRectangle.A4; /** * A5 *

148 * 210,单位:mm

*

419.52756 * 595.27563,单位:px

*/ public static final XEasyPdfPageRectangle A5 = XEasyPdfPageRectangle.A5; /** * A6 *

105 * 148,单位:mm

*

297.63782 * 419.52756,单位:px

*/ public static final XEasyPdfPageRectangle A6 = XEasyPdfPageRectangle.A6; /** * A7 *

74 * 105,单位:mm

*

209.76378 * 297.63782,单位:px

*/ public static final XEasyPdfPageRectangle A7 = XEasyPdfPageRectangle.A7; /** * A8 *

52 * 74,单位:mm

*

147.40158 * 209.76378,单位:px

*/ public static final XEasyPdfPageRectangle A8 = XEasyPdfPageRectangle.A8; /** * B0 *

1030 * 1456,单位:mm

*

2919.685 * 4127.244,单位:px

*/ public static final XEasyPdfPageRectangle B0 = XEasyPdfPageRectangle.B0; /** * B1 *

728 * 1030,单位:mm

*

2063.622 * 2919.685,单位:px

*/ public static final XEasyPdfPageRectangle B1 = XEasyPdfPageRectangle.B1; /** * B2 *

515 * 728,单位:mm

*

1459.8425 * 2063.622,单位:px

*/ public static final XEasyPdfPageRectangle B2 = XEasyPdfPageRectangle.B2; /** * B3 *

364 * 515,单位:mm

*

1031.811 * 1459.8425,单位:px

*/ public static final XEasyPdfPageRectangle B3 = XEasyPdfPageRectangle.B3; /** * B4 *

257 * 364,单位:mm

*

728.50397 * 1031.811,单位:px

*/ public static final XEasyPdfPageRectangle B4 = XEasyPdfPageRectangle.B4; /** * B5 *

182 * 257,单位:mm

*

515.9055 * 728.50397,单位:px

*/ public static final XEasyPdfPageRectangle B5 = XEasyPdfPageRectangle.B5; /** * B6 *

128 * 182,单位:mm

*

362.83466 * 515.9055,单位:px

*/ public static final XEasyPdfPageRectangle B6 = XEasyPdfPageRectangle.B6; /** * B7 *

91 * 128,单位:mm

*

257.95276 * 362.83466,单位:px

*/ public static final XEasyPdfPageRectangle B7 = XEasyPdfPageRectangle.B7; /** * B8 *

64 * 91,单位:mm

*

181.41733 * 257.95276,单位:px

*/ public static final XEasyPdfPageRectangle B8 = XEasyPdfPageRectangle.B8; } } /** * pdf水印组件 */ public static class Watermark { /** * 构建页面水印 * * @param text 水印文本 * @return 返回pdf页面水印组件 */ public static XEasyPdfDefaultWatermark build(String text) { return new XEasyPdfDefaultWatermark(text); } /** * 构建页面水印 * * @param fontSize 字体大小 * @param text 水印文本 * @return 返回pdf页面水印组件 */ public static XEasyPdfDefaultWatermark build(float fontSize, String text) { return new XEasyPdfDefaultWatermark(fontSize, text); } } /** * pdf文本组件 */ public static class Text { /** * 构建文本 * * @param text 待写入文本 * @return 返回pdf文本组件 */ public static XEasyPdfText build(String text) { return new XEasyPdfText(text); } /** * 构建文本 * * @param textList 待写入文本列表 * @return 返回pdf文本组件 */ public static XEasyPdfText build(List textList) { return new XEasyPdfText(textList); } /** * 构建文本 * * @param fontSize 字体大小 * @param text 待写入文本 * @return 返回pdf文本组件 */ public static XEasyPdfText build(float fontSize, String text) { return new XEasyPdfText(fontSize, text); } /** * 构建文本 * * @param fontSize 字体大小 * @param textList 待写入文本列表 * @return 返回pdf文本组件 */ public static XEasyPdfText build(float fontSize, List textList) { return new XEasyPdfText(fontSize, textList); } } /** * pdf文本扩展组件 */ public static class TextExtend { /** * 构建文本角标 * * @param text 待写入文本 * @return 返回pdf文本扩展组件 */ public static XEasyPdfTextExtend build(String text) { return new XEasyPdfTextExtend(text); } /** * 构建文本角标 * * @param text 待写入文本 * @param scriptText 待写入角标文本 * @return 返回pdf文本扩展组件 */ public static XEasyPdfTextExtend build(String text, String scriptText) { return new XEasyPdfTextExtend(text, scriptText); } } /** * pdf文本角标组件 */ public static class TextScript { /** * 构建文本角标 * * @param text 待写入文本 * @return 返回pdf文本角标组件 */ public static XEasyPdfTextScript build(String text) { return new XEasyPdfTextScript(text); } } /** * pdf线条组件 */ public static class Line { /** * 构建线条 * * @param beginX 当前页面X轴起始坐标 * @param beginY 当前页面Y轴起始坐标 * @param endX 当前页面X轴结束坐标 * @param endY 当前页面Y轴结束坐标 * @return 返回pdf线条组件 */ public static XEasyPdfBaseLine build(float beginX, float beginY, float endX, float endY) { return new XEasyPdfBaseLine(beginX, beginY, endX, endY); } } /** * pdf分割线组件 */ public static class SplitLine { /** * 实线 */ public static class SolidLine { /** * 构建实线分割线 * * @return 返回pdf实线分割线组件 */ public static XEasyPdfSolidSplitLine build() { return new XEasyPdfSolidSplitLine(); } } /** * 虚线 */ public static class DottedLine { /** * 构建虚线分割线 * * @return 返回pdf虚线分割线组件 */ public static XEasyPdfDottedSplitLine build() { return new XEasyPdfDottedSplitLine(); } } } /** * pdf图片组件 */ public static class Image { /** * 构建图片 * * @param image 待添加图片 * @return 返回pdf图片组件 */ public static XEasyPdfImage build(File image) { return new XEasyPdfImage(image); } /** * 构建图片 * * @param imageInputStream 待添加图片数据流 * @param imageType 待添加图片类型(扩展名) * @return 返回pdf图片组件 */ public static XEasyPdfImage build(InputStream imageInputStream, XEasyPdfImageType imageType) { return new XEasyPdfImage(imageInputStream, imageType); } /** * 构建图片 * * @param image 待添加图片 * @param width 图片宽度 * @param height 图片高度 * @return 返回pdf图片组件 */ public static XEasyPdfImage build(File image, int width, int height) { return new XEasyPdfImage(image, width, height); } /** * 构建图片 * * @param imageInputStream 待添加图片数据流 * @param imageType 待添加图片类型(扩展名) * @param width 图片宽度 * @param height 图片高度 * @return 返回pdf图片组件 */ public static XEasyPdfImage build(InputStream imageInputStream, XEasyPdfImageType imageType, int width, int height) { return new XEasyPdfImage(imageInputStream, imageType, width, height); } } /** * pdf矢量图片组件 */ public static class SVGImage { /** * 构建矢量图片 * * @return 返回pdf矢量图片组件 */ public static XEasyPdfSVGImage build() { return new XEasyPdfSVGImage(); } } /** * pdf条形码(一维码/二维码)组件 */ public static class BarCode { /** * 构建条形码 * * @param codeType 条形码类型 * @param content 条形码内容 * @return 返回pdf条形码组件 */ public static XEasyPdfBarCode build(XEasyPdfBarCode.CodeType codeType, String content) { return new XEasyPdfBarCode(codeType, content); } /** * 构建条形码 * * @param codeType 条形码类型 * @param content 条形码内容 * @param words 条形码文字 * @return 返回pdf条形码组件 */ public static XEasyPdfBarCode build(XEasyPdfBarCode.CodeType codeType, String content, String words) { return new XEasyPdfBarCode(codeType, content, words); } /** * 构建条形码 * * @param codeType 条形码类型 * @param content 条形码内容 * @param beginX X轴起始坐标 * @param beginY Y轴起始坐标 * @return 返回pdf条形码组件 */ public static XEasyPdfBarCode build(XEasyPdfBarCode.CodeType codeType, String content, float beginX, float beginY) { return new XEasyPdfBarCode(codeType, content, beginX, beginY); } /** * 构建条形码 * * @param codeType 条形码类型 * @param content 条形码内容 * @param words 条形码文字 * @param beginX X轴起始坐标 * @param beginY Y轴起始坐标 * @return 返回pdf条形码组件 */ public static XEasyPdfBarCode build(XEasyPdfBarCode.CodeType codeType, String content, String words, float beginX, float beginY) { return new XEasyPdfBarCode(codeType, content, words, beginX, beginY); } } /** * pdf矩形组件 */ public static class Rect { /** * 构建矩形 * * @param width 宽度 * @param height 高度 * @return 返回pdf矩形组件 */ public static XEasyPdfRect build(float width, float height) { return new XEasyPdfRect(width, height); } /** * 构建矩形 * * @param width 宽度 * @param height 高度 * @param beginX X轴起始坐标 * @param beginY Y轴起始坐标 * @return 返回pdf矩形组件 */ public static XEasyPdfRect build(float width, float height, float beginX, float beginY) { return new XEasyPdfRect(width, height, beginX, beginY); } } /** * pdf圆形组件 */ public static class Circle { /** * 构建圆形 * * @param radius 半径 * @return 返回pdf圆形组件 */ public static XEasyPdfCircle build(float radius) { return new XEasyPdfCircle(radius); } /** * 构建圆形 * * @param radius 半径 * @param beginX X轴起始坐标 * @param beginY Y轴起始坐标 * @return 返回pdf圆形组件 */ public static XEasyPdfCircle build(float radius, float beginX, float beginY) { return new XEasyPdfCircle(radius, beginX, beginY); } } /** * pdf表格组件 */ public static class Table { /** * pdf表格行 */ public static class Row { /** * pdf单元格 */ public static class Cell { /** * 构建单元格 * * @param width 宽度 * @return 返回pdf单元格组件 */ public static XEasyPdfCell build(float width) { return new XEasyPdfCell(width); } /** * 构建单元格 * * @param width 宽度 * @param height 高度 * @return 返回pdf单元格组件 */ public static XEasyPdfCell build(float width, float height) { return new XEasyPdfCell(width, height); } } /** * 构建表格行 * * @param cells 单元格 * @return 返回pdf表格行组件 */ public static XEasyPdfRow build(XEasyPdfCell... cells) { return new XEasyPdfRow(cells); } /** * 构建表格行 * * @param cellList 单元格列表 * @return 返回pdf表格行组件 */ public static XEasyPdfRow build(List cellList) { return new XEasyPdfRow(cellList); } } /** * 构建表格 * * @param rows 表格行 * @return 返回pdf表格组件 */ public static XEasyPdfTable build(XEasyPdfRow... rows) { return new XEasyPdfTable(rows); } /** * 构建表格 * * @param rowList 表格行列表 * @return 返回pdf表格组件 */ public static XEasyPdfTable build(List rowList) { return new XEasyPdfTable(rowList); } } /** * pdf页眉组件 */ public static class Header { /** * 构建页眉 * * @return 返回pdf页眉组件 */ public static XEasyPdfHeader build() { return new XEasyPdfDefaultHeader(); } /** * 构建页眉 * * @param component 自定义组件 * @return 返回pdf页眉组件 */ public static XEasyPdfHeader build(XEasyPdfComponent component) { return new XEasyPdfDefaultHeader(component); } /** * 构建页眉 * * @param text 文本组件 * @return 返回pdf页眉组件 */ public static XEasyPdfHeader build(XEasyPdfText text) { return new XEasyPdfDefaultHeader(text); } /** * 构建页眉 * * @param image 图片组件 * @return 返回pdf页眉组件 */ public static XEasyPdfHeader build(XEasyPdfImage image) { return new XEasyPdfDefaultHeader(image); } /** * 构建页眉 * * @param image 图片组件 * @param text 文本组件 * @return 返回pdf页眉组件 */ public static XEasyPdfHeader build(XEasyPdfImage image, XEasyPdfText text) { return new XEasyPdfDefaultHeader(image, text); } /** * 构建页眉 * * @param text 文本组件 * @param image 图片组件 * @return 返回pdf页眉组件 */ public static XEasyPdfHeader build(XEasyPdfText text, XEasyPdfImage image) { return new XEasyPdfDefaultHeader(image, text); } } /** * pdf页脚组件 */ public static class Footer { /** * 构建页脚 * * @param component 自定义组件 * @return 返回pdf页脚组件 */ public static XEasyPdfFooter build(XEasyPdfComponent component) { return new XEasyPdfDefaultFooter(component); } /** * 构建页脚 * * @param text 文本组件 * @return 返回pdf页脚组件 */ public static XEasyPdfFooter build(XEasyPdfText text) { return new XEasyPdfDefaultFooter(text); } /** * 构建页脚 * * @param image 图片组件 * @return 返回pdf页脚组件 */ public static XEasyPdfFooter build(XEasyPdfImage image) { return new XEasyPdfDefaultFooter(image); } /** * 构建页脚 * * @param image 图片组件 * @param text 文本组件 * @return 返回pdf页脚组件 */ public static XEasyPdfFooter build(XEasyPdfImage image, XEasyPdfText text) { return new XEasyPdfDefaultFooter(image, text); } /** * 构建页脚 * * @param text 文本组件 * @param image 图片组件 * @return 返回pdf页脚组件 */ public static XEasyPdfFooter build(XEasyPdfText text, XEasyPdfImage image) { return new XEasyPdfDefaultFooter(image, text); } } /** * pdf布局组件 */ public static class Layout { /** * 水平布局 */ public static class Horizontal { /** * 构建水平布局 * * @return 返回pdf水平布局组件 */ public static XEasyPdfHorizontalLayout build() { return new XEasyPdfHorizontalLayout(); } } /** * 垂直布局 */ public static class Vertical { /** * 构建水平布局 * * @return 返回pdf水平布局组件 */ public static XEasyPdfVerticalLayout build() { return new XEasyPdfVerticalLayout(); } } /** * pdf布局中的组件 */ public static class Component { /** * 构建布局组件中的组件 * * @param width 宽度 * @param height 高度 * @return 返回pdf布局组件中的组件 */ public static XEasyPdfLayoutComponent build(float width, float height) { return new XEasyPdfLayoutComponent(width, height); } /** * 构建布局组件中的组件 * * @param width 宽度 * @param height 高度 * @param component pdf组件 * @return 返回pdf布局组件中的组件 */ public static XEasyPdfLayoutComponent build(float width, float height, XEasyPdfComponent component) { return new XEasyPdfLayoutComponent(width, height).setComponent(component); } } } /** * pdf字体 */ public static class Font { /** * 细体 */ public static final XEasyPdfDefaultFontStyle LIGHT = XEasyPdfDefaultFontStyle.LIGHT; /** * 正常 */ public static final XEasyPdfDefaultFontStyle NORMAL = XEasyPdfDefaultFontStyle.NORMAL; /** * 粗体 */ public static final XEasyPdfDefaultFontStyle BOLD = XEasyPdfDefaultFontStyle.BOLD; /** * 添加字体映射 * * @param fontPath 字体路径 */ public static void addFont(String fontPath) { XEasyPdfFontUtil.addFont(fontPath); } /** * 开启系统字体映射 */ public static void enableSystemFontMapping() { System.setProperty(FontMappingPolicy.key(), FontMappingPolicy.ALL.name()); } } /** * pdf字体映射策略 */ public enum FontMappingPolicy { /** * 默认 */ DEFAULT, /** * 全部 */ ALL; /** * 获取key * * @return 返回key */ public static String key() { return XEasyPdfConstants.FONT_MAPPING_POLICY_KEY; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy