Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将xsl-fo转换为pdf_C#_.net_Pdf_Xsl Fo - Fatal编程技术网

C# 将xsl-fo转换为pdf

C# 将xsl-fo转换为pdf,c#,.net,pdf,xsl-fo,C#,.net,Pdf,Xsl Fo,我有一个XSL-FO文件,数据以xml/json格式提供。我想用这个xsl结构创建一个pdf 有人能推荐任何开源库进行转换吗?我希望它在C级完成 注意:我尝试转换为html,但由于它是xsl fo文件,我无法获得对齐。您可以使用Apache FOP()工具。它可以从XSL-FO输入生成PDF文档 从C#可以启动apachefop进程,将其指向XSL-FO文件(或者使用stdin,这样就不必使用任何临时文件)。进程存在后,您将获得PDF文件(在磁盘或标准输出上的文件中) 对于start,您可以让a

我有一个XSL-FO文件,数据以xml/json格式提供。我想用这个xsl结构创建一个pdf

有人能推荐任何开源库进行转换吗?我希望它在C级完成

注意:我尝试转换为html,但由于它是xsl fo文件,我无法获得对齐。

您可以使用Apache FOP()工具。它可以从XSL-FO输入生成PDF文档

从C#可以启动apachefop进程,将其指向XSL-FO文件(或者使用stdin,这样就不必使用任何临时文件)。进程存在后,您将获得PDF文件(在磁盘或标准输出上的文件中)

对于start,您可以让apachefop读取XSL-FO文件并将PDF文件写入磁盘,以便使用
Process
class():

代码段草稿(可能包含错误,但对您来说应该是一个良好的开端):

我试着使用它,它对我有效, 下面是示例代码

            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();

我用可用的示例代码尝试了这个方法,但它不起作用。你能帮我提供一个好的示例代码吗?请分享你尝试过的内容,出错的地方,等等。我们帮助你会容易得多。我试过这个,但引用有一些问题,我没有得到确切的使用方法。使用
进程
类并作为单独的进程运行Apache FOP要容易得多。你能给我一个示例代码或任何引用,以便我可以处理这个问题吗
            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();