Ich habe wirklich Probleme beim Bearbeiten von Lesezeichen in einer Word-Vorlage mit Document.Format.OpenXML
und speichern Sie es dann in einer neuen PDF-Datei. Ich kann Microsoft.Word.Interop
nicht verwenden, da es einen COM-Fehler auf dem Server gibt.Wie können Sie Lesezeichen in einer Word-Vorlage mit DocumentFormat.OpenXml bearbeiten und als neue PDF-Datei speichern?
Mein Code ist dies:
public static void CreateWordDoc(string templatePath, string destinationPath, Dictionary<string, dynamic> dictionary)
{
byte[] byteArray = File.ReadAllBytes(templatePath);
using (MemoryStream stream = new MemoryStream())
{
stream.Write(byteArray, 0, (int)byteArray.Length);
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(stream, true))
{
var bookmarks = (from bm in wordDoc.MainDocumentPart.Document.Body.Descendants<BookmarkStart>()
select bm).ToList();
foreach (BookmarkStart mark in bookmarks)
{
if (mark.Name != "Table" && mark.Name != "_GoBack")
{
UpdateBookmark(dictionary, mark);//Not doing anything
}
else if (mark.Name != "Table")
{
// CreateTable(dictionary, wordDoc, mark);
}
}
File.WriteAllBytes("D:\\RohitDocs\\newfile_rohitsingh.docx", stream.ToArray());
wordDoc.Close();
}
// Save the file with the new name
}
}
private static void UpdateBookmark(Dictionary<string, dynamic> dictionary, BookmarkStart mark)
{
string name = mark.Name;
string value = dictionary[name];
Run run = new Run(new Text(value));
RunProperties props = new RunProperties();
props.AppendChild(new FontSize() { Val = "20" });
run.RunProperties = props;
var paragraph = new DocumentFormat.OpenXml.Wordprocessing.Paragraph(run);
mark.Parent.InsertAfterSelf(paragraph);
paragraph.PreviousSibling().Remove();
mark.Remove();
}
ich Lesezeichen mit meinem Text zu ersetzen versuchte aber die UpdateBookmark
Methode funktioniert nicht. Ich schreibe Stream und speichere es, weil ich dachte, wenn Lesezeichen ersetzt werden, dann kann ich es in einer anderen Datei speichern.
Ich bin nicht in der Lage, einen Code zum Konvertieren von Docx zu PDF mit itextSharp zu finden, können Sie teilen? – user2801308
sicher. gib mir ein paar Minuten –