PDF多级中断和打印

时间:2017-12-22 13:56:53

标签: c# pdf nested-if

我正在尝试通过单面/双面打印文档,然后通过信封类型(压力密封或常规)

我在Record类中有Simplex和PressureSeal的布尔字段。

所有压力密封都是单一的,然后有常规的单面和双面文件。

我目前可以将压力密封文件与常规单面打印分开。我需要能够创建常规双面文档。

我有一些注释掉的行会导致所有文件重复。

所以,我正在寻找像这样的东西:

if (Simplex)
    if (pressureseal)
        create output file
    else
        create regular simplex output file
else
    create duplex output file

这是我现有的代码

#region Mark Records By Splits
//splits - 3,7,13
var splits = Properties.Settings.Default.Splits.Split(','); 

Dictionary<int, int> splitRanges = new Dictionary<int, int>();

int lastSplit = 0;
foreach (var split in splits)
{
    // Attempt to convert split into a integer and skip it if we can't.
    int splitNum;
    if (!int.TryParse(split, out splitNum))
        continue;

    splitRanges.Add(lastSplit, splitNum);
    lastSplit = Math.Max(lastSplit, splitNum + 1);
}

// Assign record splits.
foreach (var range in splitRanges)
{
    var recordsInRange = NoticeParser.records
        .Where(x => x.Sheets >= range.Key && x.Sheets <= range.Value)
        .ToList();
    recordsInRange.ForEach(x => x.Split = string.Format("{0}-{1}", range.Key, range.Value));
}

        var unassignedRecords = NoticeParser.records.Where(x => x.Sheets >= lastSplit).ToList();
        unassignedRecords.ForEach(x => x.Split = string.Format("{0}up", lastSplit));
#endregion

#region Sort out Pressure Seal records
      var recordsGroupedByPressureSeal = NoticeParser.records
          .GroupBy(x=>x.PressureSeal);

//var recordsGroupedBySimplex = NoticeParser.records.GroupBy(x => x.Simplex);
#endregion

int fCount = 0;
int nsCount = 0;

//foreach (var simdupGroup in recordsGroupedBySimplex)
//{
//    var recordsGroupedBySimDup = simdupGroup.GroupBy(x => x.Split).OrderBy(x => x.Key).ToDictionary(x => x.Key, x => x.ToList());

    foreach (var pressureGroup in recordsGroupedByPressureSeal)
    {
        var recordsGroupedBySplit = pressureGroup.GroupBy(x => x.Split).OrderBy(x => x.Key).ToDictionary(x => x.Key, x => x.ToList());

        foreach (var recordsInSplit in recordsGroupedBySplit.Values)
        {
         string processingExecutable = Path.Combine(Properties.Settings.Default.RootFolder, Properties.Settings.Default.ProcessingExecutable);
         string toProcessingFile = string.Format(Properties.Settings.Default.OutputFolder + "{0}_" + "toBCC.txt", fCount);
         string fromProcessingFile = string.Format(Properties.Settings.Default.OutputFolder + "IBC_LN_Sort_FromBCC.txt");

// If a sortation executable is specified, run it.
if (recordsInSplit.Count >= Properties.Settings.Default.MinimumSortationCount &&
    File.Exists(processingExecutable))
{
    // log.Info("Sorting records...");
    var processedRecords = recordsInSplit.ProcessAddresses<Record, RecordMap>(
        processingExecutable,
        toProcessingFile,
        fromProcessingFile);

    // Update records with the sortation fields.
    recordsInSplit.UpdateAddresses(processedRecords);
}
else
{
    toProcessingFile = string.Format(Properties.Settings.Default.OutputFolder + "{0}_no_sort_toBCC.txt", nsCount);
    fromProcessingFile = string.Format(Properties.Settings.Default.OutputFolder + "IBC_LN_NoSort_FromBCC.txt");

    //var processedRecords = recordsInSplit.ProcessAddresses<Record, RecordMap>(
    //    processingExecutable,
    //    toProcessingFile,
    //    fromProcessingFile);

    // Update records with the sortation fields.
    //  recordsInSplit.UpdateAddresses(processedRecords);

    // If not sorted, provide our own sequence number.
    int sequence = 1;
    recordsInSplit.ForEach(x => x.SequenceNumber = sequence++);
    recordsInSplit.ForEach(x => x.TrayNumber = 1);


    nsCount++;
}
fCount++;
        }
    }
//}

NoticeWriter noticeWriter = new NoticeWriter(noticeParser.reader);
#region Print by PressureSeal or Regular
//foreach (var simdupGroup in recordsGroupedBySimplex)
//{
//    string printType = null;

//    if (simdupGroup.Key)
//        printType = "Simplex";
//    else
//        printType = "Duplex";

    foreach (var splitGroup in recordsGroupedByPressureSeal)
    {
        string envType = "";  // envelope type

        if (splitGroup.Key)
envType = "PressureSeal";
        else
envType = "Regular";

        var recordsGroupedBySplit = splitGroup.GroupBy(x => x.Split).OrderBy(x => x.Key).ToDictionary(x => x.Key, x => x.ToList());

        foreach (var recordsInSplit in recordsGroupedBySplit)
        {
         string outputName = string.Format("IBC_Daily_Notices_{0}_{1}",envType, /*printType,*/ recordsInSplit.Key);
         noticeWriter.WriteOutputFiles(Properties.Settings.Default.OutputFolder, outputName, recordsInSplit.Value, Properties.Settings.Default.RecordsPerBatch);
        }

    }
//}
#endregion

0 个答案:

没有答案