Сохранение / сохранение форматирования.RTF шаблона
Цель: создать почтовые ярлыки и вывести их в MS Word или Wordpad как .rtf
из предварительно сделанного .rtf
шаблоны этикеток.
Проблема: когда метки открываются, их данные корректны, но они теряют большую часть своего форматирования из шаблона (например, столбцы, интервалы, поля). Я думаю, что это связано с открытием MS Word .rtf
или .doc
пытаясь открыть как .rtf
, Но не уверен, как это исправить.
Ниже указано, где создается имя файла документа (template = "Labels"
):
string argTempFileName = Helpers.Documents.DocumentRepositoryHelper.TempDocumentFileName(template);
...
public class DocumentRepositoryHelper
{
private static string[] saveDocExt = { "doc", "txt", "xlsx" };
private const string doctemplateext = "rtf";
public static string TempDocumentFileName(string doc)
{
if (!System.IO.Directory.Exists(SavedTempDocumentsDirectory))
System.IO.Directory.CreateDirectory(SavedTempDocumentsDirectory);
string rtn = string.Format(@"{0}\{1}.{2}", SavedTempDocumentsDirectory, string.Format("{0}_{1}_{2}", ContestEntryHelper.Contest.StartDate.Year.ToString(), doc, DateTime.Now.ToString("MMddyyyy_HHmm")), saveDocExt[0]);
return rtn;
}
}
Затем, вернувшись из TempDocumentFileName
, он извлекает данные для печати и сохраняет:
RichTextBox rtf = new RichTextBox();
string finalRtf = GetLabelsRtfToPrint(template, labeltype, worker); //works as expected
rtf.Rtf = finalRtf;
rtf.SaveFile(argTempFileName, RichTextBoxStreamType.RichNoOleObjs);
worker.ReportProgress(100);
OpenAsWordDocument(argTempFileName);
В настоящее время использует OpenAsWordDocument
но у меня тоже есть OpenAsRTFDocument
в моем распоряжении. Это не код, который я написал, но мне было поручено исправить его. Интересно, смогу ли я использовать уже разработанные предметы.
public static void OpenAsWordDocument(string argTempFileName)
{
System.IO.FileInfo fileInfo = new System.IO.FileInfo(argTempFileName);
System.Diagnostics.Process newProc = new System.Diagnostics.Process();
newProc.StartInfo.FileName = argTempFileName;
newProc.StartInfo.Verb = "Open";
newProc.StartInfo.ErrorDialog = true; // Display an error dialog if the process cannot start
try
{
newProc.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public static void OpenAsRTFDocument(string argTempFileName)
{
System.IO.FileInfo fileInfo = new System.IO.FileInfo(argTempFileName);
System.Diagnostics.Process newProc = new System.Diagnostics.Process();
newProc.StartInfo.FileName = "wordpad";
newProc.StartInfo.Arguments = argTempFileName;
newProc.StartInfo.Verb = "Open";
newProc.StartInfo.ErrorDialog = true; // Display an error dialog if the process cannot start
try
{
newProc.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Я пытался получить его, чтобы сохранить как .rtf
, имея argTempFileName
добавлен как .rtf
вместо .doc
, Но все еще имел ту же проблему с этим.
Пытаясь это, я также пытался использовать OpenAsRTFDocument
вместо OpenAsWordDocument
, но у меня все еще была та же проблема.