我需要生成一个PDF。NET中使用XSL-FO.这样做的图书馆并不缺乏。你会建议我使用哪个图书馆,为什么?
bwntbbo31#
对实际问题的主要非商业性回答是:
格式化对象处理器。它采用XSL-FO兼容的xsl代码和xml,并根据XSL-FO规范生成PDF文件。还有其他几种商业选择:
如果你正在寻找一个可行的开源选项,FOP就是它。FOP本身是一个Java库,但它已被移植到。NET通过J#(我知道它有自己的问题)在nFOP project中。
eoxn13cs2#
我以前用过Ibex PDF generator。我被扔在一个已经有许可证的项目中,所以我真的没有其他选择。起初我认为这是cumboersome,但最终我习惯了它是如何工作的。我建议您也使用一些好的XML/XSL编辑器来测试XSL/XPath。XML Copy Editor是一个很好的免费开源软件。
kninwzqo3#
几年前我研究过期权。以下是入围名单:iTextSharp、SharpPDF、报告。NET、NFop和Siberix报告编写器。最终我选择了Siberix,但我现在认为iTextSharp会是更好的选择。如果有用的话,你可以找到更多的here。
5t7ly7z54#
http://fonet.codeplex.com/FO.NET是你的库
hts6caw35#
嗯,大约2年前我用过几次iText(开源),但我不会推荐这样做。主要原因是缺乏文档,我真的不喜欢API,它只是觉得过时的设置全局变量之前,调用函数。你需要使用XSL-FO的原因是什么?我还使用了ABC-pdf(商业版),它允许用户将HTML页面(包括样式表)转换为PDF文档,或者您可以使用简单的文档化API。
abithluo6#
如果你可以使用不同的东西,你可以尝试使用PdfSharp + MigraDoc。的DocumentObjectModel库。NET(参见http://www.pdfsharp.net/)。两者都有MIT许可证,可免费用于商业项目。您可以从一个nuget包(https://www.nuget.org/packages/PDFsharp-MigraDoc/)安装这些库。然后,您可以使用MigraDoc.DocumentObjectModel.Document类定义PDF DOM,并使用PdfDocumentRenderer类打印它。下面是示例代码:
MigraDoc.DocumentObjectModel.Document
PdfDocumentRenderer
using System; using System.IO; using MigraDoc.DocumentObjectModel; using MigraDoc.Rendering; namespace MigraDocTest { class Program { static void Main(string[] args) { var document = new Document(); // initial page setup and declare the styles document.DefaultPageSetup.Orientation = Orientation.Landscape; var mainStyle = document.Styles[StyleNames.Normal]; mainStyle.Font.Name = "Arial"; const string TitleStyleName = "Title"; var titleStyle = document.Styles.AddStyle(TitleStyleName, StyleNames.Normal); titleStyle.ParagraphFormat.Font.Size = 12; titleStyle.ParagraphFormat.SpaceAfter = "0"; titleStyle.Font.Bold = true; // main page section setup var section = document.AddSection(); section.PageSetup.PageFormat = PageFormat.A4; section.PageSetup.Orientation = Orientation.Landscape; section.PageSetup.LeftMargin = "15mm"; section.PageSetup.RightMargin = "15mm"; section.PageSetup.TopMargin = "12mm"; section.PageSetup.BottomMargin = "20mm"; // add content to DOM here section.AddParagraph("Hello, world!").Style = TitleStyleName; // actually print document to PDF var pdfRenderer = new PdfDocumentRenderer(unicode: true) { Document = document }; pdfRenderer.RenderDocument(); using (var stream = new MemoryStream()) { pdfRenderer.Save(stream, closeStream: false); File.WriteAllBytes(@"_output.pdf", stream.ToArray()); } } } }
请注意,MigraDoc nuget支持。NET Framework 2+,.不支持NETStandard。所以,你需要完全瞄准。NET Framework来使用这些库。
k4ymrczo7#
我已经创建了一个运行在.Net Core中的Apache FOP version 2.8纯端口。它几乎是即插即用的,所以它超级容易使用。查看详情:https://github.com/sorcerdon/FOP.NetCore以下是Nuget:
.Net Core
Apache FOP version 2.8
由于这是一个纯端口,这意味着它可以做Apache FOP可以做的任何事情。
7条答案
按热度按时间bwntbbo31#
对实际问题的主要非商业性回答是:
www.example.com 项目的FOP
格式化对象处理器。它采用XSL-FO兼容的xsl代码和xml,并根据XSL-FO规范生成PDF文件。还有其他几种商业选择:
如果你正在寻找一个可行的开源选项,FOP就是它。FOP本身是一个Java库,但它已被移植到。NET通过J#(我知道它有自己的问题)在nFOP project中。
eoxn13cs2#
我以前用过Ibex PDF generator。我被扔在一个已经有许可证的项目中,所以我真的没有其他选择。起初我认为这是cumboersome,但最终我习惯了它是如何工作的。
我建议您也使用一些好的XML/XSL编辑器来测试XSL/XPath。XML Copy Editor是一个很好的免费开源软件。
kninwzqo3#
几年前我研究过期权。以下是入围名单:iTextSharp、SharpPDF、报告。NET、NFop和Siberix报告编写器。最终我选择了Siberix,但我现在认为iTextSharp会是更好的选择。如果有用的话,你可以找到更多的here。
5t7ly7z54#
http://fonet.codeplex.com/
FO.NET是你的库
hts6caw35#
嗯,大约2年前我用过几次iText(开源),但我不会推荐这样做。主要原因是缺乏文档,我真的不喜欢API,它只是觉得过时的设置全局变量之前,调用函数。
你需要使用XSL-FO的原因是什么?我还使用了ABC-pdf(商业版),它允许用户将HTML页面(包括样式表)转换为PDF文档,或者您可以使用简单的文档化API。
abithluo6#
如果你可以使用不同的东西,你可以尝试使用PdfSharp + MigraDoc。的DocumentObjectModel库。NET(参见http://www.pdfsharp.net/)。两者都有MIT许可证,可免费用于商业项目。
您可以从一个nuget包(https://www.nuget.org/packages/PDFsharp-MigraDoc/)安装这些库。
然后,您可以使用
MigraDoc.DocumentObjectModel.Document
类定义PDF DOM,并使用PdfDocumentRenderer
类打印它。下面是示例代码:请注意,MigraDoc nuget支持。NET Framework 2+,.不支持NETStandard。所以,你需要完全瞄准。NET Framework来使用这些库。
k4ymrczo7#
我已经创建了一个运行在
.Net Core
中的Apache FOP version 2.8
纯端口。它几乎是即插即用的,所以它超级容易使用。查看详情:https://github.com/sorcerdon/FOP.NetCore
以下是Nuget:
由于这是一个纯端口,这意味着它可以做Apache FOP可以做的任何事情。