首页 > 解决方案 > 将 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();
        }

    }
}

标签: javaxmlpdfitext

解决方案


推荐阅读