所以..我只能使用默认的Java API,不能使用外部的。
如何写入 PDF?
我试过用 FileOutputStream 写,但没有用。
我听说它必须用一个字节来写,所以我尝试了:
byte[] buffer = new String("Test");
当我尝试打开文件时,它说它已损坏并且无法打开。
创建 PDF 不仅仅是生成带有 PDF 扩展名的文件。文件中需要嵌入页眉和页脚信息。
如果您确实需要手动执行此操作,您可以在http://www.adobe.com/devnet/acrobat/pdfs/PDF32000_2008.pdf阅读 PDF 1.7 规范。
我建议您改用 iText 之类的第 3 方 API ( http://itextpdf.com/ )。
试试这个。作者只使用了默认的 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;
完整代码链接:https ://gist.github.com/Ravikharatmal/66d4954822f406ca0761e624e205bb30
PDF 格式相当复杂,生成起来并不简单。
您应该强烈考虑使用一个好的库来帮助您。
实际上,您可以只使用基本的 JAVA(或任何其他语言)来执行此操作,但您真的不想这样做,除非您绝对必须这样做。诀窍是您必须写出具有非常特定结构的二进制数据流。那里可能有更好的文档 URL,但这是我遇到的第一个似乎提供了您似乎需要的信息的 URL...
http://resources.infosecinstitute.com/pdf-file-format-basic-structure/
如果您可以绕过不使用外部外部库的要求,我建议您查看下面链接的免费 Apache PDFBox 库。