java - 将 XML 转换为 PDF
问题描述
我有一个基于 XFA 的 PDF,它基本上是一个模板 PDF。我被要求以编程方式填写该可编辑 PDF 的某些字段。到目前为止,我使用 itextpdf 将 template.pdf 转换为其对应的 XML。现在我希望编辑该 XML 文件并将其转换回 PDF。我了解到我们可以使用 apache FOP,但我只有 1 个相应的 XML 文件,而不是 FOP 要求的 .xsl 文件。请指出我正确的方向。
我使用 Pdfstamper 填写了一些字段,但 PDF 文件在我将其转换回 PDF 后无法保持可编辑状态。
提前致谢。
这是我用来将 PDF 转换为 XML 的代码。
import com.itextpdf.text.pdf.*;
import com.itextpdf.text.pdf.codec.Base64;
import org.junit.Test;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
import java.util.Map;
import java.util.Set;
public class ConversionClass {
public static void main(String[] a){
pdfToXfa();
}
@Test
public static void pdfToXfa() {
try {
PdfReader reader = new PdfReader("template.pdf");
FileOutputStream os = new FileOutputStream("template_xml.xml");
XfaForm xfa = new XfaForm(reader);
org.w3c.dom.Document doc = xfa.getDomDocument();
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tf.setOutputProperty(OutputKeys.INDENT, "yes");
tf.transform(new DOMSource(doc), new StreamResult((os)));
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
解决方案
推荐阅读
- sql - ORA-24805:LOB 类型不匹配
- c - Scanf 使 do_while 循环卡住
- java - Java - [SQLITE_BUSY] 数据库文件被锁定(数据库被锁定)
- html - 删除gridview上的重复行
- php - 如何摆脱未定义的偏移量
- matlab - 交换矩阵的片段 Matlab
- android - 如何使来自互联网的图像响应 Android 布局?
- c# - 获取 HTTP 错误 500.30 - PhysicalFileProvider
- python - 在 Jupyter Notebook 上使用 Julia 出现内核错误
- logging - 如何在 F# 中使用 ZeroLog?