Add Checkbox to Paragraph - c#

Hy!
I want to add a checkbox to a paragraph.
My code:
PrintDialog pd = new PrintDialog();
pd.ShowDialog();
FlowDocument doc = new FlowDocument();
Paragraph ph = new Paragraph();
ph.Inlines.Add(new Bold(new Run("TODO\n")));
foreach (CheckBox cb in box.Items)
{
int value = Convert.ToInt32("0x6F", 16);
string stringValue = Char.ConvertFromUtf32(value);
CheckBox bt = new CheckBox();
bt.IsChecked = false;
ph.Inlines.Add(new Run(bt + " "+cb.Content.ToString()));
}
doc.Name = "FlowDoc";
doc.Blocks.Add(ph);
IDocumentPaginatorSource idpSource = doc;
pd.PrintDocument(idpSource.DocumentPaginator, "Hello WPF Printing.");
the output is wrong:
TODO System.Windows.Controls.CheckBox Content: IsChecked:False hahaSystem.Windows.Controls.CheckBox Content: IsChecked:False haha1System.Windows.Controls.CheckBox Content: IsChecked:False hallo
Please help!

You could use BlockUIContainer http://msdn.microsoft.com/en-us/library/system.windows.documents.blockuicontainer.aspx
PrintDialog pd = new PrintDialog();
pd.ShowDialog();
FlowDocument doc = new FlowDocument();
Paragraph ph = new Paragraph();
StackPanel sp = new StackPanel();
BlockUIContainer buc = new BlockUIContainer(sp);
ph.Inlines.Add(new Bold(new Run("TODO\n")));
foreach (CheckBox cb in box.Items)
{
int value = Convert.ToInt32("0x6F", 16);
string stringValue = Char.ConvertFromUtf32(value);
CheckBox bt = new CheckBox();
bt.IsChecked = false;
bt.Content = cb.Content;
//ph.Inlines.Add(new Run(bt + " " + cb.Content.ToString()));
sp.Children.Add(bt);
}
doc.Name = "FlowDoc";
doc.Blocks.Add(ph);
doc.Blocks.Add(buc);
IDocumentPaginatorSource idpSource = doc;
pd.PrintDocument(idpSource.DocumentPaginator, "Hello WPF Printing.");

Related

Adding textBoxes (two or more) on same word page on specific location (x,y) using spire.doc

I am trying to create word document with few text boxes (more will be added later) on specific location (x and y) on same page using Spire.doc. But this code is generating two pages. Any help with this?
If the a any other way it is not necessary to use Spire.
Please keep in minde thet i am novice to programing, thanks.
string TEMPprocitano;
private void button1_Click(object sender, EventArgs e)
{
citanjeReda();
}
public void citanjeReda()
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
int brojRedova=File.ReadLines(openFileDialog1.FileName).Count();
StreamReader sr = new StreamReader(openFileDialog1.FileName);
for (int i = 0; i <= brojRedova; i++)
{
TEMPprocitano = sr.ReadLine();
f1(); f3();
}
sr.Close();
}
}
public void f1() //doc_pers_no 11
{
try
{
StringBuilder F1 = new StringBuilder(TEMPprocitano);
F1.Remove(0, 22);
F1.Remove(11, 698);
MessageBox.Show(F1.ToString());
//Create a Word document
Document doc = new Document();
Section section = doc.AddSection();
Paragraph paragraph = section.AddParagraph();
//Append a Textbox to paragraph
Spire.Doc.Fields.TextBox tb = paragraph.AppendTextBox(170, 20);
//Set the position of Textbox
tb.Format.HorizontalOrigin = HorizontalOrigin.Page;
tb.Format.HorizontalPosition = 150;
tb.Format.VerticalOrigin = VerticalOrigin.Page;
tb.Format.VerticalPosition = 50;
CharacterFormat format = new CharacterFormat(doc);
format.FontName = "Calibri";
format.FontSize = 11;
format.Bold = false;
Paragraph par1 = tb.Body.AddParagraph();
par1.AppendText(F1.ToString()).ApplyCharacterFormat(format);
//Save to file
doc.SaveToFile("job.docx", FileFormat.Docx);
} catch (Exception){}
}
public void f3() // 32
{
try
{
StringBuilder F3 = new StringBuilder(TEMPprocitano);
F3.Remove(0, 49);
F3.Remove(32, 650);
MessageBox.Show(F3.ToString());
//Create a Word document
Document doc = new Document();
Section section = doc.AddSection();
Paragraph paragraph = section.AddParagraph();
//Append a Textbox to paragraph
Spire.Doc.Fields.TextBox tb = paragraph.AppendTextBox(170, 20);
//Set the position of Textbox
tb.Format.HorizontalOrigin = HorizontalOrigin.Page;
tb.Format.HorizontalPosition = 250;
tb.Format.VerticalOrigin = VerticalOrigin.Page;
tb.Format.VerticalPosition = 150;
CharacterFormat format = new CharacterFormat(doc);
format.FontName = "Calibri";
format.FontSize = 11;
format.Bold = false;
Paragraph par1 = tb.Body.AddParagraph();
par1.AppendText(F3.ToString()).ApplyCharacterFormat(format);
//Save to file
doc.SaveToFile("job.docx", FileFormat.Docx);
} catch (Exception) { }
string TEMPprocitano;
private void button1_Click(object sender, EventArgs e)
{
citanjeReda();
}
public void citanjeReda()
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
int brojRedova=File.ReadLines(openFileDialog1.FileName).Count();
StreamReader sr = new StreamReader(openFileDialog1.FileName);
for (int i = 0; i <= brojRedova; i++)
{
TEMPprocitano = sr.ReadLine();
f1();
}
sr.Close();
}
}
public void f1() //doc_pers_no 11
{
try
{
StringBuilder F1 = new StringBuilder(TEMPprocitano);
F1.Remove(0, 22);
F1.Remove(11, 698);
MessageBox.Show(F1.ToString());
//Create a Word document
Document doc = new Document();
Section section = doc.AddSection();
Paragraph paragraph = section.AddParagraph();
//Append a Textbox to paragraph
Spire.Doc.Fields.TextBox tb = paragraph.AppendTextBox(170, 20);
//Set the position of Textbox
tb.Format.HorizontalOrigin = HorizontalOrigin.Page;
tb.Format.HorizontalPosition = 150;
tb.Format.VerticalOrigin = VerticalOrigin.Page;
tb.Format.VerticalPosition = 50;
tb.Format.NoLine = true;
CharacterFormat format = new CharacterFormat(doc);
format.FontName = "Calibri";
format.FontSize = 11;
format.Bold = false;
Paragraph par1 = tb.Body.AddParagraph();
par1.AppendText(F1.ToString()).ApplyCharacterFormat(format);
////// for F3
StringBuilder F3 = new StringBuilder(TEMPprocitano);
F3.Remove(0, 49);
F3.Remove(32, 650);
MessageBox.Show(F3.ToString());
//Append a Textbox to paragraph
Spire.Doc.Fields.TextBox tb3 = paragraph.AppendTextBox(170, 20);
//Set the position of Textbox
tb3.Format.HorizontalOrigin = HorizontalOrigin.Page;
tb3.Format.HorizontalPosition = 70;
tb3.Format.VerticalOrigin = VerticalOrigin.Page;
tb3.Format.VerticalPosition = 70;
tb3.Format.NoLine = true;
Paragraph par3 = tb3.Body.AddParagraph();
par3.AppendText(F3.ToString()).ApplyCharacterFormat(format);
//Save to file
doc.SaveToFile("job.docx", FileFormat.Docx);
} catch (Exception){}
}

How to print flowdocument in landscape (WPF,C#)?

I'd like to print my programmatically created flowdocument in landscape mode and I tried all versions what I've found but none of them works.
Here's my code below:
try
{
// Create a PrintDialog
PrintDialog printDlg = new PrintDialog();
printDlg.PrintTicket.PageOrientation = System.Printing.PageOrientation.Landscape;
// Create a FlowDocument dynamically.
FlowDocument doc = CreateFlowDocumentSum();
doc.Name = "FlowDoc";
doc.ColumnWidth = printDlg.PrintableAreaWidth;
// Create IDocumentPaginatorSource from FlowDocument
IDocumentPaginatorSource idpSource = doc;
// Call PrintDocument method to send document to printer
printDlg.PrintDocument(idpSource.DocumentPaginator, "sum");
doc.Blocks.Clear();
sumTable.Clear();
}
catch
{ }
I did it finally.
Just modified the code in the print button event:
PrintDialog printDlg = new PrintDialog();
LocalPrintServer ps = new LocalPrintServer();
PrintQueue pq = ps.DefaultPrintQueue;
PrintTicket pt = pq.UserPrintTicket;
pt.PageOrientation = PageOrientation.Landscape;
FlowDocument doc = CreateFlowDocumentSum();
doc.PageHeight = 768;
doc.PageWidth = 1104;
PageMediaSize pageMediaSize = new PageMediaSize(doc.PageWidth, doc.PageHeight);
pt.PageMediaSize = pageMediaSize;
IDocumentPaginatorSource source = doc as IDocumentPaginatorSource;
printDlg.PrintDocument(source.DocumentPaginator, "sum");
Then in my FlowDocument I set the width and height:
FlowDocument docSum = new FlowDocument();
docSum.PageHeight = 768;
docSum.PageWidth = 1104;
docSum.ColumnWidth = 1104;

The name SpaceProcessingModeValues does not exist in this context

In my ASP.net program i have a class to open a word document, find a boormark and insert a given text
The error i get is: the name SpaceProcessingModeValues does not exist in the current context.
using (WordprocessingDocument document = WordprocessingDocument.Open(strFileName, true))
{
MainDocumentPart mainPart = document.MainDocumentPart;
IEnumerable<BookmarkStart> res = from bm in mainPart.Document.Body.Descendants<BookmarkStart>()
where bm.Name == "strField"
select bm;
int x = 0;
BookmarkStart bookmark = res.SingleOrDefault();
if (bookmark != null)
{
OpenXmlElement parent = bookmark.Parent; // bookmark's parent element
var paragraph1 = new Paragraph {RsidParagraphAddition = "00023529", RsidRunAdditionDefault = "003E1BA6"};
var run1 = new Run();
var text1 = new Text("Text : "){ Space = SpaceProcessingModeValues.Preserve };
run1.Append(text1);
var bookmarkStart1 = new BookmarkStart {Name = "_GoBack", Id = 0};
var bookmarkEnd1 = new BookmarkEnd {Id = 0};
var run2 = new Run();
var text2 = new Text();
text2.Text = strGivenText;
run2.Append(text2);
paragraph1.Append(run1);
paragraph1.Append(bookmarkStart1);
paragraph1.Append(bookmarkEnd1);
paragraph1.Append(run2);
parent.InsertBeforeSelf(paragraph1);
}
// close saves all parts and closes the document
mainPart.Document.Save();
document.Close();
}
You need to add the references DocumentFormat.OpenXml namespace

Openxml C# while adding a new pragraph

First I have created a paragraph in openxml
Paragraph paragraph1 = new Paragraph();
try
{
ParagraphProperties paragraphProperties1 = new ParagraphProperties();
ParagraphStyleId paragraphStyleId1 = new ParagraphStyleId() {
Val = "Correspondence" };
paragraphProperties1.AppendChild(paragraphStyleId1);
Run run1 = new Run();
Text text1 = new Text();
text1.Text = array[1];
run1.AppendChild(text1);
paragraph1.AppendChild(paragraphProperties1);
paragraph1.AppendChild(run1);
}
catch { }
After that i traverse my document paragraph by paragraph and add paragraph that i have described above.
var ps = wordDoc1.MainDocumentPart.Document.Descendants<Paragraph>();
bool addBool;
addBool = false;
foreach (Paragraph pg in ps)
{
if (addBool == true)
{
//pg.Append(paragraph1);
//wordDoc1.MainDocumentPart.Document.Save();
break;
}
if (pg.InnerXml.Contains(#"w:val=""Author""") == true)
{
addBool = true;
pg.Append(paragraph1);
//pg.InnerXml = pg.InnerXml + array[0];
wordDoc1.MainDocumentPart.Document.Save();
break;
}
}
So, It will just append the paragraph into the select paragraph.
My Question:
How can i insert a new paragraph just below the selected paragraph?
Note** And it should not merge into the paragraph but is should create a new paragraph
You can use pg.InsertAfter method to insert new paragraph. Doing so will automatically add paragraph breaks before and after the paragraph.

Open XML Word C# - Split into Two Columns

I was wondering how would it be possible to split the word document into two columns. The reason why I want to do this is because I want to be able to fit all of the information on one page.
Thank you so much for your help and time!
My Code
using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(filepath, WordprocessingDocumentType.Document))
{
MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
mainPart.Document = new Document();
var margin_size = 100;
PageMargin pargeMargins = new PageMargin();
pargeMargins.Top = margin_size;
pargeMargins.Bottom = margin_size;
SectionProperties sectionProps = new SectionProperties();
sectionProps.Append(pargeMargins);
Body body = mainPart.Document.AppendChild(new Body());
body.Append(sectionProps);
ParagraphProperties paragraphProperties = new ParagraphProperties
(
//new ParagraphStyleId() { Val = "No Spacing" },
new SpacingBetweenLines() { After = "0" }
);
Paragraph para_main = body.AppendChild(new Paragraph(paragraphProperties));
// Creating the Header where the Serial Number will exist
// Serial Number
Run run_mainHeader = para_main.AppendChild(new Run());
RunProperties runProp_mainHeader = new RunProperties(); // Create run properties.
FontSize size_mainHeader = new FontSize();
size_mainHeader.Val = new StringValue("48");
runProp_mainHeader.Append(size_mainHeader);
run_mainHeader.Append(runProp_mainHeader); // Append all of the properties
run_mainHeader.Append(new Text("S/N: " + sn));
// Serial Barcode
Run run_barcode = para_main.AppendChild(new Run());
RunProperties runProp_barcode = new RunProperties(); // Create run properties.
RunFonts runFontMain_barcode = new RunFonts(); // Create font
runFontMain_barcode.Ascii = "Code39AzaleaNarrow1"; // Specify font family
FontSize size_barcode = new FontSize();
size_barcode.Val = new StringValue("48");
runProp_barcode.Append(runFontMain_barcode);
runProp_barcode.Append(size_barcode);
run_barcode.PrependChild<RunProperties>(runProp_barcode);
sn = sn.ToUpper(); // Sets all the values to uppercase to be a barcode format
run_barcode.AppendChild(new Text("*" + sn + "*"));
run_barcode.AppendChild(new Break());
// Tube Type
Run run_tubetype = para_main.AppendChild(new Run());
RunProperties runProp_tubetype = new RunProperties(); // Create run properties.
FontSize size_tubetype = new FontSize();
size_tubetype.Val = new StringValue("38");
runProp_tubetype.Append(size_tubetype);
run_tubetype.Append(runProp_tubetype); // Append all of the properties
run_tubetype.Append(new Text("Tube Type: " + forms[0].TubeType + " "));
//run_tubetype.Append(new Break());
// Tube Barcode
Run run_barcode_tube = para_main.AppendChild(new Run());
RunProperties runProp_barcode_tube = new RunProperties(); // Create run properties.
RunFonts runFontMain_barcode_tube = new RunFonts(); // Create font
runFontMain_barcode_tube.Ascii = "Code39AzaleaNarrow1"; // Specify font family
FontSize size_barcode_tube = new FontSize();
size_barcode_tube.Val = new StringValue("48");
runProp_barcode_tube.Append(runFontMain_barcode_tube);
runProp_barcode_tube.Append(size_barcode_tube);
run_barcode_tube.PrependChild<RunProperties>(runProp_barcode_tube);
sn = sn.ToUpper(); // Sets all the values to uppercase to be a barcode format
run_barcode_tube.AppendChild(new Text("*" + forms[0].TubeType + "*"));
run_barcode_tube.AppendChild(new Break());
// Goes through all of the forms
foreach (var form in forms)
{
// Set up a header per form
Run run_header = para_main.AppendChild(new Run());
RunProperties runProp_formHeader = new RunProperties();
Bold bold = new Bold();
Underline ul = new Underline() { Val = DocumentFormat.OpenXml.Wordprocessing.UnderlineValues.Single };
FontSize size_formHeader = new FontSize();
size_formHeader.Val = new StringValue("24");
runProp_formHeader.Append(size_formHeader);
runProp_formHeader.Append(bold);
runProp_formHeader.Append(ul);
run_header.AppendChild(new RunProperties(runProp_formHeader));
//run_header.AppendChild(new RunProperties(new Bold(), new Underline()));
string username = form.Username;
string proces_header = form.HeaderTitle;
run_header.AppendChild(new Text(proces_header));
run_header.AppendChild(new Break());
// Goes through all of the fields that each form contains.
for (int i = 0; i < form.FieldList.Count; i++)
{
// Do not need to print out user or serial for each form.
if (!(form.FieldList[i].Token == "SNT"))
{
Run run_data = para_main.AppendChild(new Run());
if (form.FieldList[i].Default)
{
run_data.AppendChild(new Text(form.FieldList[i].Label));
}
else
{
run_data.AppendChild(new Text(form.FieldList[i].Label + " " + form.FieldList[i].Spec + form.FieldList[i].Value));
}
run_data.AppendChild(new Break());
}
}
}
mainPart.Document.Save();
wordDoc.Close();
return "Success";
}
Currently the code prints out everything top-down on one column. And I want it with two columns
You can two or how many columns you want using the Columns Class for the SectionProperties and ParagraphProperties Class
http://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.columns(v=office.14).aspx
http://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.paragraphproperties(v=office.14).aspx
http://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.sectionproperties(v=office.14).aspx
This should do it:
// Add a new main document part.
package.AddMainDocumentPart();
// Create the Document DOM.
package.MainDocumentPart.Document = new Document();
Body bd = package.MainDocumentPart.Document.Body = new Body();
//write a first paragraph on two columns
var paragrap1 = new Paragraph();
var paragraphSectionProperties = new ParagraphProperties(new SectionProperties());
var paragraphColumns = new Columns();
paragraphColumns.EqualWidth = true;
paragraphColumns.ColumnCount = 2;
paragraphSectionProperties.Append(paragraphColumns);
paragrap1.Append(paragraphSectionProperties);
paragrap1.Append(new Run(new Text(str)));
bd.AppendChild(paragrap1);
//write another paragraph without paragraph properties
bd.Append(new Paragraph(new Run(new Text(str))));
//set the body properties default three columns
var sectionProperties = new SectionProperties();
var columns = new Columns();
columns.EqualWidth = true;
columns.ColumnCount = 3;
sectionProperties.Append(columns);
bd.Append(sectionProperties);
package.MainDocumentPart.Document.Save();
You can do it for the complete document with this code:
var sectionProperty = document.Body.Descendants<SectionProperties>().First();
var paragraphColumns = new Columns {EqualWidth = true, ColumnCount = 2};
sectionProperty.Append(paragraphColumns);
Try with..
Word.Application WordApp = new Word.Application();
Word.Document BaseDoc = default(Word.Document);
Word.Document DestDoc = default(Word.Document);
int intNumberOfPages = 0;
string intNumberOfChars = null;
int intPage = 0;
//Word Constants
const var wdGoToPage = 1;
const var wdStory = 6;
const var wdExtend = 1;
const var wdCharacter = 1;
//Show WordApp
WordApp.ShowMe();
//Load Base Document
BaseDoc = WordApp.Documents.Open(Filename);
BaseDoc.Repaginate();
//Loop through pages
intNumberOfPages = BaseDoc.BuiltInDocumentProperties("Number of Pages").value;
intNumberOfChars = BaseDoc.BuiltInDocumentProperties("Number of Characters").value;
for (intPage = 1; intPage <= intNumberOfPages; intPage++) {
if (intPage == intNumberOfPages) {
WordApp.Selection.EndKey(wdStory); }
else {
WordApp.Selection.GoTo(wdGoToPage, 2);
Application.DoEvents();
WordApp.Selection.MoveLeft(Unit = wdCharacter, Count = 1);
}
Application.DoEvents();
WordApp.Selection.HomeKey(wdStory, wdExtend);
Application.DoEvents();
WordApp.Selection.Copy();
Application.DoEvents();
//Create New Document
DestDoc = WordApp.Documents.Add;
DestDoc.Activate();
WordApp.Selection.Paste();
DestDoc.SaveAs(NewFileName + intPage.ToString + ".doc");
DestDoc.Close();
DestDoc = null;
WordApp.Selection.GoTo(wdGoToPage, 2);
Application.DoEvents();
WordApp.Selection.HomeKey(wdStory, wdExtend);
Application.DoEvents();
WordApp.Selection.Delete();
Application.DoEvents();
}
BaseDoc.Close(false);
BaseDoc = null;
WordApp.Quit();
WordApp = null;

Categories