Fixe la génération du code LaTeX
This commit is contained in:
@ -10,6 +10,59 @@ using Microsoft.AspNet.Mvc.ViewFeatures;
|
||||
|
||||
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 string NewLinesWith(this string target, string separator)
|
||||
@ -19,6 +72,13 @@ namespace Yavsc.Helpers
|
||||
|
||||
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(
|
||||
this Controller controller, IViewEngine engine,
|
||||
IHttpContextAccessor httpContextAccessor,
|
||||
|
@ -69,28 +69,28 @@
|
||||
\def\FactureNum {@Model.Id.ToString()} % Numéro de facture
|
||||
\def\FactureAcquittee {non} % Facture acquittée : oui/non
|
||||
\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
|
||||
\def\FactureDescr {
|
||||
@Model.Description
|
||||
@TeXHelpers.ToTeX(Model.Description)
|
||||
}
|
||||
|
||||
% Infos Client
|
||||
\def\ClientNom{@to.UserName} % Nom du client
|
||||
\def\ClientNom{@TeXHelpers.ToTeX(to.UserName)} % Nom du client
|
||||
|
||||
\def\ClientAdresse{
|
||||
% Adresse du client
|
||||
@if (!string.IsNullOrWhiteSpace(PostalAddress)) {
|
||||
<text> @PostalAddress\\</text> }
|
||||
<text> @TeXHelpers.ToTeX(PostalAddress)\\</text> }
|
||||
@if (!string.IsNullOrWhiteSpace(to.PhoneNumber)) {<text>
|
||||
@to.PhoneNumber <text>\\</text>
|
||||
@TeXHelpers.ToTeX(to.PhoneNumber)<text>\\</text>
|
||||
</text>}
|
||||
E-mail: @to.Email
|
||||
E-mail: @TeXHelpers.ToTeX(to.Email)
|
||||
}
|
||||
|
||||
% Liste des produits facturés : Désignation, prix
|
||||
@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>} }
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@ -106,24 +106,24 @@
|
||||
\setlength{\parindent}{0pt}
|
||||
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\cfoot{ @if (!string.IsNullOrWhiteSpace(from.UserName)) { @from.UserName }
|
||||
@if (!string.IsNullOrWhiteSpace(proaddrm)) { <text> - @proaddrm </text> } \newline
|
||||
\small{ E-mail: @from.Email
|
||||
@if (!string.IsNullOrWhiteSpace(from.PhoneNumber)) { <text> - Téléphone fixe: @from.PhoneNumber </text> }
|
||||
\cfoot{ @TeXHelpers.ToTeX(from.UserName) @if (!string.IsNullOrWhiteSpace(proaddrm)) { <text> - @TeXHelpers.ToTeX(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> }
|
||||
}
|
||||
}
|
||||
|
||||
\begin{document}
|
||||
|
||||
% Logo de la société
|
||||
@if (from.Avatar != null) {<text>
|
||||
\includegraphics{@from.Avatar}</text>
|
||||
} else { <text>
|
||||
%\includegraphics{logo.png}</text>
|
||||
@if (from.Avatar != null) {
|
||||
<text>\includegraphics{@from.Avatar}
|
||||
</text>
|
||||
} else {
|
||||
<text>%\includegraphics{logo.png}
|
||||
</text>
|
||||
}
|
||||
% Nom et adresse de la société
|
||||
@from.UserName \\
|
||||
@proaddrn
|
||||
@TeXHelpers.ToTeX(from.UserName) \\
|
||||
@TeXHelpers.ToTeX(proaddrn)
|
||||
|
||||
Facture n°\FactureNum
|
||||
|
||||
|
Reference in New Issue
Block a user