import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.apache.pdfbox.pdmodel.font.PDType0Font; import org.apache.pdfbox.pdmodel.font.PDType1Font; public class pdfbox_tables { * @param page * @param contentStream * @param y the y-coordinate of the first row * @param margin the padding on left and right of table * @param content a 2d array containing the table data * @throws IOException public static void drawTable(PDDocument doc, PDPage page, PDPageContentStream contentStream, float y, float margin, String[][] content) throws IOException { final int rows = content.length; final int cols = content[0].length; final float rowHeight = 20f; final float tableWidth = page.getMediaBox().getWidth() - (2 * margin); final float tableHeight = rowHeight * rows; final float colWidth = tableWidth / (float) cols; final float cellMargin = 5f; //draw the rows float nexty = y; for (int i = 0; i <= rows; i++) { contentStream.drawLine(margin, nexty, margin + tableWidth, nexty); nexty -= rowHeight; //draw the columns float nextx = margin; for (int i = 0; i <= cols; i++) { contentStream.drawLine(nextx, y, nextx, y - tableHeight); nextx += colWidth; //now add the text //contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12); contentStream.setFont(PDType0Font.load(doc, new File("C:\\Windows\\Fonts\\simfang.TTF")), 12); float textx = margin + cellMargin; float texty = y - 15; for (int i = 0; i < content.length; i++) { for (int j = 0; j < content[i].length; j++) { String text = content[i][j]; contentStream.beginText(); contentStream.moveTextPositionByAmount(textx, texty); contentStream.drawString(text); contentStream.endText(); textx += colWidth; texty -= rowHeight; textx = margin + cellMargin; public static void main(String[] args) throws IOException { PDDocument doc = new PDDocument(); PDPage page = new PDPage(); doc.addPage(page); PDPageContentStream contentStream = new PDPageContentStream(doc, page); String[][] content = { {"a", "b", "1"}, {"c中", "d", "2"}, {"e", "f文", "3"}, {"g", "h", "4的"}, {"i", "j", "5测试"}}; drawTable(doc, page, contentStream, 700, 100, content); contentStream.close(); doc.save("F:/test_table.pdf"); import java.io.File;import java.io.IOException;import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDPageContentStream;import org.apache.pdfbox.pdmodel.font.PDType0Font;import org.a..
最近项目中有个需求需要将数据库中的数据导出到 PDF 文件中,所以在网上查找了相关的开源框架—— pdfbox &amp;itext     于是乎写了一个简单的工具类,如有需要的可以直接拿去用,切勿跟俺客气~。     本工具类所用到的相关jar包及版本有:     1. pdfbox -1.5.0.jar     2.fontbox-1.5.0.jar     3.jempbox-1.5...
分页 PDFBox 表格 生成 器 这是一个如何 使用 PDFBox 生成 分页表的简单示例。 我没有对代码进行过多优化或开发,但它是一个工作模型,可用于获取有关如何 使用 PDFBox 实现 表格 生成 的一些想法。 本项目需要 pdfbox -app-1.8.4.jar
分页- PDFBox - 表格 -样本 这是一个如何 使用 PDFBox 生成 分页表的简单示例。 我没有对代码进行过多优化或开发,但它是一个工作模型,可用于获取有关如何 使用 PDFBox 实现 表格 生成 的一些想法。 本项目需要 pdfbox -app-1.8.4.jar
功能描述:在右上角指定位置添加 表格 和文本。 实现思路:读取 pdf ,在指定位置画线,线段组成 表格 ;指定位置也就是 表格 内写入文字。所有 pdf 坐标原点(0,0)都为左下角。 遇到问题:坐标原点大部分在左下角,有时会在其他地方。后来发现在创建PDPageContentStream对象时,引用参数为AppendMode.APPEND(所有内容流之后插入内容)改为AppendMode.PREPEND(在所有内容流之前插入内容),此时坐标原点为左下角。 实现效果: 代码如下: package com.gtzn.comm
这是一个基于的小项目,应该允许您以相当简单的方式创建表。 它来自另一个项目的需求。 因此,它也可能会错过一些关键功能。 尽管如此,还是有: 在 表格 ,行和单元格级别上设置字体,字体大小,填充,边框宽度 分别设置底部,顶部,左侧和右侧的宽度的单个单元格 表格 ,行和单元格级别的背景色 在 表格 ,行和单元格级别上的填充(顶部,底部,左侧,右侧) 边框颜色和样式(在表,行或单元格级别上) 支持文本对齐(右,左,居中,对齐) 垂直文本对齐方式(顶部,中间,底部) 列跨度和行跨度 换行和行距 单元格中的图像 实验性的:垂直文本, 还可以覆盖负责表/单元格 绘制 的类,即可以很大程度地自定义其 绘制 行为。 也可以在多个页面上 绘制 表格 (即使在每个新页面上重复标题行)。 将此添加到您的pom.xml : <dependency> <groupId>com.github.vandese 从命令行运行。 键入 java -jar traprange.latest.jar -h获得帮助,或查看文件test-command-line.sh示例 表数据结构是文档中最重要的数据结构之一,尤其是从企业系统中导出数据时,数据通常采用 表格 式。 有几种数据文件格式,通常用于存储 表格 内容,例如CSV,文本和 pdf 。 对于前两种格式,只需打开文件,循环浏览并 使用 适当的分隔符拆分单元格,就可以非常简单地进行操作。 执行此操作的库很多。 对于 PDF 文件,故事完全不同,因为它没有针对 表格 内容的专用数据定义,如HTML中的table , tr , td标签。 PDF 是一种复杂的格式,具有文本数据,字体,样式以及图像,音频和视频,可以将它们混合在一起。 以下是我针对高密度 表格 内容中的数据提出的解决方案。 下面是一个 使用 PDFBox 框架调用打印机打印 PDF 文件的具体代码示例:// 加载 PDF 文件 PDDocument document = PDDocument.load(new File("example. pdf "));// 获取默认打印机 PrintService defaultPrintService = PrintServiceLookup.lookupDefaultPrintService();// 创建打印作业 PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintService(defaultPrintService);// 设置打印参数 PageFormat pageFormat = job.defaultPage(); Paper paper = pageFormat.getPaper(); double margin = 2.0; paper.setImageableArea(margin, margin, paper.getWidth() - margin * 2, paper.getHeight() - margin * 2); pageFormat.setPaper(paper); job.setPrintable(new PDF Printable(document, Scaling.SHRINK_TO_FIT), pageFormat);// 开始打印 job.print(); 韩顺平老师的Java课代表: 自己的逻辑,可以看看这个,写的比较简洁 https://blog.csdn.net/weixin_66419853/article/details/124214479?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168251652816800213023179%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168251652816800213023179&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-3-124214479-null-null.142^v86^koosearch_v1,239^v2^insert_chatgpt&utm_term=Java%E6%80%8E%E4%B9%88%E5%B0%86%E5%8D%81%E8%BF%9B%E5%88%B6%E8%BD%AC%E6%8D%A2%E6%88%90%E4%BA%8C%E8%BF%9B%E5%88%B6&spm=1018.2226.3001.4187 如何向 Pandas DataFrame 添加行 modaciv: 就用不了啊! 通过WSUS进行Windows 10 半年更新版本升级 控制台老是报错,连接失败怎么办