在 c# 中从 xml 生成打印发票

generate invoices for print from xml in c#

我已经从休息服务的 json post 创建了一个 xml 文件,并希望使用该信息为 [=] 中的每个节点创建一个 pdf 文件25=]。我如何使用模板和给定的变量生成这样的 pdf?我如何以这种方式填充变量以及如何创建单独的文件? 我调查了 Fo.Net,但发现该项目似乎已经死了,而且模板很复杂。

然后我查看了 PrinceXML 并被困在如何使用模板引擎替换我的模板中的变量?我可以使用 RazorEngine,如果可以,它会是什么样子?

最后,是否有像 princeXML 一样有效的开源替代品?

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Test</title></head>
<body>
Hello World! FNR: <!-- how would one add a variable here? --><br>
<br>
</body>
</html>

XML:

<?xml version="1.0" encoding="utf-8"?>
<PdfPrinter>
  <Document>
    <FNR>FNR</FNR>
    <KNR>KNR</KNR>
    <G>G</G>
    <LN>LN</LN>
</Document>
  <Document>
    <FNR>  00</FNR>
    <KNR>555555</KNR>
    <G>1</G>
    <LN>02</LN>
</Document>
</PdfPrinter>

使用 Nustache 模板 html 应该如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<title>Test</title></head>
<body><br>
Hello World! FNR: {{fnr}}, KNR: {{knr}} Uhrzeit: {{date}} <!-- how would one add a variable here? --><br>
<br>
<br>
</body>
</html>

可以通过以下方式将 {{fnr}} 标签替换为您自己的代码数据:

var data = new { knr = "123456", fnr = 10, date = DateTime.Now.ToString() };

或:

 internal class Customer
    {
        public string CustomerID {get; set;}
        public string Forename { get; set; }
        public string Surname { get; set; }
    }



Customer user = new Customer();
Render.FileToFile(templateFile, user, outputFile);

这需要 Nustache 包(因此:使用 Nustache.Core; 是必要的)。可以在 github, or here at NuGet.

找到它