B2023-024 added a method to all us to remove a section PDF from the pdf print cache

This commit is contained in:
John Jenko 2023-03-08 19:14:53 +00:00
parent eb48009f5c
commit b1a6f05bd2
3 changed files with 39 additions and 0 deletions

View File

@ -115,6 +115,25 @@ namespace VEPROMS.CSLA.Library
}
public partial class PdfInfo
{
// B2023-024 PROMS was using old cached PDF data when printing Word sections.
// Added this method that can be called to clear the PDF print cache for a specified section.
public static void RemovePDFFromCache(ItemInfo sect)
{
DocStyle myDocStyle = sect.ActiveSection.MyDocStyle;
SectionConfig sc = sect.ActiveSection.MyConfig as SectionConfig;
int ss = sect.MyDocVersion.DocVersionConfig.SelectedSlave;
if (sc != null && sc.Section_WordMargin == "Y")
{
RemoveFromCachedByPrimaryKey(sect.MyContent.MyEntry.DocID, ss * 10 + MSWordToPDF.DebugStatus, 0, 0, 0, 0);
}
else
{
RemoveFromCachedByPrimaryKey(sect.MyContent.MyEntry.DocID, ss * 10 + MSWordToPDF.DebugStatus, (int)myDocStyle.Layout.TopMargin,
(int)myDocStyle.Layout.PageLength, (int)myDocStyle.Layout.LeftMargin, (int)myDocStyle.Layout.PageWidth);
}
}
public static PdfInfo Get(ItemInfo sect, bool ovrride)
{
int count = 0;

View File

@ -71,6 +71,19 @@ namespace VEPROMS.CSLA.Library
if (_CacheByPrimaryKey.ContainsKey(key)) return _CacheByPrimaryKey[key][0];
return null;
}
// B2023-024 PROMS was using old cached PDF data when printing Word sections.
// Added this method to clear the PDF print cache for a specified section.
// This is called from RemovePDFFromCache() in PDFExt.cs
protected static void RemoveFromCachedByPrimaryKey(int docID, int debugStatus, int topRow, int pageLength, int leftMargin, int pageWidth)
{
ConvertListToDictionary();
string key = docID.ToString() + "_" + debugStatus.ToString() + "_" + topRow.ToString() + "_" + pageLength.ToString() + "_" + leftMargin.ToString() + "_" + pageWidth.ToString();
if (_CacheByPrimaryKey.ContainsKey(key))
{
_CacheByPrimaryKey.Remove(key);
}
return;
}
#endregion
#region Business Methods
private string _ErrorMessage = string.Empty;

View File

@ -831,6 +831,13 @@ namespace Volian.Print.Library
int profileDepth = ProfileTimer.Push(">>>> PrintProcedureOrFoldout");
Rtf2Pdf.TextAtCounter = 0;
bool doingFoldout = myFoldoutSection != null;
// B2023-024 PROMS was using old cached PDF data when printing Word sections.
if (doingFoldout)
{
PdfInfo.RemovePDFFromCache((ItemInfo) myFoldoutSection); // remove cached PDF info to force getting of new data
if (File.Exists(outputFileName))
File.Delete(outputFileName); // delete the temporary FOLDOUT file
}
// The following line accounts for 16bit OverrideLeftMargin when the 'Absolute' attribute is used in the genmac.
// We don't want to use the OverrideLeftMargin when 'Absolute' is used in the genmac.
// It's set here because the Volian.Svg.Library cannot call back to Volian.Print.Library to get this value.