Fixe la génération du code LaTeX

main
Paul Schneider 9 years ago
parent aa966aaa83
commit c174187b9f
2 changed files with 77 additions and 17 deletions

@ -10,6 +10,59 @@ using Microsoft.AspNet.Mvc.ViewFeatures;
namespace Yavsc.Helpers namespace Yavsc.Helpers
{ {
public class TeXString {
public class Replacement {
string target;
string replacement;
public Replacement(string target, string replacement){
this.target=target;
this.replacement=replacement;
}
public string Execute(string source)
{
return source.Replace(target,replacement);
}
}
public readonly static Replacement[] SpecialCharsToCommands =
{
new Replacement("<","\\textless"),
new Replacement(">","\\textgreater"),
new Replacement("©","\\copyright"),
new Replacement("®","\\textregistered"),
new Replacement("\\","\\textbackslash"),
new Replacement("™","\\texttrademark"),
new Replacement("¶","\\P"),
new Replacement("|","\\textbar"),
new Replacement("%","\\%"),
new Replacement("{","\\{"),
new Replacement("}","\\}"),
new Replacement("_","\\_"),
new Replacement("#","\\#"),
new Replacement("$","\\$"),
new Replacement("_","\\_"),
new Replacement("¿","\\textquestiondown"),
new Replacement("§","\\S"),
new Replacement("£","\\pounds"),
new Replacement("&","\\&"),
new Replacement("¡","\\textexclamdown"),
new Replacement("†","\\dag"),
new Replacement("","\\textendash")
};
string data;
public TeXString(string str) {
data = str;
foreach (var r in SpecialCharsToCommands) {
data = r.Execute(data);
}
}
override public string ToString()
{
return data;
}
}
public static class TeXHelpers public static class TeXHelpers
{ {
public static string NewLinesWith(this string target, string separator) public static string NewLinesWith(this string target, string separator)
@ -19,6 +72,13 @@ namespace Yavsc.Helpers
return string.Join(separator, items); return string.Join(separator, items);
} }
public static TeXString ToTeX(string target, string lineSeparator="\n\\\\")
{
if (target==null) return null;
return new TeXString(target.NewLinesWith(lineSeparator));
}
public static string RenderViewToString( public static string RenderViewToString(
this Controller controller, IViewEngine engine, this Controller controller, IViewEngine engine,
IHttpContextAccessor httpContextAccessor, IHttpContextAccessor httpContextAccessor,

@ -69,28 +69,28 @@
\def\FactureNum {@Model.Id.ToString()} % Numéro de facture \def\FactureNum {@Model.Id.ToString()} % Numéro de facture
\def\FactureAcquittee {non} % Facture acquittée : oui/non \def\FactureAcquittee {non} % Facture acquittée : oui/non
\def\FactureLieu {@proaddrn} % Lieu de l'édition de la facture \def\FactureLieu {@proaddrn} % Lieu de l'édition de la facture
\def\FactureObjet {Facture : @Model.Title} % Objet du document \def\FactureObjet {Facture : @TeXHelpers.ToTeX(Model.Title)} % Objet du document
% Description de la facture % Description de la facture
\def\FactureDescr { \def\FactureDescr {
@Model.Description @TeXHelpers.ToTeX(Model.Description)
} }
% Infos Client % Infos Client
\def\ClientNom{@to.UserName} % Nom du client \def\ClientNom{@TeXHelpers.ToTeX(to.UserName)} % Nom du client
\def\ClientAdresse{ \def\ClientAdresse{
% Adresse du client % Adresse du client
@if (!string.IsNullOrWhiteSpace(PostalAddress)) { @if (!string.IsNullOrWhiteSpace(PostalAddress)) {
<text> @PostalAddress\\</text> } <text> @TeXHelpers.ToTeX(PostalAddress)\\</text> }
@if (!string.IsNullOrWhiteSpace(to.PhoneNumber)) {<text> @if (!string.IsNullOrWhiteSpace(to.PhoneNumber)) {<text>
@to.PhoneNumber <text>\\</text> @TeXHelpers.ToTeX(to.PhoneNumber)<text>\\</text>
</text>} </text>}
E-mail: @to.Email E-mail: @TeXHelpers.ToTeX(to.Email)
} }
% Liste des produits facturés : Désignation, prix % Liste des produits facturés : Désignation, prix
@if (Model.Bill!=null) { foreach (CommandLine line in Model.Bill) { @if (Model.Bill!=null) { foreach (CommandLine line in Model.Bill) {
<text>\AjouterService{@line.Description}{@line.Count}{@line.UnitaryCost.ToString("F2",CultureInfo.InvariantCulture)} <text>\AjouterService{@TeXHelpers.ToTeX(line.Description)}{@line.Count}{@line.UnitaryCost.ToString("F2",CultureInfo.InvariantCulture)}
</text>} } </text>} }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -106,24 +106,24 @@
\setlength{\parindent}{0pt} \setlength{\parindent}{0pt}
\renewcommand{\headrulewidth}{0pt} \renewcommand{\headrulewidth}{0pt}
\cfoot{ @if (!string.IsNullOrWhiteSpace(from.UserName)) { @from.UserName } \cfoot{ @TeXHelpers.ToTeX(from.UserName) @if (!string.IsNullOrWhiteSpace(proaddrm)) { <text> - @TeXHelpers.ToTeX(proaddrm) </text> } \newline
@if (!string.IsNullOrWhiteSpace(proaddrm)) { <text> - @proaddrm </text> } \newline \small{ E-mail: @TeXHelpers.ToTeX(from.Email) @if (!string.IsNullOrWhiteSpace(from.PhoneNumber)) { <text> - Téléphone fixe: @TeXHelpers.ToTeX(from.PhoneNumber) </text> }
\small{ E-mail: @from.Email
@if (!string.IsNullOrWhiteSpace(from.PhoneNumber)) { <text> - Téléphone fixe: @from.PhoneNumber </text> }
} }
} }
\begin{document} \begin{document}
% Logo de la société % Logo de la société
@if (from.Avatar != null) {<text> @if (from.Avatar != null) {
\includegraphics{@from.Avatar}</text> <text>\includegraphics{@from.Avatar}
} else { <text> </text>
%\includegraphics{logo.png}</text> } else {
<text>%\includegraphics{logo.png}
</text>
} }
% Nom et adresse de la société % Nom et adresse de la société
@from.UserName \\ @TeXHelpers.ToTeX(from.UserName) \\
@proaddrn @TeXHelpers.ToTeX(proaddrn)
Facture n°\FactureNum Facture n°\FactureNum

Loading…