用Java创建PDF文件

用Java创建PDF文件,java,pdf,Java,Pdf,所以。。我只能使用默认的JavaAPI,不能使用外部API 如何写入PDF 我试着用一个FileOutputStream来写,但没有成功 我听说它必须用字节来写,所以我试着: byte[]buffer=新字符串(“测试”) 当我试图打开该文件时,它说该文件已损坏,无法打开。有几种不同的方法可以做到这一点 这里有一些不同的库,可以用于样式设置等 PDF格式非常复杂,生成起来并不简单 你应该强烈考虑使用一个好的图书馆来帮助你。 创建PDF不仅仅是生成带有PDF扩展名的文件。文件中需要嵌入页眉和页脚信

所以。。我只能使用默认的JavaAPI,不能使用外部API

如何写入PDF

我试着用一个FileOutputStream来写,但没有成功

我听说它必须用字节来写,所以我试着:

byte[]buffer=新字符串(“测试”)


当我试图打开该文件时,它说该文件已损坏,无法打开。

有几种不同的方法可以做到这一点

这里有一些不同的库,可以用于样式设置等


PDF格式非常复杂,生成起来并不简单


你应该强烈考虑使用一个好的图书馆来帮助你。 创建PDF不仅仅是生成带有PDF扩展名的文件。文件中需要嵌入页眉和页脚信息

如果您确实需要手动执行此操作,您可以阅读PDF 1.7规范,网址为


我建议您使用第三方API,如iText()。

实际上,您可以使用基本JAVA(或任何其他语言)来实现这一点,但除非您必须这样做,否则您确实不想这样做。诀窍是你必须写出一个具有非常特殊结构的二进制数据流。可能有更好的文档URL,但这是我遇到的第一个似乎能提供您需要的信息的URL

如果您可以绕过不使用外部库的要求,我建议您看看下面链接的免费ApachePDFBox库


试试这个。作者仅使用符合您需要的默认Java API:

import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;


完整的代码链接:

PDF格式由Adobe的铁拳专有,它也是一个复杂的图像文件,而不是文本。您想创建什么类型的文档?只要它只有几个小字体,只使用标准的14种字体,没有图像,一个轻量级的PDF创建类是可行的。否则。。。好吧,准备好花几年时间创建自己的PDF库。这只是您需要理解和编写代码的一部分。@SlaterTyranus这也是一个ISO标准。大多数人都能接受,但我不能使用图书馆(你能给我指出一个方向吗?那么你需要自己实现所有东西-这很可能是一个大任务。你需要PDF有什么?只有文本?图像?你没有什么不需要自己编写的吗?@ChrisShafer除非你需要编写PDF api,否则你必须使用现有的api。