public byte[] GetWordReplacedTextUsingPlaintext(string templatePath, List <WordReplacement> items) { var pathdir = ConfigurationManager.AppSettings["doctemplate"].ToString(); if (pathdir.StartsWith("~")) { pathdir = HttpContext.Current.Server.MapPath(pathdir); } var path = Path.Combine(pathdir, templatePath); FileStream fileStream = new FileStream(path, FileMode.Open); using (MemoryStream templateStream = new MemoryStream()) { //templateStream.Write(templateBytes, 0, (int)templateBytes.Length); fileStream.CopyStream(templateStream); fileStream.Close(); using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(templateStream, true)) { wordDoc.ChangeDocumentType(WordprocessingDocumentType.Document); SimplifyMarkupSettings settings = new SimplifyMarkupSettings { RemoveProof = true, RemoveRsidInfo = true, NormalizeXml = true, //RemoveContentControls = true, //RemoveMarkupForDocumentComparison = true }; MarkupSimplifier.SimplifyMarkup(wordDoc, settings); string docText = null; using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream())) { docText = sr.ReadToEnd(); } foreach (var item in items) { if (!string.IsNullOrEmpty(item.TextToReplace)) { Regex regexText = new Regex(item.TextToReplace); docText = regexText.Replace(docText, item.ReplacementText ?? ""); } } using (StreamWriter sw = new StreamWriter(templateStream)) { sw.Write(docText); return(templateStream.ToArray()); } } } }
private void AddFilesToArchive(string archivePath, string matchExpression, CompressionOption compressionLevel) { // Locate source files matching expression var sourceFilePaths = Directory.EnumerateFiles(this.SourcePath, matchExpression, SearchOption.AllDirectories); using (var package = Package.Open(archivePath, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { sourceFilePaths.ToList().ForEach(sourceFilePath => { try { PackagePart packagePart; var relSourceFilePath = sourceFilePath.Substring(this.SourcePath.Length); var partUri = PackUriHelper.CreatePartUri(new Uri(relSourceFilePath, UriKind.Relative)); if (!package.PartExists(partUri)) { base.Log.LogMessage(Resources.AddFilesToZipPackage_AddNewFileToArchive, relSourceFilePath, sourceFilePath); } else { base.Log.LogMessage(Resources.AddFilesToZipPackage_AddExistingFileToArchive, relSourceFilePath, sourceFilePath); // Replace old part with new part package.DeletePart(partUri); } packagePart = package.CreatePart(partUri, GetMimeTypeFromExtension(Path.GetExtension(sourceFilePath)), compressionLevel); // Add file to archive using (Stream streamForFile = new FileStream(sourceFilePath, FileMode.Open, FileAccess.Read)) { streamForFile.CopyStream(packagePart.GetStream()); } } catch (Exception ex) { base.Log.LogError(Resources.AddFileToZipPackage_AddFileFailed, sourceFilePath, ex.Message); throw; } }); } }
public byte[] GetDocumentByte(string templatePath) { var pathdir = ConfigurationManager.AppSettings["doctemplate"].ToString(); if (pathdir.StartsWith("~")) { pathdir = HttpContext.Current.Server.MapPath(pathdir); } var path = Path.Combine(pathdir, templatePath); FileStream fileStream = new FileStream(path, FileMode.Open); using (MemoryStream templateStream = new MemoryStream()) { //templateStream.Write(templateBytes, 0, (int)templateBytes.Length); fileStream.CopyStream(templateStream); fileStream.Close(); return(templateStream.ToArray()); } }
/// <summary> /// Close the file appender stream /// </summary> /// <param name="writeBack"> /// TRUE if the stream must be write the content of himself to the appender file. /// <remarks> /// The file must be closed to this time /// </remarks> /// </param> public virtual void Close(bool writeBack) { long length = stream.Length; stream.Close(); if (length > 0) { //Write data to appender file using (FileStream tmpIn = new FileStream(Filename, FileMode.Append)) { tmpIn.Write(signature, 0, signature.Length); using (FileStream tmpOut = new FileStream(tmpContentFile, FileMode.Open)) { tmpOut.CopyStream(tmpIn); tmpOut.Close(); } tmpIn.Close(); } } }
public override void Close() { long length = stream.Length; base.Close(); stream.Close(); if (length > 0) { //Write data to assembly using (FileStream tmpIn = new FileStream(assembly.Location, FileMode.Append)) { tmpIn.Write(signature, 0, signature.Length); using (FileStream tmpOut = new FileStream(tmpContentFile, FileMode.Open)) { tmpOut.CopyStream(tmpIn); tmpOut.Close(); } tmpIn.Close(); } } }
/// <summary> /// 流拷贝 /// </summary> public static MemoryStream Copy(this FileStream input) { return(input.CopyStream()); }
public byte[] GetWordReplacedText(string templatePath, List <WordReplacement> items) { var pathdir = ConfigurationManager.AppSettings["doctemplate"].ToString(); if (pathdir.StartsWith("~")) { pathdir = HttpContext.Current.Server.MapPath(pathdir); } var path = Path.Combine(pathdir, templatePath); FileStream fileStream = new FileStream(path, FileMode.Open); using (MemoryStream templateStream = new MemoryStream()) { //templateStream.Write(templateBytes, 0, (int)templateBytes.Length); fileStream.CopyStream(templateStream); fileStream.Close(); using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(templateStream, true)) { wordDoc.ChangeDocumentType(WordprocessingDocumentType.Document); SimplifyMarkupSettings settings = new SimplifyMarkupSettings { RemoveComments = true, RemoveContentControls = true, RemoveEndAndFootNotes = true, RemoveFieldCodes = false, RemoveLastRenderedPageBreak = true, RemovePermissions = true, RemoveProof = true, RemoveRsidInfo = true, RemoveSmartTags = true, RemoveSoftHyphens = true, ReplaceTabsWithSpaces = true, RemoveWebHidden = true, RemoveMarkupForDocumentComparison = true }; MarkupSimplifier.SimplifyMarkup(wordDoc, settings); var body = wordDoc.MainDocumentPart.Document.Body; var tables = body.Elements <DocumentFormat.OpenXml.Wordprocessing.Table>().ToList(); var paras = body.Elements <Paragraph>(); var runsall = body.Descendants <Run>().ToList(); foreach (var item in wordDoc.MainDocumentPart.HeaderParts) { foreach (var run in item.RootElement.Descendants <Run>()) { runsall.Add(run); } } foreach (var item in wordDoc.MainDocumentPart.FooterParts) { foreach (var run in item.RootElement.Descendants <Run>()) { runsall.Add(run); } } for (int i = 0; i < runsall.Count(); i++) { var r = runsall[i]; var textsrun = r.Elements <Text>(); if ((items.Any(t => !t.MatchWholeText ? r.InnerText?.Trim().Contains(t.TextToReplace) == true : r.InnerText == t.TextToReplace))) { var replace = items.Where(t => !t.MatchWholeText ? r.InnerText?.Trim().Contains(t.TextToReplace) == true : r.InnerText == t.TextToReplace).FirstOrDefault(); if (!replace.IsCheckBox) { foreach (var text in textsrun) { if (text != null) { if (items.Any(t => !t.MatchWholeText ? text.InnerText?.Trim().Contains(t.TextToReplace) == true : text.InnerText == t.TextToReplace)) { var wrd = items.FirstOrDefault(it => !it.MatchWholeText ? text.InnerText?.Trim().Contains(it.TextToReplace) == true : text.InnerText == it.TextToReplace); //while (items.Any(it => !it.MatchWholeText ? text.InnerText?.Trim().Contains(it.TextToReplace) == true : text.InnerText == it.TextToReplace)) { //} if (replace.UseRun) { try { if (replace.Run != null) { replace.Run.Append(r.RunProperties.CloneNode(true)); r.RemoveAllChildren(); r.Append(replace.Run.CloneNode(true)); } else { r.RemoveAllChildren(); } } catch (Exception exc) { } } else { wrd = items.FirstOrDefault(it => !it.MatchWholeText ? text.InnerText?.Trim().Contains(it.TextToReplace) == true : text.InnerText == it.TextToReplace); text.Text = wrd.MatchWholeText ? wrd.ReplacementText : text.Text.Replace(wrd.TextToReplace, wrd.ReplacementText); } } } } } else { r.RemoveAllChildren(); replace.Checkboxes.ForEach(c => { r.Append(c.CloneNode(true)); }); //var text = textsrun.FirstOrDefault(); //if (text != null) //{ // text.Text = String.Empty; //} //r.Chil();//.RemoveChild(r); } } } MarkupSimplifier.SimplifyMarkup(wordDoc, settings); wordDoc.Save(); return(templateStream.ToArray()); //foreach (var para in paras) { // var fieldss = para.Elements<SimpleField>(); // var runs = para.Elements<Run>().ToList(); // for (int i = 0; i < runs.Count; i++) { // var r = runs[i]; // var texts = r.Elements<Text>(); // if ((items.Any(t => r.InnerText?.Trim().Contains(t.TextToReplace) == true))) { // var replace = items.Where(t => r.InnerText?.Trim().Contains(t.TextToReplace) == true).FirstOrDefault(); // if (!replace.IsCheckBox) { // foreach (var text in texts) { // if (text != null) { // if (items.Any(t => text.Text?.Trim().Contains(t.TextToReplace) == true)) { // var wrd = items.FirstOrDefault(it => text.Text.Contains(it.TextToReplace)); // while(items.Any(t => text.Text?.Trim().Contains(t.TextToReplace) == true)) { // wrd = items.FirstOrDefault(it => text.Text.Contains(it.TextToReplace)); // text.Text = text.Text.Replace(wrd.TextToReplace, wrd.ReplacementText); // } // } // } // } // } else { // replace.Checkboxes.ForEach(c => { // r.InsertAfterSelf(c); // }); // para.RemoveChild(r); // } // } // } //} //foreach (var table in tables) { // var rows = table.Elements<DocumentFormat.OpenXml.Wordprocessing.TableRow>(); // foreach (var row in rows) { // var cells = row.Elements<DocumentFormat.OpenXml.Wordprocessing.TableCell>(); // foreach (var cell in cells) { // var ps = cell.Elements<Paragraph>(); // foreach (var p in ps) { // var runs = p.Elements<Run>().ToList(); // for (int i = 0; i < runs.Count; i++) { // var r = runs[i]; // var texts = r.Elements<Text>(); // if ((items.Any(t => t.TextToReplace == r.InnerText?.Trim()))) { // var replace = items.Where(t => t.TextToReplace == r.InnerText?.Trim()).FirstOrDefault(); // if (!replace.IsCheckBox) { // foreach (var text in texts) { // if (text != null) { // if (items.Any(t => t.TextToReplace == text.Text?.Trim())) // text.Text = text.Text.Replace(text.Text, items.Where(t => t.TextToReplace == text.Text?.Trim()).FirstOrDefault().ReplacementText); // } // } // } else { // replace.Checkboxes.ForEach(c => { // r.InsertAfterSelf(c); // }); // p.RemoveChild(r); // } // } // } // } // } // } //} //var allruns = body.Elements<Run>(); //foreach (var run in allruns) { // foreach (var text in run.Elements<Text>()) { // if (text != null) { // if (items.Any(t => t.TextToReplace == text.Text)) // text.Text = text.Text.Replace(text.Text, items.Where(t => t.TextToReplace == text.Text).FirstOrDefault().ReplacementText); // } // } //} } } }