我有一个XSL-FO文件,数据以xml/json格式提供。我想用这个xsl结构创建一个pdf。有谁能推荐一些开源库来进行转换吗?我希望它能在C#级别完成。注意:我尝试转换为html,但因为它是xsl-fo文件,我不能得到对齐。
mwkjh3gx1#
您可以使用Apache FOP(https://xmlgraphics.apache.org/fop/)工具。它可以从XSL-FO输入生成PDF文档。从C#可以启动Apache FOP进程,将其指向XSL-FO文件(或使用stdin,因此不必使用任何临时文件)。进程存在后,您将获得PDF文件(在磁盘上的文件或标准输出中)。首先,你可以让Apache FOP读取XSL-FO文件并将PDF文件写入磁盘,为此使用Process类(https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.process?view=netframework-4.8):草稿代码片段(可能包含错误,但对您来说应该是一个良好的开端):
Process
Process.Start("C:\\path\\to\\fop input_xsl-fo.xml output.pdf").WaitForExit();
7ajki6be2#
我尝试使用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();
o7jaxewo3#
不确定你的项目是否是.Net Core项目,但我已经创建了一个纯Apache FOP version 2.8端口,它在.Net Core中运行。查看详情:https://github.com/sorcerdon/FOP.NetCore以下是Nuget:
.Net Core
Apache FOP version 2.8
由于这是一个纯端口,这意味着它可以做Apache FOP可以做的任何事情。
3条答案
按热度按时间mwkjh3gx1#
您可以使用Apache FOP(https://xmlgraphics.apache.org/fop/)工具。它可以从XSL-FO输入生成PDF文档。
从C#可以启动Apache FOP进程,将其指向XSL-FO文件(或使用stdin,因此不必使用任何临时文件)。进程存在后,您将获得PDF文件(在磁盘上的文件或标准输出中)。
首先,你可以让Apache FOP读取XSL-FO文件并将PDF文件写入磁盘,为此使用
Process
类(https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.process?view=netframework-4.8):草稿代码片段(可能包含错误,但对您来说应该是一个良好的开端):
7ajki6be2#
我尝试使用fo.net,它为我工作,这里是示例代码
o7jaxewo3#
不确定你的项目是否是
.Net Core
项目,但我已经创建了一个纯Apache FOP version 2.8
端口,它在.Net Core
中运行。查看详情:https://github.com/sorcerdon/FOP.NetCore
以下是Nuget:
由于这是一个纯端口,这意味着它可以做Apache FOP可以做的任何事情。