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

wiki.xsx.core.pdf.doc.XEasyPdfPageRectangle Maven / Gradle / Ivy

package wiki.xsx.core.pdf.doc;

import org.apache.fontbox.util.BoundingBox;
import org.apache.pdfbox.pdmodel.common.PDRectangle;

import java.io.Serializable;

/**
 * pdf页面尺寸
 *
 * @author xsx
 * @date 2022/6/10
 * @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 XEasyPdfPageRectangle implements Serializable { private static final long serialVersionUID = 3832021109368673135L; /** * 每英寸像素点 */ private static final Integer POINTS_PER_INCH = XEasyPdfConstants.POINTS_PER_INCH; /** * 每毫米像素点 */ private static final Float POINTS_PER_MM = XEasyPdfConstants.POINTS_PER_MM; /** * 宽度 */ private final Float width; /** * 高度 */ private final Float height; /** * pdfBox页面尺寸 */ private final PDRectangle size; /** * ************************************************** A类 **************************************************** * /** * A0 *

841 * 1189,单位:mm

*

2383.937 * 3370.3938,单位:px

*/ public static final XEasyPdfPageRectangle A0 = new XEasyPdfPageRectangle(841 * POINTS_PER_MM, 1189 * POINTS_PER_MM); /** * A1 *

594 * 841,单位:mm

*

1683.7795 * 2383.937,单位:px

*/ public static final XEasyPdfPageRectangle A1 = new XEasyPdfPageRectangle(594 * POINTS_PER_MM, 841 * POINTS_PER_MM); /** * A2 *

420 * 594,单位:mm

*

1190.5513 * 1683.7795,单位:px

*/ public static final XEasyPdfPageRectangle A2 = new XEasyPdfPageRectangle(420 * POINTS_PER_MM, 594 * POINTS_PER_MM); /** * A3 *

297 * 420,单位:mm

*

841.8898 * 1190.5513,单位:px

*/ public static final XEasyPdfPageRectangle A3 = new XEasyPdfPageRectangle(297 * POINTS_PER_MM, 420 * POINTS_PER_MM); /** * A4 *

210 * 297,单位:mm

*

595.27563 * 841.8898,单位:px

*/ public static final XEasyPdfPageRectangle A4 = new XEasyPdfPageRectangle(210 * POINTS_PER_MM, 297 * POINTS_PER_MM); /** * A5 *

148 * 210,单位:mm

*

419.52756 * 595.27563,单位:px

*/ public static final XEasyPdfPageRectangle A5 = new XEasyPdfPageRectangle(148 * POINTS_PER_MM, 210 * POINTS_PER_MM); /** * A6 *

105 * 148,单位:mm

*

297.63782 * 419.52756,单位:px

*/ public static final XEasyPdfPageRectangle A6 = new XEasyPdfPageRectangle(105 * POINTS_PER_MM, 148 * POINTS_PER_MM); /** * A7 *

74 * 105,单位:mm

*

209.76378 * 297.63782,单位:px

*/ public static final XEasyPdfPageRectangle A7 = new XEasyPdfPageRectangle(74 * POINTS_PER_MM, 105 * POINTS_PER_MM); /** * A8 *

52 * 74,单位:mm

*

147.40158 * 209.76378,单位:px

*/ public static final XEasyPdfPageRectangle A8 = new XEasyPdfPageRectangle(52 * POINTS_PER_MM, 74 * POINTS_PER_MM); /** * ************************************************** B类 **************************************************** * /** * B0 *

1030 * 1456,单位:mm

*

2919.685 * 4127.244,单位:px

*/ public static final XEasyPdfPageRectangle B0 = new XEasyPdfPageRectangle(1030 * POINTS_PER_MM, 1456 * POINTS_PER_MM); /** * B1 *

728 * 1030,单位:mm

*

2063.622 * 2919.685,单位:px

*/ public static final XEasyPdfPageRectangle B1 = new XEasyPdfPageRectangle(728 * POINTS_PER_MM, 1030 * POINTS_PER_MM); /** * B2 *

515 * 728,单位:mm

*

1459.8425 * 2063.622,单位:px

*/ public static final XEasyPdfPageRectangle B2 = new XEasyPdfPageRectangle(515 * POINTS_PER_MM, 728 * POINTS_PER_MM); /** * B3 *

364 * 515,单位:mm

*

1031.811 * 1459.8425,单位:px

*/ public static final XEasyPdfPageRectangle B3 = new XEasyPdfPageRectangle(364 * POINTS_PER_MM, 515 * POINTS_PER_MM); /** * B4 *

257 * 364,单位:mm

*

728.50397 * 1031.811,单位:px

*/ public static final XEasyPdfPageRectangle B4 = new XEasyPdfPageRectangle(257 * POINTS_PER_MM, 364 * POINTS_PER_MM); /** * B5 *

182 * 257,单位:mm

*

515.9055 * 728.50397,单位:px

*/ public static final XEasyPdfPageRectangle B5 = new XEasyPdfPageRectangle(182 * POINTS_PER_MM, 257 * POINTS_PER_MM); /** * B6 *

128 * 182,单位:mm

*

362.83466 * 515.9055,单位:px

*/ public static final XEasyPdfPageRectangle B6 = new XEasyPdfPageRectangle(128 * POINTS_PER_MM, 182 * POINTS_PER_MM); /** * B7 *

91 * 128,单位:mm

*

257.95276 * 362.83466,单位:px

*/ public static final XEasyPdfPageRectangle B7 = new XEasyPdfPageRectangle(91 * POINTS_PER_MM, 128 * POINTS_PER_MM); /** * B8 *

64 * 91,单位:mm

*

181.41733 * 257.95276,单位:px

*/ public static final XEasyPdfPageRectangle B8 = new XEasyPdfPageRectangle(64 * POINTS_PER_MM, 91 * POINTS_PER_MM); /** * 有参构造 * * @param size pdfbox页面尺寸 */ XEasyPdfPageRectangle(PDRectangle size) { this.width = size.getWidth(); this.height = size.getHeight(); this.size = size; } /** * 有参构造 * * @param width 宽度 * @param height 高度 */ private XEasyPdfPageRectangle(float width, float height) { this.width = Math.abs(width); this.height = Math.abs(height); this.size = new PDRectangle(this.width, this.height); } /** * 有参构造 * * @param leftX 宽度 * @param rightX 高度 * @param bottomY 高度 * @param topY 高度 */ private XEasyPdfPageRectangle(float leftX, float rightX, float bottomY, float topY) { this.width = Math.abs(rightX - leftX); this.height = Math.abs(topY - bottomY); this.size = new PDRectangle(new BoundingBox(leftX, bottomY, rightX, topY)); } /** * 创建页面尺寸 * * @param width 宽度 * @param height 高度 * @return 返回页面尺寸 */ public static XEasyPdfPageRectangle create(float width, float height) { return new XEasyPdfPageRectangle(width, height); } /** * 创建页面尺寸 * * @param leftX X轴左坐标 * @param rightX X轴右坐标 * @param bottomY Y轴下坐标 * @param topY Y轴上坐标 * @return 返回页面尺寸 */ public static XEasyPdfPageRectangle create(float leftX, float rightX, float bottomY, float topY) { return new XEasyPdfPageRectangle(leftX, rightX, bottomY, topY); } /** * 切换横向 * * @return 返回页面尺寸 */ public XEasyPdfPageRectangle changeLandscape() { return new XEasyPdfPageRectangle(this.height, this.width); } /** * 获取每毫米像素点 * * @return 返回每毫米像素点 */ public static float getUnit() { return POINTS_PER_MM; } /** * 获取宽度 * * @return 返回宽度 */ public float getWidth() { return this.width; } /** * 获取高度 * * @return 返回高度 */ public float getHeight() { return this.height; } /** * 获取X轴左坐标 * * @return 返回X轴左坐标 */ public float getLeftX() { return this.size.getLowerLeftX(); } /** * 获取X轴右坐标 * * @return 返回X轴右坐标 */ public float getRightX() { return this.size.getUpperRightX(); } /** * 获取Y轴下坐标 * * @return 返回Y轴下坐标 */ public float getBottomY() { return this.size.getLowerLeftY(); } /** * 获取Y轴上坐标 * * @return 返回Y轴上坐标 */ public float getTopY() { return this.size.getUpperRightY(); } /** * 获取pdfbox页面尺寸 * * @return 返回pdfbox页面尺寸 */ public PDRectangle getSize() { return this.size; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy