如何使用Java将生成的PDF文件保存到MySQL数据库?

2024-04-11

我有一个 Java 类,它使用以下命令生成 PDF 文件iText https://itextpdf.com/en图书馆。现在根据我的需要,我必须将生成的 PDF 文件保存到 MySQL 数据库表中,但我不知道该怎么做。

我的担忧是:

  1. what datatype我应该在 PDF 表的 MySQL 列中使用来保存 PDF 文件
  2. 哪个查询将生成的 PDF 文件插入数据库

目前我正在生成PDF文件并将其存储到本地磁盘的硬编码文件路径中。

这是我用 Java 生成 PDF 的代码:

OutputStream file = new FileOutputStream(new File("D://timer.pdf"));
Document document = new Document();
PdfWriter.getInstance(document, file);

//Inserting Table in PDF
PdfPTable table = new PdfPTable(3);

PdfPCell cell = new PdfPCell(new Paragraph("Java4s.com"));

cell.setColspan(3);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setPadding(10.0f);
cell.setBackgroundColor(new BaseColor(140, 221, 8));

table.addCell(cell);

table.addCell("Name");
table.addCell("Address");
table.addCell("Country");
table.addCell("Java4s");
table.addCell("NC");
table.addCell("United States");
table.setSpacingBefore(30.0f);  // Space Before table starts, like margin-top in CSS
table.setSpacingAfter(30.0f);   // Space After table starts, like margin-Bottom in CSS

//Inserting List in PDF
List list = new List(true, 30);
list.add(new ListItem("Java4s"));
list.add(new ListItem("Php4s"));
list.add(new ListItem("Some Thing..."));

//Text formating in PDF
Chunk chunk = new Chunk("Welecome To Java4s Programming Blog...");
chunk.setUnderline(+1f, -2f);//1st co-ordinate is for line width,2nd is space between
Chunk chunk1 = new Chunk("Php4s.com");
chunk1.setUnderline(+4f, -8f);
chunk1.setBackground(new BaseColor(17, 46, 193));

//Now Insert Every Thing Into PDF Document
document.open();//PDF document opened........                  
document.add(Chunk.NEWLINE);   //Something like in HTML :-)
document.add(new Paragraph("Dear Java4s.com"));
document.add(new Paragraph("Document Generated On - " + newDate().toString()));
document.add(table);
document.add(list);            //In the new page we are going to add list
document.close();

file.close();

System.out.println("Pdf created successfully..");


请帮我。
提前致谢。


  1. 您可以使用的数据类型是BLOB https://dev.mysql.com/doc/refman/8.0/en/blob.html.
  2. 转换 PDF 文件并保留byte[]数据库中的数组。

    private byte[] getByteArrayFromFile(final Document handledDocument) throws IOException {
        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
        final InputStream in = new FileInputStream(handledDocument);
        final byte[] buffer = new byte[500];
    
        int read = -1;
        while ((read = in.read(buffer)) > 0) {
            baos.write(buffer, 0, read);
        }
        in.close();
    
        return baos.toByteArray();
    }
    
  3. 将其插入数据库如果您使用任何 ORM 工具,您只需将列映射为 blob,该工具就会为您处理它。如果您不使用它,那么您可以创建一个准备好的语句。 Statement 有一个名为 setBlob() 的方法,该方法很有用。考虑下面的示例并创建一个带有 blob 列的普通插入查询。

    String sql = "INSERT INTO testtable(stringcolumn, blobcolumn) VALUES(?,?)";
    
    PreparedStatement statement = conn.getConnection().prepareStatement(sql);
    statement.setLong(1, version);
    ByteArrayInputStream bais = new ByteArrayInputStream(getByteArrayFromFile(document));
    statement.setBlob(2, bais);          
    statement.execute();
    
    conn.commit();
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Java将生成的PDF文件保存到MySQL数据库? 的相关文章

  • Java:无安全管理器:RMI 类加载器已禁用

    您好 我有 RMI 应用程序 现在我尝试从客户端调用服务器上的一些方法 我有以下代码 public static void main final String args try Setting the security manager Sy
  • 我应该使用 JDBC getNString() 而不是 getString() 吗?

    我们正在构建一个由 Oracle 数据库支持的 Java 应用程序 我们使用 JDBC 驱动程序 访问该数据库ojdbc6 jar and orai18n jar 数据库模式主要使用以下方式存储文本列NVARCHAR2数据类型 The JD
  • PHP多图像文件上传并存储到文件夹和数据库

    我正在建立一个网站 向夜间狂欢者展示大城市夜总会场所和活动的列表 我正在尝试构建一个后端页面 管理员可以在其中添加俱乐部并输入信息 例如机构名称 位置 相对价格等 当然还有俱乐部的一些图像 每个俱乐部必须至少有一张图像 即主图像 可以有额外
  • 如何修复maven错误JAVA_HOME环境变量未正确定义

    当我在虚拟环境中检查maven的版本时 出现以下错误 The JAVA HOME environment variable is not defined correctly This environment variable is need
  • 欧拉项目 45

    我还不是一名熟练的程序员 但我认为这是一个有趣的问题 我想我应该尝试一下 三角形 五边形 六边形 数字由以下生成 公式 三角形 T n n n 1 2 1 3 6 10 15 五边形 P n n 3n 1 2 1 5 12 22 35 六角
  • java 中的 Try-with-resources 和 return 语句

    我想知道是否放一个return里面的声明尝试资源block 防止资源自动关闭 try Connection conn return conn createStatement execute 如果我写这样的东西将会联系被关闭 Oracle 文
  • 使用 equals 方法比较两个对象,Java

    我有一个对象数组 我想将它们与目标对象进行比较 我想返回与目标对象完全匹配的对象的数量 这是我的计数方法 public int countMatchingGhosts Ghost target int count 0 for int i 0
  • 开发人员实际上是否使用 vim 在 Windows 操作系统上编写代码(Java)? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 连接 3 三张表

    我有这个图表应该可以解释我的情况 我需要一些关于连接 3 个表的帮助 我不知道如何做这种事情 因此 我可以通过执行以下操作来经历一段检索记录的 while 循环 img src alt Album AlbumID 使用内部联接 http w
  • 按名称获取 ArrayList

    这是正确的获取方式吗ArrayList
  • 在 LINQ 中执行 FirstOrDefault 的替代方法

    我有一个成员资格表 用于记录用户是否是列表的成员 当用户的成员资格发生更新时 会写入新记录 并且先前的记录保持原样 从而可以维护其成员资格的历史记录 要获取用户的会员身份 需要选择他们最近的条目 下面是一些用户列表成员资格数据的示例 目的是
  • java中的第三个布尔状态是什么?

    虽然我知道根据定义 布尔值仅包含两种状态 真或假 我想知道布尔值在用这些状态之一初始化之前有什么值 它默认为 false http java sun com docs books tutorial java nutsandbolts dat
  • SDK尚未初始化,请务必先调用FacebookSdk.sdkInitialize()

    我在实现 Facebook SDK 时遇到此错误 并且我tried https stackoverflow com questions 15490399 error inflating class com facebook widget l
  • 如何在启用嵌入时间戳和 LTV 的情况下签署 PDF?

    我正在尝试签署启用了时间戳和 LTV 的 pdf 以便它在 Adob e Reader 中显示如下 在英语中 这意味着 签名包含嵌入的时间戳 和 签名启用了 LTV 这是我正在使用的代码 PrivateKey pk get pk from
  • 从特定 JAR 文件读取资源(文件的重复路径)

    假设您有 jar1 和artifactId 动物园 jar2 和artifactId 动物 两个 jar 都有一个具有相同路径的资源文件 例如 animals animal txt 有什么方法可以从特定的 jar 中读取该文件吗 使用 ge
  • MySQL 正在将我的时间戳值转换为 0000-00-00

    我是 PHP 新手 目前仍在学习中 我认为我的注册表有问题 username password email全部成功插入MySQL registered and last seen不要 我以为我正在使用getTimestamp 错了 但它呼应
  • Javac 版本 1.7 无法为目标 1.7 构建

    我试图在 Linux Mint 系统上使用 Sun Java JDK 1 7 0 17 编译 Java 代码 但遇到了这个问题 javac version target 1 7 javac 1 7 0 17 javac invalid ta
  • 乔达时间中两个日期之间的天数

    如何找到两次之间的天数差异乔达时间 http www joda org joda time DateTime http www joda org joda time apidocs org joda time DateTime html实例
  • 尝试使用 Spring 和扩展 Hibernate JpaRepository 的自定义 GenericDao 接口来使用 EhCache

    背景 这是我的工作 简化 GenericDao接口 由任何实现DomainDao 通用Dao java NoRepositoryBean public interface GenericDao
  • Swing:创建可拖动组件...?

    我在网上搜索了可拖动 Swing 组件的示例 但我发现示例不完整或不起作用 我需要的是一个摇摆组件那可以是dragged通过鼠标 在另一个组件内 被拖拽的时候 应该已经 改变它的位置 而不仅仅是 跳 到目的地 我很欣赏无需非标准 API 即

随机推荐

  • 使用类加载器 AntClassLoader[] 无法找到 taskdef 类 com.android.ant.SetupTask

    我正在尝试从 Beginning Android 4 一书中获取一些简单的 Android 应用程序 我在源代码目录之一上运行 ant 并收到此错误 ant debug Buildfile NowRedux build xml BUILD
  • 如何使用jquery用鼠标移动div?

    我需要能够用鼠标移动 div 并将 div 的新位置存储在数据库中以记住显示 我该怎么做 我强烈建议你研究一下jQuery用户界面 http jqueryui com 以及可拖动的交互 基本上 您需要将代码添加到可拖动的 div 中 假设它
  • 如何在 JavaScript 中生成颜色序列?

    我必须显示一个数字 随着数字值的减小 其颜色从红色统一变为绿色 有没有办法根据值生成该数字的字体颜色 我猜减少数字等于红色到绿色 为什么不简单一点 从你的全红 FF0000开始 然后慢慢努力 在 00FF00 处变为绿色 两者之间有FF F
  • Scrapy CrawlSpider 无法抓取第一个登陆页面

    我是 Scrapy 的新手 正在进行抓取练习 并且正在使用 CrawlSpider 尽管 Scrapy 框架运行良好并且它遵循相关链接 但我似乎无法使 CrawlSpider 抓取第一个链接 主页 登陆页面 相反 它直接抓取由规则确定的链接
  • 有没有办法获得 LibVlc 加载的缓冲区百分比?

    我目前正在制作一个城市网络摄像头应用程序 它使用 libVlc 来显示来自城市网络摄像头的 rtsp 流 我的问题是 是否可以获得流的实际加载状态 我想展示给用户 我可以在 Android Studio runLog 中看到存在某种缓冲 但
  • 如何使 html iframe 的宽度和高度均为 100%? [复制]

    这个问题在这里已经有答案了 如何使 iframe 的窗口宽度和高度为 100 这段代码可能对你有帮助
  • 具有内联 SVG 的响应式剪辑路径

    在具有背景的元素上 图像或纯色并不重要
  • Codeigniter HVMC 模块化分离扩展 URL 重写/路由

    我一直在使用 HVMC 模块化扩展 它工作得很好 但我无法弄清楚如何使用 以及是否可以使用 HVMC 的 URL 路由 基本上 我有一个名为 site 的模块 它是我的主要默认站点控制器 所有其他模块我都没有直接使用 我只是通过调用 ech
  • 如何忽略复选框的点击?

    我需要将一个函数附加到一个复选框 以便单击它不会执行任何操作 这怎么可能 我不想让它变灰 我只是想阻止它切换 如果您希望它可切换 只需附加一个事件侦听器 如下所示 checkboxId on click function e e preve
  • QSTK 的事件分析器函数无法正确绘制

    在佐治亚理工学院的 Coursera 计算投资课程中使用 QSTK 时 Examples EventProfiler tutorial py 末尾的 eventprofiler 函数不会输出视频中显示的图表 见下图 为第 4 周的练习生成的
  • R 是否有相当于 bash 命令 more 的命令?

    如果我想查看 R 中的长输出或变量 是否有与 bash 命令 more 等效的命令 为什么不使用内置的file show more lt function x file lt tempfile sink file on exit sink
  • Azure 容器注册表中的锁是什么

    在 Azure 门户的 Azure 容器注册表边栏选项卡中 左侧有一个 锁定 部分 但我在目录中的任何位置都找不到它 ACR 文档 https learn microsoft com en us azure container regist
  • 获取Streamreader的长度

    我怎样才能得到a的长度StreamReader 据我所知 不会再向其中写入任何内容 我想也许我可以将所有数据传递给MemoryStream 它有一个名为Length 但我陷入了如何将 byte 附加到 a 的问题上MemoryStream
  • 具有多个控件和 generic.xaml 的自定义控件库

    如果我在一个自定义控件库中为两个不同的控件定义两种默认样式 我会收到错误 一个库中是否可以有两个或多个具有默认 generic xaml 的控件 Thanks 对的 这是可能的 推荐的方法是将每个控件的样式放置在其自己的资源字典中 并拥有一
  • 返回用于在 using C# 中使用的变量

    我返回在 using 语句内的 using 语句中创建的变量 听起来很有趣 public DataTable foo using DataTable properties new DataTable do something return
  • 如何在 MVC3 中使用 ViewBag 更改或刷新数据

    我想使用 ViewBag 刷新视图中的数据 是否有可能或者我可以使用其他技术 这是我的示例代码 在我的视图页面中 家庭详情 ViewBag Details 0 Name 在我的控制器中 public ActionResult FamilyD
  • 使用命名范围依赖于下拉列表值的文本框值的 Excel VBA 代码

    我拥有的 我有一个 Excel VBA 自定义用户表单 该表单包含一个下拉列表 行业类别 和文本框 对应行业规范者 对于每个行业类别有一个行业规范者 该类别的缩写版本 The 行业类别 and 行业规范者将始终位于同一行 下拉列表由单元格名
  • iPhone - 如何在按下按钮时制作动画?

    有没有办法在点击 iPhone 按钮时制作自定义动画 我想要类似 App Store 按钮的东西 它会显示价格 然后当您单击它时 它会改变颜色并且文本会更改为 立即购买 然后当您再次单击它时 它会完成购买 UIViewAnimationTr
  • 如何从 java 类(在 Lucee 中)中的方法返回 Coldfusion 结构?

    我正在编写一个java类 并且想从方法返回一个coldfusion结构 结构扩展了映射和其他东西 我不是 Java 程序员 所以我不知道如何解决这个问题 这是 lucee java 文档 http javadoc lucee org 当我尝
  • 如何使用Java将生成的PDF文件保存到MySQL数据库?

    我有一个 Java 类 它使用以下命令生成 PDF 文件iText https itextpdf com en图书馆 现在根据我的需要 我必须将生成的 PDF 文件保存到 MySQL 数据库表中 但我不知道该怎么做 我的担忧是 what d