xsl -fo 转pdf
Convert xsl - fo to pdf
我有一个 XSL-FO 文件,数据以 xml/json 格式提供。我想使用这个 xsl 结构创建一个 pdf。
谁能推荐任何开源库进行转换?我希望它在 C# 级别完成。
注意:我尝试转换为 html,但由于它是 xsl-fo 文件,我无法对齐。
您可以使用 Apache FOP (https://xmlgraphics.apache.org/fop/) 工具。它可以从 XSL-FO 输入生成 PDF 文档。
可以从 C# 启动 Apache FOP 进程,将其指向 XSL-FO 文件(或使用标准输入,因此您不必使用任何临时文件)。进程存在后,您将获得 PDF 文件(在磁盘文件或标准输出中)。
首先,您可以让 Apache FOP 读取 XSL-FO 文件并将 PDF 文件写入磁盘,为此使用 Process
class (https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process?view=netframework-4.8):
草稿代码片段(可能包含错误,但对您来说应该是一个好的开始):
Process.Start("C:\path\to\fop input_xsl-fo.xml output.pdf").WaitForExit();
我尝试使用 fo.net,它对我有用,
这是示例代码
string lBaseDir = System.IO.Path.GetDirectoryName("e:\thermalpdf.xsl");
XslCompiledTransform lXslt = new XslCompiledTransform();
lXslt.Load("e:\thermalpdf.xsl");
lXslt.Transform("e:\billingData1.xml", "books1.fo");
FileStream lFileInputStreamFo = new FileStream("books1.fo", FileMode.Open);
FileStream lFileOutputStreamPDF = new FileStream("e:\response2.pdf", FileMode.Create);
FonetDriver lDriver = FonetDriver.Make();
lDriver.BaseDirectory = new DirectoryInfo(lBaseDir);
lDriver.CloseOnExit = true;
lDriver.Render(lFileInputStreamFo, lFileOutputStreamPDF);
lFileInputStreamFo.Close();
lFileOutputStreamPDF.Close();
我有一个 XSL-FO 文件,数据以 xml/json 格式提供。我想使用这个 xsl 结构创建一个 pdf。
谁能推荐任何开源库进行转换?我希望它在 C# 级别完成。
注意:我尝试转换为 html,但由于它是 xsl-fo 文件,我无法对齐。
您可以使用 Apache FOP (https://xmlgraphics.apache.org/fop/) 工具。它可以从 XSL-FO 输入生成 PDF 文档。
可以从 C# 启动 Apache FOP 进程,将其指向 XSL-FO 文件(或使用标准输入,因此您不必使用任何临时文件)。进程存在后,您将获得 PDF 文件(在磁盘文件或标准输出中)。
首先,您可以让 Apache FOP 读取 XSL-FO 文件并将 PDF 文件写入磁盘,为此使用 Process
class (https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.process?view=netframework-4.8):
草稿代码片段(可能包含错误,但对您来说应该是一个好的开始):
Process.Start("C:\path\to\fop input_xsl-fo.xml output.pdf").WaitForExit();
我尝试使用 fo.net,它对我有用, 这是示例代码
string lBaseDir = System.IO.Path.GetDirectoryName("e:\thermalpdf.xsl");
XslCompiledTransform lXslt = new XslCompiledTransform();
lXslt.Load("e:\thermalpdf.xsl");
lXslt.Transform("e:\billingData1.xml", "books1.fo");
FileStream lFileInputStreamFo = new FileStream("books1.fo", FileMode.Open);
FileStream lFileOutputStreamPDF = new FileStream("e:\response2.pdf", FileMode.Create);
FonetDriver lDriver = FonetDriver.Make();
lDriver.BaseDirectory = new DirectoryInfo(lBaseDir);
lDriver.CloseOnExit = true;
lDriver.Render(lFileInputStreamFo, lFileOutputStreamPDF);
lFileInputStreamFo.Close();
lFileOutputStreamPDF.Close();