Represents a paragraph in English Original: https://social.msdn.microsoft.com/Forums/vstudio/en-US/74a113ff-e242-4bec-9b30-7037f0d3650f/sentence-case-string?forum=csharpgeneral
 public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
 {
     _errorCount = 0;
     int number = 0;
     foreach (string line in lines)
     {
         if (line.Trim().Length > 0 && line.Trim('-').Trim().Length > 0)
         {
             if (RegexTimeCodes.Match(line).Success)
             {
                 string[] threePart = line.Split(",".ToCharArray(), StringSplitOptions.None);
                 var p = new Paragraph();
                 if (threePart.Length > 2 &&
                     line.Length > 58 &&
                     GetTimeCode(p.StartTime, threePart[0].Trim()) &&
                     GetTimeCode(p.EndTime, threePart[1].Trim()))
                 {
                     number++;
                     p.Number = number;
                     p.Text = line.Remove(0, 57).Trim().Replace(" | ", Environment.NewLine).Replace("|", Environment.NewLine);
                     subtitle.Paragraphs.Add(p);
                 }
             }
             else
             {
                 _errorCount++;
             }
         }
     }
 }
 private static string FormatText(Paragraph p)
 {
     string text = p.Text;
     while (text.Contains(Environment.NewLine + Environment.NewLine))
         text = text.Replace(Environment.NewLine + Environment.NewLine, Environment.NewLine);
     return text;
 }
        static void Main(string[] args)
        {
            Console.Write("Username: "******"C:\Users\" + user + @"\Desktop\test.docx", WordprocessingDocumentType.Document);
            MainDocumentPart main = package.AddMainDocumentPart();
            main.Document = new Document();
            Document document1 = main.Document;
            Body body = document1.AppendChild(new Body());
            document1 = package.MainDocumentPart.Document;
            document1.Save();

            OpenXmlHelper document = new OpenXmlHelper(package, main);
            //You will have to have all the files below if you want to successfully test this.
            //Image Formats
            Paragraph para = new Paragraph();
            Run run = new Run();
            run.AppendChild(new Text("These are Image Formats"));
            para.AppendChild(run);
            document.AddParagraph(para);
            document.AddImage(@"C:\Users\" + user + @"\Desktop\test\test.jpg");
            document.AddImage(@"C:\Users\" + user + @"\Desktop\test\test.gif");
            document.AddImage(@"C:\Users\" + user + @"\Desktop\test\test.png");
            document.AddImage(@"C:\Users\" + user + @"\Desktop\test\test.tif");
            document.AddImage(@"C:\Users\" + user + @"\Desktop\test\test.bmp");
            document.AddImage(@"C:\Users\" + user + @"\Desktop\test\test.ico");
            //Office XML Formats
            para = new Paragraph();
            run = new Run();
            run.AppendChild(new Text("These are Office XML Formats"));
            para.AppendChild(run);
            document.AddParagraph(para);
            document.AddObject(@"C:\Users\" + user + @"\Desktop\test\test.docx","test.docx");
            document.AddObject(@"C:\Users\" + user + @"\Desktop\test\test.xlsx", "test.xlsx");
            document.AddObject(@"C:\Users\" + user + @"\Desktop\test\test.pptx", "test.pptx");
            //Office Basic Formats
            para = new Paragraph();
            run = new Run();
            run.AppendChild(new Text("These are Office Basic Formats"));
            para.AppendChild(run);
            document.AddParagraph(para);
            document.AddObject(@"C:\Users\" + user + @"\Desktop\test\test.doc", "test.doc");
            document.AddObject(@"C:\Users\" + user + @"\Desktop\test\test.xls", "test.xls");
            document.AddObject(@"C:\Users\" + user + @"\Desktop\test\test.vsd", "test.vsd");
            //Object Formats
            para = new Paragraph();
            run = new Run();
            run.AppendChild(new Text("These are Object Formats"));
            para.AppendChild(run);
            document.AddParagraph(para);
            document.AddObject(@"C:\Users\" + user + @"\Desktop\test\test.xml", "test.xml");
            document.AddObject(@"C:\Users\" + user + @"\Desktop\test\test.txt", "test.txt");
            document.AddObject(@"C:\Users\" + user + @"\Desktop\test\test.pdf", "test.pdf");
            document.AddObject(@"C:\Users\" + user + @"\Desktop\test\test.zip", "test.zip");

            document.Close();
            Console.WriteLine("Press any key to exit");
            Console.ReadKey();
        }
Beispiel #4
0
 public static void WriteSubtitleBlock(FileStream fs, Paragraph p, int number)
 {
     fs.WriteByte(0);
     fs.WriteByte((byte)(number % 256)); // number - low byte
     fs.WriteByte((byte)(number / 256)); // number - high byte
     fs.WriteByte(0xff);
     fs.WriteByte(0);
     WriteTimeCode(fs, p.StartTime);
     WriteTimeCode(fs, p.EndTime);
     fs.WriteByte(1);
     fs.WriteByte(2);
     fs.WriteByte(0);
     var buffer = Encoding.GetEncoding(1252).GetBytes(p.Text.Replace(Environment.NewLine, "Š"));
     if (buffer.Length <= 128)
     {
         fs.Write(buffer, 0, buffer.Length);
         for (int i = buffer.Length; i < TextLength; i++)
         {
             fs.WriteByte(0x8f);
         }
     }
     else
     {
         for (int i = 0; i < TextLength; i++)
         {
             fs.WriteByte(buffer[i]);
         }
     }
 }
Beispiel #5
0
    /// <summary>
    /// Add a new paragraph.
    /// </summary>
    protected void Add(string text, bool updateVisible)
    {
        Paragraph ce = null;

        if (mParagraphs.Count < maxEntries)
        {
            ce = new Paragraph();
        }
        else
        {
            ce = mParagraphs[0];
            mParagraphs.RemoveAt(0);
        }

        ce.text = text;
        mParagraphs.Add(ce);

        if (textLabel != null && textLabel.font != null)
        {
            // Rebuild the line
            ce.lines = textLabel.font.WrapText(ce.text, maxWidth / textLabel.transform.localScale.y, true, true).Split(mSeparator);

            // Recalculate the total number of lines
            mTotalLines = 0;
            foreach (Paragraph p in mParagraphs) mTotalLines += p.lines.Length;
        }

        // Update the visible text
        if (updateVisible) UpdateVisibleText();
    }
 public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
 {
     _errorCount = 0;
     int number = 0;
     foreach (string line in lines)
     {
         if (line.Trim().Length > 0 && line[0] != '$' && !line.StartsWith("//"))
         {
             if (RegexTimeCodes.Match(line).Success)
             {
                 string[] toPart = line.Substring(0, 25).Split(new[] { " ," }, StringSplitOptions.None);
                 Paragraph p = new Paragraph();
                 if (toPart.Length == 2 &&
                     DvdStudioPro.GetTimeCode(p.StartTime, toPart[0]) &&
                     DvdStudioPro.GetTimeCode(p.EndTime, toPart[1]))
                 {
                     number++;
                     p.Number = number;
                     string text = line.Substring(27).Trim();
                     p.Text = text.Replace(" | ", Environment.NewLine).Replace("|", Environment.NewLine);
                     p.Text = DvdStudioPro.DecodeStyles(p.Text);
                     subtitle.Paragraphs.Add(p);
                 }
             }
             else
             {
                 _errorCount++;
             }
         }
     }
 }
        public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
        {
            //00:03:15:22 00:03:23:10 This is line one.
            //This is line two.
            subtitle.Paragraphs.Clear();
            _errorCount = 0;
            foreach (string line in lines)
            {
                if (RegexTimeCodes.IsMatch(line))
                {
                    string temp = line.Substring(0, RegexTimeCodes.Match(line).Length);
                    string start = temp.Substring(0, 11);
                    string end = temp.Substring(12, 11);

                    string[] startParts = start.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                    string[] endParts = end.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                    if (startParts.Length == 4 && endParts.Length == 4)
                    {
                        string text = line.Remove(0, RegexTimeCodes.Match(line).Length - 1).Trim();
                        text = text.Replace("//", Environment.NewLine);
                        var p = new Paragraph(DecodeTimeCode(startParts), DecodeTimeCode(endParts), text);
                        subtitle.Paragraphs.Add(p);
                    }
                }
                else
                {
                    _errorCount += 10;
                }
            }

            subtitle.Renumber();
        }
        /// <summary>
        /// Adds an image to a page using the supplied paragraph.
        /// </summary>
        /// <param name="para">The paragraph to an an image to.</param>
        /// <param name="page">The page number the paragraph appears on.</param>
        public static void AddImageToPage(Paragraph para, int page)
        {
            Document doc = (Document)para.Document;

            DocumentBuilder builder = new DocumentBuilder(doc);
            builder.MoveTo(para);

            // Add a logo to the top left of the page. The image is placed infront of all other text.
            Shape shape = builder.InsertImage(gDataDir + "Aspose Logo.png", RelativeHorizontalPosition.Page, 60,
                RelativeVerticalPosition.Page, 60, -1, -1, WrapType.None);

            // Add a textbox next to the image which contains some text consisting of the page number.
            Shape textBox = new Shape(doc, ShapeType.TextBox);

            // We want a floating shape relative to the page.
            textBox.WrapType = WrapType.None;
            textBox.RelativeHorizontalPosition = RelativeHorizontalPosition.Page;
            textBox.RelativeVerticalPosition = RelativeVerticalPosition.Page;

            // Set the textbox position.
            textBox.Height = 30;
            textBox.Width = 200;
            textBox.Left = 150;
            textBox.Top = 80;

            // Add the textbox and set text.
            textBox.AppendChild(new Paragraph(doc));
            builder.InsertNode(textBox);
            builder.MoveTo(textBox.FirstChild);
            builder.Writeln("This is a custom note for page " + page);
        }
Beispiel #9
0
	/// <summary>
	/// Add a new paragraph.
	/// </summary>

	protected void Add (string text, bool updateVisible)
	{
		Paragraph ce = null;

		if (mParagraphs.Count < maxEntries)
		{
			ce = new Paragraph();
		}
		else
		{
			ce = mParagraphs[0];
			mParagraphs.RemoveAt(0);
		}

		ce.text = text;
		mParagraphs.Add(ce);
		
		if (textLabel != null && textLabel.font != null)
		{
			// Rebuild the line
			Vector3 scale = textLabel.transform.localScale;
			string line;
			textLabel.font.WrapText(ce.text, out line, maxWidth / scale.x, maxHeight / scale.y,
				textLabel.maxLineCount, textLabel.supportEncoding, textLabel.symbolStyle);
			ce.lines = line.Split(mSeparator);

			// Recalculate the total number of lines
			mTotalLines = 0;
			for (int i = 0, imax = mParagraphs.Count; i < imax; ++i) mTotalLines += mParagraphs[i].lines.Length;
		}

		// Update the visible text
		if (updateVisible) UpdateVisibleText();
	}
Beispiel #10
0
        public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
        {
            _errorCount = 0;
            var regexTimeCode = new Regex(@"^E 1 \d:\d\d:\d\d.\d\d \d:\d\d:\d\d.\d\d Default NTP ", RegexOptions.Compiled);
            //E 1 0:50:05.42 0:50:10.06 Default NTP

            subtitle.Paragraphs.Clear();
            foreach (string line in lines)
            {
                if (regexTimeCode.IsMatch(line))
                {
                    try
                    {
                        string timePart = line.Substring(4, 10).Trim();
                        var start = DecodeTimeCode(timePart);
                        timePart = line.Substring(15, 10).Trim();
                        var end = DecodeTimeCode(timePart);
                        var paragraph = new Paragraph();
                        paragraph.StartTime = start;
                        paragraph.EndTime = end;
                        paragraph.Text = line.Substring(38).Replace(" \\n ", Environment.NewLine).Replace("\\n", Environment.NewLine);
                        subtitle.Paragraphs.Add(paragraph);
                    }
                    catch
                    {
                        _errorCount++;
                    }
                }
            }
            subtitle.Renumber();
        }
Beispiel #11
0
 public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
 {
     _errorCount = 0;
     subtitle.Paragraphs.Clear();
     foreach (string line in lines)
     {
         var s = line.Trim();
         if (s.Length > 35 && RegexTimeCodes.IsMatch(s))
         {
             try
             {
                 string timePart = s.Substring(4, 10).TrimEnd();
                 var start = DecodeTimeCode(timePart);
                 timePart = s.Substring(15, 10).Trim();
                 var end = DecodeTimeCode(timePart);
                 var paragraph = new Paragraph { StartTime = start, EndTime = end };
                 paragraph.Text = s.Substring(38).Replace(" \\n ", Environment.NewLine).Replace("\\n", Environment.NewLine);
                 subtitle.Paragraphs.Add(paragraph);
             }
             catch
             {
                 _errorCount++;
             }
         }
     }
     subtitle.Renumber();
 }
Beispiel #12
0
        public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
        {
            //<Time begin="0:03:24.8" end="0:03:29.4" /><clear/>Man stjæler ikke fra Chavo, nej.
            subtitle.Paragraphs.Clear();
            _errorCount = 0;
            foreach (string line in lines)
            {
                try
                {
                    if (line.Contains("<Time ") && line.Contains(" begin=") && line.Contains("end="))
                    {
                        int indexOfBegin = line.IndexOf(" begin=", StringComparison.Ordinal);
                        int indexOfEnd = line.IndexOf(" end=", StringComparison.Ordinal);
                        string begin = line.Substring(indexOfBegin + 7, 11);
                        string end = line.Substring(indexOfEnd + 5, 11);

                        string[] startParts = begin.Split(new[] { ':', '.', '"' }, StringSplitOptions.RemoveEmptyEntries);
                        string[] endParts = end.Split(new[] { ':', '.', '"' }, StringSplitOptions.RemoveEmptyEntries);
                        if (startParts.Length == 4 && endParts.Length == 4)
                        {
                            string text = line.Substring(line.LastIndexOf("/>", StringComparison.Ordinal) + 2);
                            var p = new Paragraph(DecodeTimeCode(startParts), DecodeTimeCode(endParts), text);
                            subtitle.Paragraphs.Add(p);
                        }
                    }
                }
                catch
                {
                    _errorCount++;
                }
            }

            subtitle.Renumber();
        }
 public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
 {
     _errorCount = 0;
     Paragraph p = null;
     subtitle.Paragraphs.Clear();
     foreach (string line in lines)
     {
         if (regexTimeCodes.IsMatch(line))
         {
             p = new Paragraph(DecodeTimeCode(line), new TimeCode(0,0,0,0), string.Empty);
             subtitle.Paragraphs.Add(p);
         }
         else if (line.Trim().Length == 0)
         {
             // skip these lines
         }
         else if (line.Trim().Length > 0 && p != null)
         {
             if (string.IsNullOrEmpty(p.Text))
                 p.Text = line;
             else
                 p.Text = p.Text + Environment.NewLine + line;
         }
     }
     foreach (Paragraph p2 in subtitle.Paragraphs)
     {
         p2.Text = Utilities.AutoBreakLine(p2.Text);
     }
     subtitle.RecalculateDisplayTimes(Configuration.Settings.General.SubtitleMaximumDisplayMilliseconds, null);
     subtitle.Renumber(1);
 }
        public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
        {
            _errorCount = 0;
            bool expectStartTime = true;
            var p = new Paragraph();
            subtitle.Paragraphs.Clear();
            char[] splitChar = { ':' };
            foreach (string line in lines)
            {
                string s = line.Trim().Replace("*", string.Empty);
                var match = RegexTimeCodes.Match(s);
                if (match.Success)
                {
                    string[] parts = s.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    if (parts.Length == 4)
                    {
                        try
                        {
                            if (!string.IsNullOrEmpty(p.Text))
                            {
                                subtitle.Paragraphs.Add(p);
                                p = new Paragraph();
                            }
                            p.StartTime = DecodeTimeCode(parts[1], splitChar);
                            p.EndTime = DecodeTimeCode(parts[2], splitChar);
                            expectStartTime = false;
                        }
                        catch (Exception exception)
                        {
                            _errorCount++;
                            System.Diagnostics.Debug.WriteLine(exception.Message);
                        }
                    }
                }
                else if (string.IsNullOrWhiteSpace(line))
                {
                    if (p.StartTime.TotalMilliseconds == 0 && p.EndTime.TotalMilliseconds == 0)
                        _errorCount++;
                    else
                        subtitle.Paragraphs.Add(p);
                    p = new Paragraph();
                }
                else if (!expectStartTime)
                {
                    p.Text = (p.Text + Environment.NewLine + line).Trim();
                    if (p.Text.Length > 500)
                    {
                        _errorCount += 10;
                        return;
                    }
                    while (p.Text.Contains(Environment.NewLine + " "))
                        p.Text = p.Text.Replace(Environment.NewLine + " ", Environment.NewLine);
                }
            }
            if (!string.IsNullOrEmpty(p.Text))
                subtitle.Paragraphs.Add(p);

            subtitle.RemoveEmptyLines();
            subtitle.Renumber();
        }
Beispiel #15
0
        /// <summary>
        /// Generates a hyperlink and embed it
        /// in a paragraph tag
        /// </summary>
        /// <param name="mainDocPart">The main doc part.</param>
        /// <param name="hyperLink">The hyper link.</param>
        /// <returns></returns>
        public static Paragraph GenerateParagraphWithHyperLink(MainDocumentPart mainDocPart, String hyperLink)
        {
            //this will be display as
            //the text
            String urlLabel = hyperLink;

            //build the hyperlink
            //file:// ensure that document does not corrupt
            System.Uri uri = new Uri(@"file://" + hyperLink);

            //add it to the document
            HyperlinkRelationship rel = mainDocPart.AddHyperlinkRelationship(uri, true);

            //get the hyperlink id
            string relationshipId = rel.Id;

            //create the new paragraph tag
            Paragraph newParagraph = new Paragraph(
                new DocumentFormat.OpenXml.Wordprocessing.Hyperlink(
                    new ProofError() { Type = ProofingErrorValues.GrammarStart },
                    new DocumentFormat.OpenXml.Wordprocessing.Run(
                        new DocumentFormat.OpenXml.Wordprocessing.RunProperties(
                            new RunStyle() { Val = "Hyperlink" }),
                            new DocumentFormat.OpenXml.Wordprocessing.Text(urlLabel)
                            )) { History = OnOffValue.FromBoolean(true), Id = relationshipId });

            return newParagraph;
        }
Beispiel #16
0
        public static Paragraph GenerateStepParagraph(Step step)
        {
            // HACK - We need to generate a custom paragraph here because 2 Run objects are needed to allow for the bolded keyword
            var paragraph = new Paragraph(new ParagraphProperties(new ParagraphStyleId { Val = "Normal" }));

            // Add comments before step
            if (step.Comments.Any(o => o.Type == CommentType.StepComment))
            {
                foreach (var comment in step.Comments.Where(o => o.Type == CommentType.StepComment))
                {
                    paragraph.Append(new Run(new RunProperties(new Italic()), new Text(comment.Text)));
                    paragraph.Append(new Break());
                }
            }

            // Add step
            paragraph.Append(new Run(new RunProperties(new Bold()), new Text(step.NativeKeyword)));
            var nameText = new Text { Space = SpaceProcessingModeValues.Preserve };
            nameText.Text = " " + step.Name;
            paragraph.Append(new Run(nameText));

            // Add comments after step
            if (step.Comments.Any(o => o.Type == CommentType.AfterLastStepComment))
            {
                paragraph.Append(new Break());

                foreach (var comment in step.Comments.Where(o => o.Type == CommentType.AfterLastStepComment))
                {
                    paragraph.Append(new Run(new RunProperties(new Italic()), new Text(comment.Text)));
                    paragraph.Append(new Break());
                }
            }

            return paragraph;
        }
Beispiel #17
0
        public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
        {
            var paragraph = new Paragraph();
            _errorCount = 0;

            subtitle.Paragraphs.Clear();
            foreach (string line in lines)
            {
                if (regexTimeCode.IsMatch(line) && line.Length > 24)
                {
                    string[] parts = line.Substring(0, 11).Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                    if (parts.Length == 4)
                    {
                        try
                        {
                            var start = DecodeTimeCode(parts);
                            parts = line.Substring(12, 11).Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                            var end = DecodeTimeCode(parts);
                            paragraph = new Paragraph();
                            paragraph.StartTime = start;
                            paragraph.EndTime = end;

                            paragraph.Text = line.Substring(24).Trim().Replace("\t", Environment.NewLine);
                            subtitle.Paragraphs.Add(paragraph);
                        }
                        catch
                        {
                            _errorCount++;
                        }
                    }
                }
            }
            subtitle.Renumber(1);
        }
Beispiel #18
0
        public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
        {
            //00:01:54:19,00:01:56:17,We should be thankful|they accepted our offer.
            _errorCount = 0;
            subtitle.Paragraphs.Clear();
            var regexTimeCodes = new Regex(@"^\d\d:\d\d:\d\d:\d\d,\d\d:\d\d:\d\d:\d\d,.+", RegexOptions.Compiled);
            if (fileName != null && fileName.EndsWith(".stl", StringComparison.OrdinalIgnoreCase)) // allow empty text if extension is ".stl"...
                regexTimeCodes = new Regex(@"^\d\d:\d\d:\d\d:\d\d,\d\d:\d\d:\d\d:\d\d,", RegexOptions.Compiled);
            foreach (string line in lines)
            {
                if (line.IndexOf(':') == 2 && regexTimeCodes.IsMatch(line))
                {
                    string start = line.Substring(0, 11);
                    string end = line.Substring(12, 11);

                    try
                    {
                        Paragraph p = new Paragraph(DecodeTimeCode(start), DecodeTimeCode(end), DecodeText(line.Substring(24)));
                        subtitle.Paragraphs.Add(p);
                    }
                    catch
                    {
                        _errorCount++;
                    }
                }
                else if (!string.IsNullOrWhiteSpace(line) && !line.StartsWith("//") && !line.StartsWith('$'))
                {
                    _errorCount++;
                }
            }
            subtitle.Renumber();
        }
 /// <summary>
 /// Generates the paragraph.
 /// </summary>
 /// <returns>
 /// Returns new Paragraph with empty run
 /// </returns>
 public static Paragraph GenerateParagraph()
 {
     var paragraph = new Paragraph();
     var run = new Run();
     paragraph.Append(run);
     return paragraph;
 }
Beispiel #20
0
        private static void DrawParagraph(Graphics grph, Paragraph para)
        {
            foreach (TextLine line in para.Lines)
                DrawTextLine(grph, line);

            para.Draw(grph);
        }
        private void ProcessBody(DocxNode node, ref Paragraph paragraph)
        {
            while (node != null)
            {
                if (node.IsText)
                {
                    if (!IsEmptyText(node.InnerHtml))
                    {
                        if (paragraph == null)
                        {
                            paragraph = body.AppendChild(new Paragraph());
                            OnParagraphCreated(node, paragraph);
                        }

                        Run run = paragraph.AppendChild(new Run(new Text()
                        {
                            Text = ClearHtml(node.InnerHtml),
                            Space = SpaceProcessingModeValues.Preserve
                        }));

                        RunCreated(node, run);
                    }
                }
                else
                {
                    node.ParagraphNode = node;
                    node.Parent = body;
                    ProcessChild(node, ref paragraph);
                }

                node = node.Next;
            }
        }
        public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
        {
            //<a class="caption" starttime="0" duration="16000">[♪techno music♪]</a>

            StringBuilder temp = new StringBuilder();
            foreach (string l in lines)
                temp.Append(l);
            string all = temp.ToString();
            if (!all.Contains("class=\"caption\""))
                return;

            Paragraph paragraph = new Paragraph();
            _errorCount = 0;
            subtitle.Paragraphs.Clear();
            for (int i = 0; i < lines.Count; i++)
            {
                string line = lines[i].Trim();

                int indexOfStart = line.IndexOf("starttime=");
                int indexOfDuration = line.IndexOf("duration=");
                if (line.Contains("class=\"caption\"") && indexOfStart > 0 && indexOfDuration > 0)
                {
                    string startTime = "0";
                    int index = indexOfStart +10;
                    while (index < line.Length && "0123456789\"'.,".Contains(line[index].ToString()))
                    {
                        if ("0123456789,.".Contains(line[index].ToString()))
                            startTime += line[index].ToString();
                        index++;
                    }

                    string duration = "0";
                    index = indexOfDuration + 9;
                    while (index < line.Length && "0123456789\"'.,".Contains(line[index].ToString()))
                    {
                        if ("0123456789,.".Contains(line[index].ToString()))
                            duration += line[index].ToString();
                        index++;
                    }

                    string text = string.Empty;
                    index = line.IndexOf(">", indexOfDuration);
                    if (index > 0 && index+ 1 < line.Length)
                    {
                        text = line.Substring(index + 1).Trim();
                        index = text.IndexOf("</");
                        if (index > 0)
                            text = text.Substring(0, index);
                        text = text.Replace("<br />", Environment.NewLine);
                    }

                    int startMilliseconds;
                    int durationMilliseconds;
                    if (text.Length > 0 && int.TryParse(startTime, out startMilliseconds) && int.TryParse(duration, out durationMilliseconds))
                        subtitle.Paragraphs.Add(new Paragraph(text, startMilliseconds, startMilliseconds + durationMilliseconds));

                }
            }
            subtitle.Renumber(1);
        }
Beispiel #23
0
        public override string ToText(Subtitle subtitle, string title)
        {
            //TIMEIN: 01:00:01:09   DURATION: 01:20 TIMEOUT: --:--:--:--
            //Broadcasting
            //from an undisclosed location...

            //TIMEIN: 01:00:04:12   DURATION: 04:25 TIMEOUT: 01:00:09:07

            const string paragraphWriteFormat = "TIMEIN: {0}\tDURATION: {1}\tTIMEOUT: {2}\r\n{3}\r\n";

            var sb = new StringBuilder();
            foreach (Paragraph p in subtitle.Paragraphs)
            {
                // to avoid rounding errors in duration
                var startFrame = MillisecondsToFramesMaxFrameRate(p.StartTime.Milliseconds);
                var endFrame = MillisecondsToFramesMaxFrameRate(p.EndTime.Milliseconds);
                var durationCalc = new Paragraph(
                        new TimeCode(p.StartTime.Hours, p.StartTime.Minutes, p.StartTime.Seconds, FramesToMillisecondsMax999(startFrame)),
                        new TimeCode(p.EndTime.Hours, p.EndTime.Minutes, p.EndTime.Seconds, FramesToMillisecondsMax999(endFrame)),
                        string.Empty);

                string startTime = string.Format("{0:00}:{1:00}:{2:00}:{3:00}", p.StartTime.Hours, p.StartTime.Minutes, p.StartTime.Seconds, startFrame);
                string timeOut = string.Format("{0:00}:{1:00}:{2:00}:{3:00}", p.EndTime.Hours, p.EndTime.Minutes, p.EndTime.Seconds, endFrame);
                string timeDuration = string.Format("{0:00}:{1:00}", durationCalc.Duration.Seconds, MillisecondsToFramesMaxFrameRate(durationCalc.Duration.Milliseconds));
                sb.AppendLine(string.Format(paragraphWriteFormat, startTime, timeDuration, timeOut, p.Text));
            }
            return sb.ToString().Trim();
        }
 public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
 {
     _errorCount = 0;
     int number = 0;
     foreach (string line in lines)
     {
         if (!string.IsNullOrWhiteSpace(line) && line[0] != '$')
         {
             if (RegexTimeCodes.Match(line).Success)
             {
                 string[] threePart = line.Split(new[] { "\t,\t" }, StringSplitOptions.None);
                 var p = new Paragraph();
                 if (threePart.Length == 3 &&
                     GetTimeCode(p.StartTime, threePart[0]) &&
                     GetTimeCode(p.EndTime, threePart[1]))
                 {
                     number++;
                     p.Number = number;
                     p.Text = threePart[2].TrimEnd().Replace(" | ", Environment.NewLine).Replace("|", Environment.NewLine);
                     p.Text = DecodeStyles(p.Text);
                     subtitle.Paragraphs.Add(p);
                 }
             }
             else
             {
                 _errorCount++;
             }
         }
     }
 }
        public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
        {
            //0001 : 01:07:25:08,01:07:29:00,10
            _errorCount = 0;
            Paragraph p = null;
            subtitle.Paragraphs.Clear();
            foreach (string line in lines)
            {
                if (line.IndexOf(':') == 5 && RegexTimeCodes.IsMatch(line))
                {
                    if (p != null)
                        subtitle.Paragraphs.Add(p);

                    string start = line.Substring(7, 11);
                    string end = line.Substring(19, 11);

                    string[] startParts = start.Split(SplitCharColon);
                    string[] endParts = end.Split(SplitCharColon);
                    if (startParts.Length == 4 && endParts.Length == 4)
                    {
                        p = new Paragraph(DecodeTimeCodeFramesFourParts(startParts), DecodeTimeCodeFramesFourParts(endParts), string.Empty);
                    }
                }
                else if (p != null && RegexText.IsMatch(line))
                {
                    if (string.IsNullOrEmpty(p.Text))
                        p.Text = line.Substring(5).Trim();
                    else
                        p.Text += Environment.NewLine + line.Substring(5).Trim();
                }
                else if (line.Length < 10 && RegexSomeCodes.IsMatch(line))
                {
                }
                else if (string.IsNullOrWhiteSpace(line))
                {
                    // skip these lines
                }
                else if (p != null)
                {
                    if (p.Text != null && Utilities.GetNumberOfLines(p.Text) > 3)
                    {
                        _errorCount++;
                    }
                    else
                    {
                        if (!line.TrimEnd().EndsWith(": --:--:--:--,--:--:--:--,-1", StringComparison.Ordinal))
                        {
                            if (string.IsNullOrEmpty(p.Text))
                                p.Text = line.Trim();
                            else
                                p.Text += Environment.NewLine + line.Trim();
                        }
                    }
                }
            }
            if (p != null && !string.IsNullOrEmpty(p.Text))
                subtitle.Paragraphs.Add(p);

            subtitle.Renumber();
        }
        public override string ToText(Subtitle subtitle, string title)
        {
            var sb = new StringBuilder();
            sb.AppendLine("#\tAppearance\tCaption\t");
            sb.AppendLine();
            int count = 1;
            for (int i = 0; i < subtitle.Paragraphs.Count; i++)
            {
                Paragraph p = subtitle.Paragraphs[i];
                string text = HtmlUtil.RemoveHtmlTags(p.Text);

                // to avoid rounding errors in duration
                var startFrame = MillisecondsToFramesMaxFrameRate(p.StartTime.Milliseconds);
                var endFrame = MillisecondsToFramesMaxFrameRate(p.EndTime.Milliseconds);
                var durationCalc = new Paragraph(
                        new TimeCode(p.StartTime.Hours, p.StartTime.Minutes, p.StartTime.Seconds, FramesToMillisecondsMax999(startFrame)),
                        new TimeCode(p.EndTime.Hours, p.EndTime.Minutes, p.EndTime.Seconds, FramesToMillisecondsMax999(endFrame)),
                        string.Empty);

                sb.AppendLine(string.Format("{0}\t{1}\t{2:00}:{3:00}\t{4}\r\n{5}\r\n", count, MakeTimeCode(p.StartTime), durationCalc.Duration.Seconds, MillisecondsToFramesMaxFrameRate(durationCalc.Duration.Milliseconds), MakeTimeCode(p.EndTime), text));
                count++;
            }

            return sb.ToString();
        }
 public Paragraph NewParagraph()
 {
     Paragraph p = new Paragraph();
     if (this.DefaultParagraphStyle != null)
         p.InsertInProperties(new ParagraphStyleId() { Val = this.DefaultParagraphStyle });
     return p;
 }
Beispiel #28
0
        public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
        {
            //00:01:54:19,00:01:56:17,We should be thankful|they accepted our offer.
            _errorCount = 0;
            subtitle.Paragraphs.Clear();
            foreach (string line in lines)
            {
                if (line.IndexOf(':') == 2 && RegexTimeCodes.IsMatch(line))
                {
                    string start = line.Substring(0, 11);
                    string end = line.Substring(13, 11);

                    try
                    {
                        var startTime = DecodeTimeCodeFramesFourParts(start.Split(SplitCharColon, StringSplitOptions.RemoveEmptyEntries));
                        var endTime = DecodeTimeCodeFramesFourParts(end.Split(SplitCharColon, StringSplitOptions.RemoveEmptyEntries));
                        var p = new Paragraph(startTime, endTime, DecodeText(line.Substring(25).Trim()));
                        subtitle.Paragraphs.Add(p);
                    }
                    catch
                    {
                        _errorCount++;
                    }
                }
                else if (!string.IsNullOrWhiteSpace(line) && !line.StartsWith("//", StringComparison.Ordinal) && !line.StartsWith('$'))
                {
                    _errorCount++;
                }
            }
            subtitle.Renumber();
        }
Beispiel #29
0
 public ParagraphEventArgs(double seconds, Paragraph p, Paragraph b, MouseDownParagraphType mouseDownParagraphType)
 {
     Seconds = seconds;
     Paragraph = p;
     BeforeParagraph = b;
     MouseDownParagraphType = mouseDownParagraphType;
 }
 private static string MakeTimeCode(TimeCode timeCode, Paragraph last)
 {
     double start = 0;
     if (last != null)
         start = last.EndTime.TotalSeconds;
     return string.Format("{0:0.0#}", (timeCode.TotalSeconds - start));
 }
Beispiel #31
0
        private void btnInDanhSachNhanVien_Click(object sender, EventArgs e)
        {
            if (dtgNhanVien.Rows.Count > 0)
            {
                SaveFileDialog sfd = new SaveFileDialog
                {
                    Filter   = "PDF (*.pdf)|*.pdf",
                    FileName = "nhanvien.pdf"
                };
                bool fileError = false;
                if (sfd.ShowDialog() == DialogResult.OK)
                {
                    if (File.Exists(sfd.FileName))
                    {
                        try
                        {
                            File.Delete(sfd.FileName);
                        }
                        catch (IOException)
                        {
                            fileError = true;
                            MessageBox.Show("Đang có chương trình mở file này!!!");
                        }
                    }
                    if (!fileError)
                    {
                        try
                        {
                            PdfPTable pdfTable = new PdfPTable(dtgNhanVien.Columns.Count);
                            pdfTable.DefaultCell.Padding = 3;
                            pdfTable.WidthPercentage     = 100;
                            pdfTable.HorizontalAlignment = Element.ALIGN_LEFT;

                            BaseFont             bf        = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\TIMES.TTF", BaseFont.IDENTITY_H, true);
                            iTextSharp.text.Font fonttitle = new iTextSharp.text.Font(bf, 15);
                            iTextSharp.text.Font font      = new iTextSharp.text.Font(bf, 10);
                            iTextSharp.text.Font fonttext  = new iTextSharp.text.Font(bf, 12);

                            Paragraph header = new Paragraph
                            {
                                Alignment = Element.ALIGN_CENTER
                            };
                            Paragraph text = new Paragraph();

                            Chunk c1 = new Chunk("BÁO CÁO THỐNG KÊ NHÂN VIÊN \n", fonttitle);
                            Chunk c2 = new Chunk(DateTime.Now.ToShortDateString() + "\n\n", font);
                            header.Add(c1);
                            header.Add(c2);

                            foreach (DataGridViewColumn column in dtgNhanVien.Columns)
                            {
                                PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText, fonttext));
                                pdfTable.AddCell(cell);
                            }

                            foreach (DataGridViewRow row in dtgNhanVien.Rows)
                            {
                                foreach (DataGridViewCell cell in row.Cells)
                                {
                                    PdfPCell cell1 = new PdfPCell(new Phrase(cell.Value?.ToString(), fonttext));
                                    pdfTable.AddCell(cell1);
                                }
                            }

                            using (FileStream stream = new FileStream(sfd.FileName, FileMode.Create))
                            {
                                Document pdfDoc = new Document(PageSize.A4, 10f, 20f, 20f, 10f);
                                PdfWriter.GetInstance(pdfDoc, stream);
                                pdfDoc.Open();
                                pdfDoc.Add(header);
                                pdfDoc.Add(pdfTable);
                                pdfDoc.Close();
                                stream.Close();
                            }
                            MessageBox.Show("Xuất dữ liệu thành công!!!");
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("Có lỗi xảy ra!!!");
                        }
                    }
                }
                else
                {
                    MessageBox.Show("Không có bản ghi nào được xuất!!!");
                }
            }
        }
        public void ChildElementsTest()
        {
            Paragraph p        = new Paragraph();
            var       pPr      = p.AppendChild(new ParagraphProperties());
            var       r        = p.AppendChild(new Run());
            var       rPr      = r.AppendChild(new RunProperties());
            var       b        = rPr.Bold = new Bold();
            var       t        = r.AppendChild(new Text("Text"));
            var       unknown1 = p.AppendChild(new OpenXmlUnknownElement("tmp:node", "http://temp"));
            var       unknown2 = unknown1.AppendChild(new OpenXmlUnknownElement("tmp:node2", "http://temp"));
            var       miscNode = p.AppendChild(new OpenXmlMiscNode(System.Xml.XmlNodeType.Comment, "<!-- comment -->"));

            var emptyListSingleton       = EmptyElementList.EmptyElementListSingleton;
            var emptyEnumeratorSingleton = EmptyEnumerator <OpenXmlElement> .EmptyEnumeratorSingleton;

            Assert.NotSame(emptyListSingleton, p.ChildElements);
            Assert.Equal(4, p.ChildElements.Count);

            var enumerator = p.ChildElements.GetEnumerator();

            Assert.NotSame(emptyEnumeratorSingleton, enumerator);
            Assert.True(enumerator.MoveNext());
            Assert.Same(pPr, enumerator.Current);

            Assert.True(enumerator.MoveNext());
            Assert.Same(r, enumerator.Current);
            Assert.True(enumerator.MoveNext());
            Assert.True(enumerator.MoveNext());
            Assert.False(enumerator.MoveNext()); // the end

            // pPr, empty children
            Assert.Same(emptyListSingleton, pPr.ChildElements);
            Assert.Equal(0, pPr.ChildElements.Count);
            enumerator = pPr.ChildElements.GetEnumerator();
            Assert.Same(emptyEnumeratorSingleton, enumerator);
            Assert.False(enumerator.MoveNext());

            // r, two child
            Assert.NotSame(emptyListSingleton, r.ChildElements);
            Assert.Equal(2, r.ChildElements.Count);
            enumerator = r.ChildElements.GetEnumerator();
            Assert.NotSame(emptyEnumeratorSingleton, enumerator);
            Assert.True(enumerator.MoveNext());
            Assert.Same(rPr, enumerator.Current);

            // rPr, one child
            Assert.NotSame(emptyListSingleton, rPr.ChildElements);
            Assert.Equal(1, rPr.ChildElements.Count);
            enumerator = rPr.ChildElements.GetEnumerator();
            Assert.NotSame(emptyEnumeratorSingleton, enumerator);
            Assert.True(enumerator.MoveNext());

            // b, leaf element
            Assert.Same(emptyListSingleton, b.ChildElements);
            Assert.Equal(0, b.ChildElements.Count);
            enumerator = b.ChildElements.GetEnumerator();
            Assert.Same(emptyEnumeratorSingleton, enumerator);
            Assert.False(enumerator.MoveNext());

            // t, leaf text element
            Assert.Same(emptyListSingleton, t.ChildElements);
            Assert.Equal(0, t.ChildElements.Count);
            enumerator = t.ChildElements.GetEnumerator();
            Assert.Same(emptyEnumeratorSingleton, enumerator);
            Assert.False(enumerator.MoveNext());

            // unknown1, one child
            Assert.NotSame(emptyListSingleton, unknown1.ChildElements);
            Assert.Equal(1, unknown1.ChildElements.Count);
            enumerator = unknown1.ChildElements.GetEnumerator();
            Assert.NotSame(emptyEnumeratorSingleton, enumerator);
            Assert.True(enumerator.MoveNext());

            // unknown2, empty children
            Assert.Same(emptyListSingleton, unknown2.ChildElements);
            Assert.Equal(0, unknown2.ChildElements.Count);
            enumerator = unknown2.ChildElements.GetEnumerator();
            Assert.Same(emptyEnumeratorSingleton, enumerator);
            Assert.False(enumerator.MoveNext());

            // miscNode
            Assert.Same(emptyListSingleton, miscNode.ChildElements);
            Assert.Equal(0, miscNode.ChildElements.Count);
            enumerator = miscNode.ChildElements.GetEnumerator();
            Assert.Same(emptyEnumeratorSingleton, enumerator);
            Assert.False(enumerator.MoveNext());
        }
        public void OpenXmlElementTraversingMethodsTest()
        {
            Paragraph para = new Paragraph();
            Run       r1   = para.AppendChild(new Run());
            Bold      b1   = r1.AppendChild(new RunProperties()).AppendChild(new Bold());
            Text      t1   = r1.AppendChild(new Text());

            Run r2 = para.AppendChild(new Run());

            r2.AppendChild(new Text());

            Run r3 = para.AppendChild(new Run());

            Assert.Equal(7, para.Descendants().Count());
            Assert.Equal(3, r1.Descendants().Count());
            Assert.Single(r2.Descendants());
            Assert.Empty(r3.Descendants());

            Assert.Same(r1, para.Descendants().First());
            Assert.Same(b1, para.Descendants().ElementAt(2));
            Assert.Same(t1, para.Descendants().ElementAt(3));
            Assert.Same(r2, para.Descendants().ElementAt(4));
            Assert.Same(r3, para.Descendants().Last());

            // ancestors
            Assert.Empty(para.Ancestors());
            Assert.Empty(para.Ancestors <Body>());
            Assert.Single(r1.Ancestors());
            Assert.Single(r1.Ancestors <Paragraph>());
            Assert.Empty(r1.Ancestors <Body>());
            Assert.Single(r3.Ancestors());
            Assert.Single(r3.Ancestors <Paragraph>());
            Assert.Empty(r3.Ancestors <Body>());
            Assert.Equal(2, t1.Ancestors().Count());
            Assert.Single(t1.Ancestors <Paragraph>());
            Assert.Empty(t1.Ancestors <Body>());
            Assert.Equal(3, b1.Ancestors().Count());
            Assert.Single(b1.Ancestors <Paragraph>());
            Assert.Single(b1.Ancestors <Run>());
            Assert.Single(b1.Ancestors <RunProperties>());
            Assert.Empty(b1.Ancestors <Body>());

            Assert.Same(para, r1.Ancestors().First());
            Assert.Same(para, r1.Ancestors <Paragraph>().First());
            Assert.Same(r1, t1.Ancestors().First());
            Assert.Same(para, t1.Ancestors().Last());
            Assert.Same(r1, t1.Ancestors <Run>().First());
            Assert.Same(para, t1.Ancestors <Paragraph>().First());
            Assert.Same(para, b1.Ancestors().Last());
            Assert.Same(r1, b1.Ancestors().ElementAt(1));

            // IsBefore() / IsAfter()
            Assert.False(para.IsBefore(para));
            Assert.False(para.IsAfter(para));
            Assert.False(r2.IsBefore(r2));
            Assert.False(r2.IsAfter(r2));

            Assert.True(para.IsBefore(r1));
            Assert.False(para.IsAfter(r1));
            Assert.True(para.IsBefore(b1));
            Assert.False(para.IsAfter(b1));
            Assert.False(r1.IsBefore(para));
            Assert.True(r1.IsAfter(para));
            Assert.False(r1.IsBefore(para));
            Assert.True(r1.IsAfter(para));

            Assert.True(r1.IsBefore(r2));
            Assert.False(r1.IsAfter(r2));
            Assert.False(r3.IsBefore(r1));
            Assert.True(r3.IsAfter(r1));
            Assert.False(b1.IsAfter(r2));
            Assert.True(b1.IsBefore(r2));

            Assert.True(r1.IsBefore(b1));
            Assert.False(r1.IsAfter(b1));
            Assert.True(b1.IsAfter(r1));
            Assert.False(b1.IsBefore(r1));

            Paragraph p2   = new Paragraph();
            Run       p2r1 = p2.AppendChild(new Run());

            Assert.False(p2.IsBefore(para));
            Assert.False(p2.IsAfter(para));
            Assert.False(p2r1.IsAfter(para));
            Assert.False(p2r1.IsBefore(para));

            // ElementsBefore / ElementsAfter
            Assert.False(para.ElementsBefore().Any());
            Assert.False(para.ElementsAfter().Any());
            Assert.True(r1.ElementsAfter().Any());
            Assert.False(r1.ElementsBefore().Any());
            Assert.False(r3.ElementsAfter().Any());
            Assert.True(r3.ElementsBefore().Any());
            Assert.True(r2.ElementsAfter().Any());
            Assert.True(r2.ElementsBefore().Any());
            Assert.Same(r1, r3.ElementsBefore().First());
            Assert.Same(r2, r3.ElementsBefore().Last());
            Assert.Same(r2, r1.ElementsAfter().First());
            Assert.Same(r3, r1.ElementsAfter().Last());
            Assert.False(b1.ElementsBefore().Any());
            Assert.False(b1.ElementsAfter().Any());
        }
Beispiel #34
0
        private void BtnIspis_Click(object sender, RoutedEventArgs e)
        {
            using (var doc = new Document(PageSize.A4.Rotate(), 20, 15, 25, 30))
            {
                try
                {
                    var pdwri = PdfWriter.GetInstance(doc
                                                      , new FileStream("Ispis.pdf", FileMode.Create, FileAccess.Write, FileShare.None));
                    var bfTimes = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1250, false);
                    //// var times2 = FontFactory.GetFont(FontFactory.TIMES, 9,new CMYKColor(100, 70, 29,25));
                    var times   = new Font(bfTimes, 9);
                    var desetka = new Font(bfTimes, 10);
                    doc.Open();
                    ////kod za cijeli header
                    var logo = Image.GetInstance("logo.png");
                    logo.ScalePercent(50f);
                    doc.Add(logo);
                    doc.Add(new Paragraph("Petrokemija, d.d tvornica gnojiva", times));
                    doc.Add(new Paragraph("Aleja Vukovar 4", times));
                    doc.Add(new Paragraph("44320 Kutina", times));
                    doc.Add(new Paragraph("Hrvatska", times));
                    doc.Add(new Paragraph(" "));
                    doc.Add(new Paragraph("Ured Uprave", times));
                    doc.Add(new Paragraph("Tel.: +385 44 647 270", times));
                    doc.Add(new Paragraph("Fax: +385 44 680 882", times));
                    doc.Add(new Paragraph("E-mail: ", times));
                    //var bojaFonta = new BaseColor(0,0,255);
                    var anchor = new Anchor("www.petrokemija.hr", times)
                    {
                        Reference = "http://www.petrokemija.hr"
                    };
                    doc.Add(anchor);
                    doc.Add(new Paragraph(" "));
                    var headertablica = new PdfPTable(2)
                    {
                        TotalWidth          = 100f,
                        LockedWidth         = true,
                        HorizontalAlignment = 0
                    };
                    var kutina       = new Paragraph("Kutina, ", times);
                    var celijakutina = new PdfPCell(kutina)
                    {
                        HorizontalAlignment = Element.ALIGN_RIGHT,
                        Border = Rectangle.NO_BORDER
                    };
                    var datum       = new Phrase(DateTime.Now.Date.ToString("d"), times);
                    var celijadatum = new PdfPCell(datum)
                    {
                        HorizontalAlignment = Element.ALIGN_LEFT,
                        Border = Rectangle.NO_BORDER
                    };
                    headertablica.AddCell(celijakutina);
                    headertablica.AddCell(celijadatum);
                    doc.Add(headertablica);
                    doc.Add(
                        new Paragraph("IZNOSI DOPRINOSA ZA BENEFICIRANI STAŽ")
                    {
                        SpacingBefore = 10f, Alignment = 1
                    });
                    var centar = new PdfPTable(DataGridBene.Columns.Count)
                    {
                        SpacingBefore = 10f
                    };

                    foreach (var k in DataGridBene.Columns)
                    {
                        centar.AddCell(new Phrase(k.Header.ToString(), desetka));
                    }
                    centar.HeaderRows = 1;
                    float[] sirina = { 20f, 10f, 10f, 10f, 10f, 10f, 10f, 10f, 10f, 10f };
                    centar.SetWidths(sirina);
                    var izvor = DataGridBene.ItemsSource;
                    if (izvor != null)
                    {
                        foreach (var item in izvor)
                        {
                            if (!(DataGridBene.ItemContainerGenerator.ContainerFromItem(item) is DataGridRow red))
                            {
                                continue;
                            }
                            var presenter = FindVisualChild <DataGridCellsPresenter>(red);
                            for (var i = 0; i < DataGridBene.Columns.Count; ++i)
                            {
                                var cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(i);
                                if (cell.Content is TextBlock txt)
                                {
                                    centar.AddCell(new Phrase(txt.Text, desetka));
                                }
                            }
                        }
                    }

                    centar.HorizontalAlignment = 1;
                    doc.Add(centar);
                    pdwri.PageEvent = new Footer();
                    doc.Close();
                    Process.Start("Ispis.pdf");
                }
                catch (Exception)
                {
                    var metro = (MetroWindow)Application.Current.MainWindow;
                    metro.ShowMessageAsync("Došlo je do pogreške, zatvorite otvoren .pdf dokument!", "Pozor");
                }
            }
        }
Beispiel #35
0
        public ActionResult ChartOfAccounts()
        {
            // ============
            // PDF Settings
            // ============
            MemoryStream workStream = new MemoryStream();
            Rectangle    rectangle  = new Rectangle(PageSize.A3);
            Document     document   = new Document(rectangle, 72, 72, 72, 72);

            document.SetMargins(30f, 30f, 30f, 30f);
            PdfWriter.GetInstance(document, workStream).CloseStream = false;

            document.Open();

            // ===================
            // Fonts Customization
            // ===================
            Font fontArial17Bold = FontFactory.GetFont("Arial", 17, Font.BOLD);
            Font fontArial11     = FontFactory.GetFont("Arial", 11);
            Font fontArial10Bold = FontFactory.GetFont("Arial", 10, Font.BOLD);
            Font fontArial10     = FontFactory.GetFont("Arial", 10);
            Font fontArial11Bold = FontFactory.GetFont("Arial", 11, Font.BOLD);
            Font fontArial12Bold = FontFactory.GetFont("Arial", 12, Font.BOLD);

            Paragraph line = new Paragraph(new Chunk(new iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, BaseColor.BLACK, Element.ALIGN_LEFT, 4.5F)));

            var identityUserId  = User.Identity.GetUserId();
            var currentUser     = from d in db.MstUsers where d.UserId == identityUserId select d;
            var currentBranchId = currentUser.FirstOrDefault().BranchId;

            // ==============
            // Company Detail
            // ==============
            var companyName = (from d in db.MstBranches where d.Id == currentBranchId select d.MstCompany.Company).SingleOrDefault();
            var address     = (from d in db.MstBranches where d.Id == currentBranchId select d.MstCompany.Address).SingleOrDefault();
            var contactNo   = (from d in db.MstBranches where d.Id == currentBranchId select d.MstCompany.ContactNumber).SingleOrDefault();
            var branch      = (from d in db.MstBranches where d.Id == currentBranchId select d.Branch).SingleOrDefault();

            // ===========
            // Header Page
            // ===========
            PdfPTable headerPage = new PdfPTable(2);

            float[] widthsCellsHeaderPage = new float[] { 100f, 75f };
            headerPage.SetWidths(widthsCellsHeaderPage);
            headerPage.WidthPercentage = 100;
            headerPage.AddCell(new PdfPCell(new Phrase(companyName, fontArial17Bold))
            {
                Border = 0
            });
            headerPage.AddCell(new PdfPCell(new Phrase("Chart of Accounts", fontArial17Bold))
            {
                Border = 0, HorizontalAlignment = 2
            });
            headerPage.AddCell(new PdfPCell(new Phrase(address, fontArial11))
            {
                Border = 0, PaddingTop = 5f
            });
            headerPage.AddCell(new PdfPCell(new Phrase(branch, fontArial11))
            {
                Border = 0, PaddingTop = 5f, HorizontalAlignment = 2
            });
            headerPage.AddCell(new PdfPCell(new Phrase(contactNo, fontArial11))
            {
                Border = 0, PaddingTop = 5f
            });
            headerPage.AddCell(new PdfPCell(new Phrase("Date Printed: " + DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToString("hh:mm:ss tt"), fontArial11))
            {
                Border = 0, PaddingTop = 5f, HorizontalAlignment = 2
            });
            document.Add(headerPage);
            document.Add(line);

            // =====
            // Space
            // =====
            PdfPTable spaceTable = new PdfPTable(1);

            float[] widthCellsSpaceTable = new float[] { 100f };
            spaceTable.SetWidths(widthCellsSpaceTable);
            spaceTable.WidthPercentage = 100;
            spaceTable.AddCell(new PdfPCell(new Phrase(" ", fontArial10Bold))
            {
                Border = 0, PaddingTop = 5f
            });
            document.Add(spaceTable);

            // ==================
            // Account Categories
            // ==================
            var accountCategories = from d in db.MstAccountCategories
                                    group d by new
            {
                AccountCategoryCode = d.AccountCategoryCode,
                AccountCategory     = d.AccountCategory
            } into g
                select new
            {
                AccountCategoryCode = g.Key.AccountCategoryCode,
                AccountCategory     = g.Key.AccountCategory
            };

            if (accountCategories.Any())
            {
                foreach (var accountCategory in accountCategories)
                {
                    PdfPTable tableAccountCategory            = new PdfPTable(1);
                    float[]   widthscellsTableAccountCategory = new float[] { 100f };
                    tableAccountCategory.SetWidths(widthscellsTableAccountCategory);
                    tableAccountCategory.WidthPercentage = 100;
                    tableAccountCategory.AddCell(new PdfPCell(new Phrase(accountCategory.AccountCategory, fontArial11))
                    {
                        HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 5f, Border = 0, BackgroundColor = BaseColor.LIGHT_GRAY
                    });
                    document.Add(tableAccountCategory);

                    // ======================
                    // Account Sub Categories
                    // ======================
                    var accountSubCategories = from d in db.MstAccountTypes
                                               where d.MstAccountCategory.AccountCategory.Equals(accountCategory.AccountCategory)
                                               group d by new
                    {
                        SubCategoryDescription = d.SubCategoryDescription
                    } into g
                        select new
                    {
                        SubCategoryDescription = g.Key.SubCategoryDescription
                    };

                    if (accountSubCategories.Any())
                    {
                        foreach (var accountSubCategory in accountSubCategories)
                        {
                            PdfPTable tableSubAccountCategory            = new PdfPTable(1);
                            float[]   widthscellsTableSubAccountCategory = new float[] { 100f };
                            tableSubAccountCategory.SetWidths(widthscellsTableSubAccountCategory);
                            tableSubAccountCategory.WidthPercentage = 100;
                            tableSubAccountCategory.AddCell(new PdfPCell(new Phrase(accountSubCategory.SubCategoryDescription, fontArial11))
                            {
                                HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 5f, PaddingLeft = 20f, Border = 0
                            });
                            document.Add(tableSubAccountCategory);

                            // =============
                            // Account Types
                            // =============
                            var accountTypes = from d in db.MstAccountTypes
                                               where d.SubCategoryDescription.Equals(accountSubCategory.SubCategoryDescription)
                                               group d by new
                            {
                                AccountType = d.AccountType
                            } into g
                                select new
                            {
                                AccountType = g.Key.AccountType
                            };

                            if (accountTypes.Any())
                            {
                                foreach (var accountType in accountTypes)
                                {
                                    PdfPTable tableAccountType            = new PdfPTable(1);
                                    float[]   widthscellsTableAccountType = new float[] { 100f };
                                    tableAccountType.SetWidths(widthscellsTableAccountType);
                                    tableAccountType.WidthPercentage = 100;
                                    tableAccountType.AddCell(new PdfPCell(new Phrase(accountType.AccountType, fontArial11))
                                    {
                                        HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 5f, PaddingLeft = 40f, Border = 0
                                    });
                                    document.Add(tableAccountType);

                                    // ========
                                    // Accounts
                                    // ========
                                    var accounts = from d in db.MstAccounts
                                                   where d.MstAccountType.AccountType.Equals(accountType.AccountType)
                                                   select new
                                    {
                                        AccountCode = d.AccountCode,
                                        Account     = d.Account
                                    };

                                    if (accounts.Any())
                                    {
                                        foreach (var account in accounts)
                                        {
                                            PdfPTable tableAccount            = new PdfPTable(2);
                                            float[]   widthscellsTableAccount = new float[] { 20f, 100f };
                                            tableAccount.SetWidths(widthscellsTableAccount);
                                            tableAccount.WidthPercentage = 100;
                                            tableAccount.AddCell(new PdfPCell(new Phrase(account.AccountCode, fontArial11))
                                            {
                                                HorizontalAlignment = 2, PaddingTop = 3f, PaddingBottom = 5f, PaddingLeft = 60f, Border = 0
                                            });
                                            tableAccount.AddCell(new PdfPCell(new Phrase(account.Account, fontArial11))
                                            {
                                                HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 5f, PaddingLeft = 10f, Border = 0
                                            });
                                            document.Add(tableAccount);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            document.Close();

            byte[] byteInfo = workStream.ToArray();
            workStream.Write(byteInfo, 0, byteInfo.Length);
            workStream.Position = 0;

            return(new FileStreamResult(workStream, "application/pdf"));
        }
        public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName)
        {
            Paragraph     paragraph = null;
            ExpectingLine expecting = ExpectingLine.Number;

            _errorCount = 0;

            subtitle.Paragraphs.Clear();
            foreach (string line in lines)
            {
                if (expecting == ExpectingLine.Number && (RegexTimeCode.IsMatch(line) || RegexTimeCode2.IsMatch(line.Trim())))
                {
                    _errorCount++;
                    if (paragraph != null)
                    {
                        subtitle.Paragraphs.Add(paragraph);
                    }
                    paragraph = new Paragraph();
                    expecting = ExpectingLine.TimeStart;
                }

                if (line.TrimEnd().EndsWith('.') && Utilities.IsInteger(RemoveSpaces(line.Trim().TrimEnd('.').Trim())))
                {
                    if (paragraph != null)
                    {
                        subtitle.Paragraphs.Add(paragraph);
                    }
                    paragraph = new Paragraph();
                    expecting = ExpectingLine.TimeStart;
                }
                else if (paragraph != null && expecting == ExpectingLine.TimeStart && (RegexTimeCode.IsMatch(line) || RegexTimeCode2.IsMatch(line.Trim())))
                {
                    string[] parts = RemoveSpaces(line.Trim()).Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                    if (parts.Length == 4)
                    {
                        try
                        {
                            var tc = DecodeTimeCode(parts);
                            paragraph.StartTime = tc;
                            expecting           = ExpectingLine.TimeEnd;
                        }
                        catch
                        {
                            _errorCount++;
                            expecting = ExpectingLine.Number;
                        }
                    }
                }
                else if (paragraph != null && expecting == ExpectingLine.TimeEnd && (RegexTimeCode.IsMatch(line) || RegexTimeCode2.IsMatch(line.Trim())))
                {
                    string[] parts = RemoveSpaces(line.Trim()).Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
                    if (parts.Length == 4)
                    {
                        try
                        {
                            var tc = DecodeTimeCode(parts);
                            paragraph.EndTime = tc;
                            expecting         = ExpectingLine.Text;
                        }
                        catch
                        {
                            _errorCount++;
                            expecting = ExpectingLine.Number;
                        }
                    }
                }
                else
                {
                    if (line == " " || line.Trim() == @"...........\...........")
                    {
                    }
                    else if (line == "*END*")
                    {
                        _errorCount++;
                        if (paragraph != null)
                        {
                            subtitle.Paragraphs.Add(paragraph);
                        }
                        paragraph = new Paragraph();
                        expecting = ExpectingLine.Number;
                    }
                    else if (paragraph != null && expecting == ExpectingLine.Text)
                    {
                        if (line.Length > 0)
                        {
                            string s = RemoveSpaces(line);
                            paragraph.Text = (paragraph.Text + Environment.NewLine + s).Trim();
                            if (paragraph.Text.Length > 2000)
                            {
                                _errorCount += 100;
                                return;
                            }
                        }
                    }
                    else if (line.Length > 1)
                    {
                        _errorCount++;
                    }
                }
            }
            if (paragraph != null && !string.IsNullOrEmpty(paragraph.Text))
            {
                subtitle.Paragraphs.Add(paragraph);
            }
            subtitle.Renumber();
        }
Beispiel #37
0
        public MemoryStream GeneratePdfTemplate(ExpeditionViewModel viewModel, IServiceProvider serviceProvider, int clientTimeZoneOffset /*, IGarmentDeliveryOrderFacade DOfacad*/)
        {
            Font header_font  = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 18);
            Font normal_font  = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 9);
            Font normal_font1 = FontFactory.GetFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8);
            Font bold_font    = FontFactory.GetFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 20);
            Font bold_font1   = FontFactory.GetFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1250, BaseFont.NOT_EMBEDDED, 8);

            Document document = new Document(PageSize.A4, 40, 40, 40, 40);

            document.AddHeader("Header", viewModel.code);
            MemoryStream stream = new MemoryStream();
            PdfWriter    writer = PdfWriter.GetInstance(document, stream);

            writer.PageEvent = new PDFPages();
            document.Open();


            PdfPCell cellLeftNoBorder = new PdfPCell()
            {
                Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_LEFT
            };
            PdfPCell cellRightNoBorder = new PdfPCell()
            {
                Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_RIGHT
            };

            Chunk        chkHeader = new Chunk(" ");
            Phrase       pheader   = new Phrase(chkHeader);
            HeaderFooter header    = new HeaderFooter(pheader, false);

            header.Border    = Rectangle.NO_BORDER;
            header.Alignment = Element.ALIGN_RIGHT;
            document.Header  = header;

            #region Header

            string    titleString = "BON PENGELUARAN BARANG\n\n";
            Paragraph title       = new Paragraph(titleString, bold_font)
            {
                Alignment = Element.ALIGN_CENTER
            };
            document.Add(title);
            bold_font.SetStyle(Font.NORMAL);

            //string addressString = "PT DAN LIRIS" + "\n" + "JL. Merapi No.23" + "\n" + "Banaran, Grogol, Kab. Sukoharjo" + "\n" + "Jawa Tengah 57552 - INDONESIA" + "\n" + "PO.BOX 166 Solo 57100" + "\n" + "Telp. (0271) 740888, 714400" + "\n" + "Fax. (0271) 735222, 740777";
            //Paragraph address = new Paragraph(addressString, bold_font) { Alignment = Element.ALIGN_LEFT };
            //document.Add(address);
            //bold_font.SetStyle(Font.NORMAL);



            PdfPTable tableInternNoteHeader = new PdfPTable(2);
            tableInternNoteHeader.SetWidths(new float[] { 7.5f, 4.5f });
            PdfPCell cellInternNoteHeaderLeft = new PdfPCell()
            {
                Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_LEFT
            };
            PdfPCell cellInternNoteHeaderRight = new PdfPCell()
            {
                Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_LEFT
            };

            cellInternNoteHeaderLeft.Phrase = new Phrase("PT. MAJOR MINOR KREASI NUSANTARA", bold_font1);
            tableInternNoteHeader.AddCell(cellInternNoteHeaderLeft);

            cellInternNoteHeaderLeft.Phrase = new Phrase("No. Bon" + "       : " + viewModel.code, normal_font);
            tableInternNoteHeader.AddCell(cellInternNoteHeaderLeft);

            cellInternNoteHeaderRight.Phrase = new Phrase("Equity Tower 15th Floor Suite C, SCBD Lot 9, Jl. Jenderal Sudirman Kav 52-53 Jakarta 12190, Indonesia", normal_font);
            tableInternNoteHeader.AddCell(cellInternNoteHeaderRight);

            //cellInternNoteHeaderLeft.Phrase = new Phrase("Password" + "                 : " + viewModel.password, normal_font);
            //tableInternNoteHeader.AddCell(cellInternNoteHeaderLeft);

            //cellInternNoteHeaderRight.Phrase = new Phrase("", normal_font);
            //tableInternNoteHeader.AddCell(cellInternNoteHeaderRight);

            cellInternNoteHeaderLeft.Phrase = new Phrase("Tanggal" + "       : " + viewModel.CreatedUtc.ToString("dd MMMM yyyy", new CultureInfo("id-ID")) + "\n\n\n", normal_font);
            tableInternNoteHeader.AddCell(cellInternNoteHeaderLeft);

            //cellInternNoteHeaderRight.Phrase = new Phrase("Dari" + "                           : " + viewModel.source.name, normal_font);
            //tableInternNoteHeader.AddCell(cellInternNoteHeaderRight);

            //cellInternNoteHeaderLeft.Phrase = new Phrase("", normal_font);
            //tableInternNoteHeader.AddCell(cellInternNoteHeaderLeft);

            string destination = "";
            foreach (var i in viewModel.items)
            {
                destination = i.spkDocsViewModel.destination.name;
            }

            cellInternNoteHeaderRight.Phrase = new Phrase("Tujuan" + "                      : " + destination, normal_font);
            tableInternNoteHeader.AddCell(cellInternNoteHeaderRight);

            cellInternNoteHeaderLeft.Phrase = new Phrase("", normal_font);
            tableInternNoteHeader.AddCell(cellInternNoteHeaderLeft);

            cellInternNoteHeaderRight.Phrase = new Phrase("Ekspedisi" + "                  : " + viewModel.expeditionService.name, normal_font);
            tableInternNoteHeader.AddCell(cellInternNoteHeaderRight);

            cellInternNoteHeaderLeft.Phrase = new Phrase("", normal_font);
            tableInternNoteHeader.AddCell(cellInternNoteHeaderLeft);

            cellInternNoteHeaderRight.Phrase = new Phrase("Total Berat (Kg)" + "        : " + viewModel.weight, normal_font);
            tableInternNoteHeader.AddCell(cellInternNoteHeaderRight);

            cellInternNoteHeaderLeft.Phrase = new Phrase("", normal_font);
            tableInternNoteHeader.AddCell(cellInternNoteHeaderLeft);

            //cellInternNoteHeaderRight.Phrase = new Phrase("Keterangan" + "      : " + "" + "\n\n", normal_font);
            //tableInternNoteHeader.AddCell(cellInternNoteHeaderRight);



            PdfPCell cellInternNoteHeader = new PdfPCell(tableInternNoteHeader); // dont remove
            tableInternNoteHeader.ExtendLastRow = false;
            tableInternNoteHeader.SpacingAfter  = 10f;
            document.Add(tableInternNoteHeader);
            #endregion

            #region Table_Of_Content
            PdfPCell cellCenter = new PdfPCell()
            {
                Border = Rectangle.TOP_BORDER | Rectangle.LEFT_BORDER | Rectangle.BOTTOM_BORDER | Rectangle.RIGHT_BORDER, HorizontalAlignment = Element.ALIGN_CENTER, VerticalAlignment = Element.ALIGN_MIDDLE, Padding = 5
            };
            PdfPCell cellRight = new PdfPCell()
            {
                Border = Rectangle.TOP_BORDER | Rectangle.LEFT_BORDER | Rectangle.BOTTOM_BORDER | Rectangle.RIGHT_BORDER, HorizontalAlignment = Element.ALIGN_RIGHT, VerticalAlignment = Element.ALIGN_MIDDLE, Padding = 5
            };
            PdfPCell cellLeft = new PdfPCell()
            {
                Border = Rectangle.TOP_BORDER | Rectangle.LEFT_BORDER | Rectangle.BOTTOM_BORDER | Rectangle.RIGHT_BORDER, HorizontalAlignment = Element.ALIGN_LEFT, VerticalAlignment = Element.ALIGN_MIDDLE, Padding = 5
            };

            PdfPTable tableContent = new PdfPTable(5);
            tableContent.SetWidths(new float[] { 2f, 4f, 5f, 6.5f, 5.5f });
            cellCenter.Phrase = new Phrase("No", bold_font1);
            tableContent.AddCell(cellCenter);
            cellCenter.Phrase = new Phrase("Packing List", bold_font1);
            tableContent.AddCell(cellCenter);
            cellCenter.Phrase = new Phrase("Password", bold_font1);
            tableContent.AddCell(cellCenter);
            cellCenter.Phrase = new Phrase("Berat (Kg)", bold_font1);
            tableContent.AddCell(cellCenter);
            cellCenter.Phrase = new Phrase("Total Barang", bold_font1);
            tableContent.AddCell(cellCenter);


            //double totalPriceTotal = 0;
            double total = 0;



            List <TableContent> TableContents = new List <TableContent>();
            int index = 1;
            foreach (ExpeditionItemViewModel item in viewModel.items)
            {
                foreach (ExpeditionDetailViewModel detail in item.details)
                {
                    total += detail.sendQuantity;
                }

                TableContents.Add(new TableContent
                {
                    No          = index++,
                    PackingList = item.spkDocsViewModel.packingList,
                    Password    = item.spkDocsViewModel.password,
                    Weight      = item.weight,
                    Total       = total.ToString()
                });
                //totalPriceTotal += item.quantity * item.item.domesticSale;
                //total += item.quantity;
            }

            foreach (TableContent c in TableContents.OrderBy(o => o.No))
            {
                cellCenter.Phrase = new Phrase(c.No.ToString(), normal_font1);
                tableContent.AddCell(cellCenter);

                cellCenter.Phrase = new Phrase(c.PackingList, normal_font1);
                tableContent.AddCell(cellCenter);

                cellCenter.Phrase = new Phrase(c.Password, normal_font1);
                tableContent.AddCell(cellCenter);

                cellCenter.Phrase = new Phrase(c.Weight.ToString(), normal_font1);
                tableContent.AddCell(cellCenter);

                cellCenter.Phrase = new Phrase(c.Total, normal_font1);
                tableContent.AddCell(cellCenter);
            }

            PdfPCell cellContent = new PdfPCell(tableContent); // dont remove
            tableContent.ExtendLastRow = false;
            tableContent.SpacingAfter  = 20f;
            document.Add(tableContent);
            #endregion
            #region Total
            PdfPTable tabletotal = new PdfPTable(2);
            tabletotal.SetWidths(new float[] { 17.5f, 5.5f });
            PdfPCell cellTotalContent = new PdfPCell()
            {
                Border = Rectangle.TOP_BORDER | Rectangle.LEFT_BORDER | Rectangle.BOTTOM_BORDER | Rectangle.RIGHT_BORDER, HorizontalAlignment = Element.ALIGN_CENTER
            };
            cellTotalContent.Phrase = new Phrase("Total", normal_font1);
            tabletotal.AddCell(cellTotalContent);
            //cellTotalContent.Phrase = new Phrase("" + total, normal_font1);
            //tabletotal.AddCell(cellTotalContent);
            cellTotalContent.Phrase = new Phrase("" + String.Format("{0:n}", total), normal_font1);
            tabletotal.AddCell(cellTotalContent);
            PdfPCell cellTotal = new PdfPCell(tabletotal); // dont remove
            tabletotal.ExtendLastRow = false;
            tabletotal.SpacingBefore = 20f;
            tabletotal.SpacingAfter  = 20f;
            document.Add(tabletotal);
            #endregion
            //PdfPTable tableContent2 = new PdfPTable(3);
            //tableContent2.SetWidths(new float[] { 13f, 4.5f, 5.5f });
            //List<TableContent2> tableContents2 = new List<TableContent2>();
            //tableContents2.Add(new TableContent2
            //{
            //    Total = "Total",
            //    QtyTotal = total.ToString(),
            //    PriceTotal = String.Format("{0:n}", totalPriceTotal.ToString())
            //});
            //foreach (TableContent2 c in tableContents2)
            //{
            //    cellLeft.Phrase = new Phrase(c.Total, normal_font1);
            //    tableContent.AddCell(cellLeft);

            //    cellLeft.Phrase = new Phrase(c.QtyTotal, normal_font1);
            //    tableContent.AddCell(cellLeft);

            //    cellLeft.Phrase = new Phrase(c.PriceTotal, normal_font1);
            //    tableContent.AddCell(cellLeft);
            //}
            //PdfPCell cellContent2 = new PdfPCell(tableContent2); // dont remove
            //tableContent.ExtendLastRow = false;
            //tableContent.SpacingAfter = 20f;
            //document.Add(tableContent);

            //#region Footer

            //PdfPTable tableFooter = new PdfPTable(2);
            //tableFooter.SetWidths(new float[] { 1f, 1f });

            //PdfPTable tableFooterLeft = new PdfPTable(2);
            //tableFooterLeft.SetWidths(new float[] { 3f, 5f });

            //PdfPCell cellInternNoteFooterLeft = new PdfPCell() { Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_LEFT };
            //PdfPCell cellInternNoteFooterRight = new PdfPCell() { Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_LEFT };
            ////foreach (var unit in units)
            ////{
            ////    if (unit.Value == 0)
            ////    {

            ////        cellLeftNoBorder.Phrase = new Phrase($"Total {unit.Key}", normal_font);
            ////        tableFooterLeft.AddCell(cellLeftNoBorder);
            ////        cellLeftNoBorder.Phrase = new Phrase($":   -", normal_font);
            ////        tableFooterLeft.AddCell(cellLeftNoBorder);
            ////    }
            ////    else
            ////    {
            ////        cellLeftNoBorder.Phrase = new Phrase($"Total {unit.Key}", normal_font);
            ////        tableFooterLeft.AddCell(cellLeftNoBorder);
            ////        cellLeftNoBorder.Phrase = new Phrase($":   {unit.Value.ToString("n", new CultureInfo("id-ID"))}", normal_font);
            ////        tableFooterLeft.AddCell(cellLeftNoBorder);
            ////    }
            ////}

            //PdfPTable tableFooterRight = new PdfPTable(2);
            //tableFooterRight.SetWidths(new float[] { 5f, 5f });

            ////cellLeftNoBorder.Phrase = new Phrase($"Total Harga Pokok (DPP)", normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////cellLeftNoBorder.Phrase = new Phrase($": " + totalPriceTotal.ToString("N", new CultureInfo("id-ID")), normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////cellLeftNoBorder.Phrase = new Phrase("Mata Uang", normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////cellLeftNoBorder.Phrase = new Phrase($": " + viewModel.currency.Code, normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////cellLeftNoBorder.Phrase = new Phrase("Total Harga Pokok (Rp)", normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////cellLeftNoBorder.Phrase = new Phrase($": " + total.ToString("N", new CultureInfo("id-ID")), normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////cellLeftNoBorder.Phrase = new Phrase("Total Nota Koreksi", normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////if (correctionNote != null)
            ////{
            ////    cellLeftNoBorder.Phrase = new Phrase($": " + totalcorrection.ToString("N", new CultureInfo("id-ID")), normal_font);
            ////    tableFooterRight.AddCell(cellLeftNoBorder);
            ////}
            ////else
            ////{
            ////    cellLeftNoBorder.Phrase = new Phrase($": " + 0, normal_font);
            ////    tableFooterRight.AddCell(cellLeftNoBorder);
            ////}

            ////cellLeftNoBorder.Phrase = new Phrase("Total Nota PPn", normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////cellLeftNoBorder.Phrase = new Phrase($": " + ppn.ToString("N", new CultureInfo("id-ID")), normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////cellLeftNoBorder.Phrase = new Phrase("Total Nota PPh", normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////cellLeftNoBorder.Phrase = new Phrase($": " + pph.ToString("N", new CultureInfo("id-ID")), normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////cellLeftNoBorder.Phrase = new Phrase("Total yang Harus Dibayar", normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            ////cellLeftNoBorder.Phrase = new Phrase($": " + maxtotal.ToString("N", new CultureInfo("id-ID")), normal_font);
            ////tableFooterRight.AddCell(cellLeftNoBorder);

            //PdfPCell cellFooterLeft = new PdfPCell(tableFooterLeft) { Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_CENTER };
            //tableFooter.AddCell(cellFooterLeft);
            //PdfPCell cellFooterRight = new PdfPCell(tableFooterRight) { Border = Rectangle.NO_BORDER, HorizontalAlignment = Element.ALIGN_CENTER };
            //tableFooter.AddCell(cellFooterRight);


            //PdfPCell cellFooter = new PdfPCell(tableFooter); // dont remove
            //tableFooter.ExtendLastRow = false;
            //tableFooter.SpacingAfter = 20f;
            //document.Add(tableFooter);

            //#endregion

            #region TableSignature

            PdfPTable tableSignature = new PdfPTable(3);

            PdfPCell cellSignatureContent = new PdfPCell()
            {
                Border = Rectangle.TOP_BORDER | Rectangle.LEFT_BORDER | Rectangle.BOTTOM_BORDER | Rectangle.RIGHT_BORDER, HorizontalAlignment = Element.ALIGN_CENTER
            };

            cellSignatureContent.Phrase = new Phrase("Penerima/Pembeli\n\n\n\n\n\n\n(________________________________)", bold_font1);
            tableSignature.AddCell(cellSignatureContent);
            cellSignatureContent.Phrase = new Phrase("Bagian Pengiriman\n\n\n\n\n\n\n(________________________________)", bold_font1);
            tableSignature.AddCell(cellSignatureContent);
            cellSignatureContent.Phrase = new Phrase("Yang Membuat\n\n\n\n\n\n\n(________________________________)", bold_font1);
            tableSignature.AddCell(cellSignatureContent);


            PdfPCell cellSignature = new PdfPCell(tableSignature); // dont remove
            tableSignature.ExtendLastRow = false;
            tableSignature.SpacingBefore = 20f;
            tableSignature.SpacingAfter  = 20f;
            document.Add(tableSignature);

            #endregion

            document.Close();
            byte[] byteInfo = stream.ToArray();
            stream.Write(byteInfo, 0, byteInfo.Length);
            stream.Position = 0;

            return(stream);
        }
        private void dgvAttendance_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                ID = dgvAttendance.Rows[e.RowIndex].Cells["ColumnID"].Value.ToString();
            }
            catch (ArgumentOutOfRangeException)
            {
                Console.WriteLine(e);
            }
            if (e.ColumnIndex == dgvAttendance.Columns["ColumnView"].Index)
            {
                FormImgViewer form = new FormImgViewer(ob.getAttendImg(ID));
                form.ShowDialog();
            }

            if (e.ColumnIndex == dgvAttendance.Columns["ColumnDelete"].Index)
            {
                if (MessageBox.Show("Delete selected Job Post?", "Confirm!", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) == DialogResult.OK)
                {
                    if (ob.deleteAttendance(ID))
                    {
                        MessageBox.Show("Successfully Deleted");
                        ClearAttend();
                        FillGrid();
                    }
                    else
                    {
                        MessageBox.Show("Error occured while deleting");
                    }
                }
            }
            if (e.ColumnIndex == dgvAttendance.Columns["ColumnSave"].Index)
            {
                string folderPath = "";
                FolderBrowserDialog directchoosedlg = new FolderBrowserDialog();
                if (directchoosedlg.ShowDialog() == DialogResult.OK)
                {
                    folderPath = directchoosedlg.SelectedPath;
                }
                //If User select the path....
                if (!(folderPath.Equals("")))
                {
                    SNO = dgvAttendance.Rows[e.RowIndex].Cells["dgvSNO"].Value.ToString();
                    CheckvalidSNO(SNO);

                    Document document = new Document();
                    try
                    {
                        PdfWriter.GetInstance(document, new FileStream(folderPath + "/" + SNO + "_" + (++x) + ".pdf", FileMode.Create));
                        document.Open();
                        string    header = @"Attendance";
                        Paragraph p0     = new Paragraph();
                        p0.Font = FontFactory.GetFont(FontFactory.HELVETICA, 20f, BaseColor.BLUE);
                        p0.Add(header);
                        document.Add(p0);

                        string    header1 = @"Issue Date  :" + DateTime.Now.ToString();
                        Paragraph p1      = new Paragraph();
                        p1.Font = FontFactory.GetFont(FontFactory.HELVETICA, 8f, BaseColor.BLUE);
                        p1.Add(header1);
                        document.Add(p1);

                        Paragraph p2 = new Paragraph("SNO        :" + SNO);
                        p2.Font = FontFactory.GetFont(FontFactory.HELVETICA, 15f, BaseColor.BLACK);
                        document.Add(p2);

                        Paragraph p3 = new Paragraph("Name      :" + name);
                        p3.Font = FontFactory.GetFont(FontFactory.HELVETICA, 15f, BaseColor.BLACK);
                        document.Add(p3);

                        Paragraph p4 = new Paragraph("Intake     :" + intake);
                        p4.Font = FontFactory.GetFont(FontFactory.HELVETICA, 15f, BaseColor.BLACK);
                        document.Add(p4);

                        Paragraph p5 = new Paragraph(" ");
                        p5.Font = FontFactory.GetFont(FontFactory.HELVETICA, 15f, BaseColor.BLACK);
                        document.Add(p5);

                        //Read all data of DataGridView
                        for (int j = 4; j < dgvAttendance.Columns.Count; j++)
                        {
                            Paragraph p = new Paragraph(dgvAttendance.Columns[j].HeaderText + "     :" + dgvAttendance.Rows[e.RowIndex].Cells[j].Value);
                            p.Font = FontFactory.GetFont(FontFactory.HELVETICA, 12f, BaseColor.BLACK);
                            document.Add(p);
                        }

                        document.Close();
                        MessageBox.Show("Successfully saved ");
                    }
                    catch (IOException)
                    {
                        MessageBox.Show("Pdf file already exist with " + SNO + " SNO  (Please Delete it or Select another path)");
                    }
                }
            }
        }
        private void ExportDataTableToPdf()
        {
            // creating datatable and adding dumy data
            DataTable dtEmployee = new DataTable();

            dtEmployee.Columns.Add("EmpId", typeof(Int32));
            dtEmployee.Columns.Add("Name", typeof(string));
            dtEmployee.Columns.Add("Gender", typeof(string));
            dtEmployee.Columns.Add("Salary", typeof(Int32));
            dtEmployee.Columns.Add("Country", typeof(string));
            dtEmployee.Rows.Add(1, "Rahul", "Male", 60000, "India");
            dtEmployee.Rows.Add(2, "John", "Male", 50000, "USA");
            dtEmployee.Rows.Add(3, "Mary", "Female", 75000, "UK");
            dtEmployee.Rows.Add(4, "Mathew", "Male", 80000, "Australia");

            // creating document object
            iTextSharp.text.Rectangle rec = new iTextSharp.text.Rectangle(PageSize.A4);
            rec.BackgroundColor = new BaseColor(System.Drawing.Color.Olive);
            Document doc = new Document(rec);

            doc.SetPageSize(iTextSharp.text.PageSize.A4);
            PdfWriter writer = PdfWriter.GetInstance(doc, Response.OutputStream);

            doc.Open();

            //Creating paragraph for header
            BaseFont bfntHead = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);

            iTextSharp.text.Font fntHead    = new iTextSharp.text.Font(bfntHead, 16, 1, iTextSharp.text.BaseColor.ORANGE);
            Paragraph            prgHeading = new Paragraph();

            prgHeading.Alignment = Element.ALIGN_LEFT;
            prgHeading.Add(new Chunk("Employee Details".ToUpper(), fntHead));
            doc.Add(prgHeading);

            //Adding paragraph for report generated by
            Paragraph prgGeneratedBY = new Paragraph();
            BaseFont  btnAuthor      = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);

            iTextSharp.text.Font fntAuthor = new iTextSharp.text.Font(btnAuthor, 8, 2, iTextSharp.text.BaseColor.BLUE);
            prgGeneratedBY.Alignment = Element.ALIGN_RIGHT;
            prgGeneratedBY.Add(new Chunk("Report Generated by : ASPArticles", fntAuthor));
            prgGeneratedBY.Add(new Chunk("\nGenerated Date : " + DateTime.Now.ToShortDateString(), fntAuthor));
            doc.Add(prgGeneratedBY);

            //Adding a line
            Paragraph p = new Paragraph(new Chunk(new iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, iTextSharp.text.BaseColor.BLACK, Element.ALIGN_LEFT, 1)));

            doc.Add(p);

            //Adding line break
            doc.Add(new Chunk("\n", fntHead));

            //Adding  PdfPTable
            PdfPTable table = new PdfPTable(dtEmployee.Columns.Count);

            for (int i = 0; i < dtEmployee.Columns.Count; i++)
            {
                string   cellText = Server.HtmlDecode(dtEmployee.Columns[i].ColumnName);
                PdfPCell cell     = new PdfPCell();
                cell.Phrase          = new Phrase(cellText, new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 10, 1, new BaseColor(System.Drawing.ColorTranslator.FromHtml("#ffffff"))));
                cell.BackgroundColor = new BaseColor(System.Drawing.ColorTranslator.FromHtml("#990000"));
                //cell.Phrase = new Phrase(cellText, new Font(Font.FontFamily.TIMES_ROMAN, 10, 1, new BaseColor(grdStudent.HeaderStyle.ForeColor)));
                //cell.BackgroundColor = new BaseColor(grdStudent.HeaderStyle.BackColor);
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                cell.PaddingBottom       = 5;
                table.AddCell(cell);
            }

            //writing table Data
            for (int i = 0; i < dtEmployee.Rows.Count; i++)
            {
                for (int j = 0; j < dtEmployee.Columns.Count; j++)
                {
                    table.AddCell(dtEmployee.Rows[i][j].ToString());
                }
            }

            doc.Add(table);
            doc.Close();
            writer.Close();
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "attachment;" + "filename=EmployeeDetails.pdf");
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Write(doc);
            Response.End();
            //File(doc, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            //Creating iTextSharp Table from the DataTable data
            PdfPTable pdfTable = new PdfPTable(dgvAttendance.ColumnCount - 3); //avoiding unnessary column

            pdfTable.DefaultCell.Padding     = 3;
            pdfTable.WidthPercentage         = 95;
            pdfTable.HorizontalAlignment     = Element.ALIGN_RIGHT;
            pdfTable.DefaultCell.BorderWidth = 1;

            //Adding Topic on top of pdf
            string    header = @"       Attendance Sheet";
            Paragraph p0     = new Paragraph();

            p0.Font = FontFactory.GetFont(FontFactory.HELVETICA, 25f, BaseColor.BLUE);
            p0.Add(header);

            string    header1 = @"                          Issue Date  :" + DateTime.Now.ToString();
            Paragraph p1      = new Paragraph();

            p1.Font = FontFactory.GetFont(FontFactory.HELVETICA, 8f, BaseColor.BLUE);
            p1.Add(header1);

            Paragraph p5 = new Paragraph(" ");

            p5.Font = FontFactory.GetFont(FontFactory.HELVETICA, 15f, BaseColor.BLACK);

            //Add Header row by avoiding unnessary column
            for (int j = 3; j < dgvAttendance.Columns.Count; j++)
            {
                PdfPCell cell = new PdfPCell(new Phrase(dgvAttendance.Columns[j].HeaderText));
                cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240);
                pdfTable.AddCell(cell);
            }

            //Adding DataRow
            foreach (DataGridViewRow row in dgvAttendance.Rows)
            {
                for (int j = 3; j < dgvAttendance.Columns.Count; j++)
                {
                    pdfTable.AddCell(row.Cells[j].Value.ToString());
                }
            }

            //Exporting to PDF
            string folderPath = "";
            FolderBrowserDialog directchoosedlg = new FolderBrowserDialog();

            if (directchoosedlg.ShowDialog() == DialogResult.OK)
            {
                folderPath = directchoosedlg.SelectedPath;
            }
            ///////////
            if (!(folderPath.Equals("")))
            {
                try
                {                                                                                                             //Add what we created things into document is defined pdfDoc
                    String   date   = DateTime.Now.ToString().Replace(" ", String.Empty).Replace(":", "_").Replace("/", "_"); //Covert to date string as a valid pdf name
                    Document pdfDoc = new Document(PageSize.A2, 10f, 10f, 10f, 0f);
                    PdfWriter.GetInstance(pdfDoc, new FileStream(folderPath + "/" + "PDF_" + date + ".pdf", FileMode.Create));
                    pdfDoc.Open();
                    pdfDoc.Add(p0);
                    pdfDoc.Add(p1);
                    pdfDoc.Add(p5);
                    pdfDoc.Add(pdfTable);
                    pdfDoc.Close();

                    MessageBox.Show("Successfully saved ");
                }
                catch (IOException)
                {
                    MessageBox.Show("Pdf file already exist same name(Please Delete it or Select another path)");
                }
            }
        }
Beispiel #41
0
        public async static System.Threading.Tasks.Task CreateOrderReport(DateTime first, DateTime second)
        {
            Word._Application oWord;
            Word._Document    oDoc;
            try
            {
                API api  = API.GetInstance();
                var list = await api.AsyncGetCatalog <Order>();

                var completedOrders = list.Where(o => o.IsComplete & o.Date >= first & o.Date <= second).ToList();
                if (completedOrders.Count == 0)
                {
                    throw new Exception("В БД нет записей о завершенных заказах за данный период");
                }

                int rows = 0;
                foreach (var order in completedOrders)
                {
                    rows += 2 + order.OrderProducts.Count;
                }

                object oMissing  = System.Reflection.Missing.Value;
                object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */

                // Start Word and create a new document.
                oWord = new Word.Application();
                oDoc  = oWord.Documents.Add(ref oMissing, ref oMissing,
                                            ref oMissing, ref oMissing);

                object     start = 0, end = 0;
                Word.Range rng = oDoc.Range(ref start, ref end);
                rng.SetRange(rng.End, rng.End);

                // Header
                Paragraph header          = oDoc.Content.Paragraphs.Add(ref oMissing);
                var       rngReportHeader = header.Range;
                rngReportHeader.Text      = $"Отчет по завершенным заказам\nза период {first.ToShortDateString()} – {second.ToShortDateString()}";
                rngReportHeader.Font.Size = 14;
                rngReportHeader.Font.Name = "Verdana";
                rngReportHeader.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                rngReportHeader.InsertParagraphAfter();

                // Add the table.
                Paragraph table    = oDoc.Content.Paragraphs.Add(ref oMissing);
                var       rngTable = table.Range;
                rngTable.Tables.Add(rngTable, rows + 1, 4, ref oMissing, ref oMissing);

                // Format the table and apply a style.
                Word.Table tbl = oDoc.Tables[1];
                tbl.Range.Font.Size = 12;
                tbl.Range.ParagraphFormat.Alignment  = WdParagraphAlignment.wdAlignParagraphLeft;
                tbl.Range.ParagraphFormat.SpaceAfter = 0.0f;
                tbl.Borders.Enable = 1;

                tbl.Cell(1, 1).Range.Text = "ИД";
                tbl.Cell(1, 2).Range.Text = "Заказчик";
                tbl.Cell(1, 3).Range.Text = "Дата";
                tbl.Cell(1, 4).Range.Text = "Сумма";
                for (int j = 1; j <= 4; j++)
                {
                    var cell = tbl.Cell(1, j);
                    cell.Range.Font.Bold = 1;
                    cell.Range.Font.Name = "Verdana";
                    cell.Range.Font.Size = 12;
                    cell.Shading.BackgroundPatternColor = WdColor.wdColorGray25;
                    //Center alignment for the Header cells
                    cell.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                    cell.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                }
                int i = 2;
                foreach (var o in completedOrders)
                {
                    tbl.Cell(i, 1).Range.Text = o.Id.ToString();
                    tbl.Cell(i, 2).Range.Text = o.Customer.Name;
                    tbl.Cell(i, 3).Range.Text = o.Date.ToShortDateString();
                    tbl.Cell(i, 4).Range.Text = o.OrderProducts.Sum(op => op.Product.Price * (decimal)op.Quantity).ToString() + " руб.";
                    tbl.Rows[i].Borders[WdBorderType.wdBorderTop].LineWidth = WdLineWidth.wdLineWidth300pt;
                    i++;
                    tbl.Cell(i, 2).Range.Text   = "Товар";
                    tbl.Cell(i, 3).Range.Text   = "Кол-во";
                    tbl.Cell(i, 4).Range.Text   = "Сумма";
                    tbl.Rows[i].Range.Font.Bold = 1;
                    i++;
                    foreach (var op in o.OrderProducts)
                    {
                        tbl.Cell(i, 1).Borders[WdBorderType.wdBorderTop].Visible = false;
                        tbl.Cell(i, 2).Range.Text = op.Product.Name;
                        tbl.Cell(i, 3).Range.Text = op.Quantity.ToString();
                        tbl.Cell(i, 4).Range.Text = (op.Product.Price * (decimal)op.Quantity).ToString() + " руб.";
                        i++;
                    }
                }
                tbl.Columns.First.AutoFit();
                tbl.AutoFitBehavior(WdAutoFitBehavior.wdAutoFitWindow);
                tbl.TopPadding    = 6f;
                tbl.RightPadding  = 6f;
                tbl.LeftPadding   = 6f;
                tbl.BottomPadding = 6f;

                // Footer
                Paragraph footer          = oDoc.Content.Paragraphs.Add(ref oMissing);
                var       rngReportFooter = footer.Range;
                rngReportFooter.Text      = "\nОтчет создан: " + DateTime.Now.ToString();
                rngReportFooter.Font.Size = 10;
                rngReportFooter.Font.Name = "Verdana";
                rngReportFooter.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                rngReportFooter.InsertParagraphAfter();

                oWord.Visible = true;
                return;
            }
            catch
            {
                throw;
            }
            finally
            {
                oDoc  = null;
                oWord = null;
            }
        }
        private void ExportDataTableToPdf(DataTable dt, DateTime setDate, string fileName, string reportName, string logoPath)
        {
            Rectangle rec = new Rectangle(PageSize.A4);

            rec.BackgroundColor = new BaseColor(System.Drawing.Color.Olive);
            Document doc = new Document(rec);

            doc.SetPageSize(PageSize.A4.Rotate());
            PdfWriter writer = PdfWriter.GetInstance(doc, Response.OutputStream);

            doc.Open();

            PdfPTable table = new PdfPTable(2);

            table.TotalWidth      = 700f;
            table.WidthPercentage = 100;
            table.LockedWidth     = true;
            table.SetWidths(new float[] { 1f, 2f });
            ////table.SpacingAfter = 20f;
            ////Company Logo
            var cell2 = ImageCell(logoPath, 75f, Element.ALIGN_LEFT, true);

            table.AddCell(cell2);
            doc.Add(table);
            ////Company Name and Address

            var phrase = new Phrase();

            phrase.Add(new Chunk("Xpress Payments\n".ToUpper(), FontFactory.GetFont("Calibri", 16, Font.BOLD, BaseColor.BLACK)));
            phrase.Add(new Chunk(reportName.ToUpper(), FontFactory.GetFont("Calibri", 14, Font.BOLD, BaseColor.BLACK)));

            cell2 = PhraseCell(phrase, Element.ALIGN_CENTER);
            cell2.VerticalAlignment = Element.ALIGN_MIDDLE;
            table.AddCell(cell2);
            doc.Add(table);
            //Creating paragraph for header

            BaseFont bfntHead = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
            Font     fntHead  = new iTextSharp.text.Font(bfntHead, 16, 1, iTextSharp.text.BaseColor.ORANGE);
            //Paragraph prgHeading = new Paragraph();
            //prgHeading.Alignment = Element.ALIGN_CENTER;
            //prgHeading.Add(new Chunk(logoPath, fntHead));
            //prgHeading.Add(new Chunk("Xpress Payments".ToUpper(), fntHead));
            //doc.Add(prgHeading);

            //Creating sub title
            //iTextSharp.text.Font fntSubTitle = new iTextSharp.text.Font(bfntHead, 12, 1, iTextSharp.text.BaseColor.ORANGE);
            //Paragraph prgSubTitle = new Paragraph();
            //prgSubTitle.Alignment = Element.ALIGN_CENTER;
            //prgSubTitle.Add(new Chunk(reportName.ToUpper(), fntSubTitle));
            //doc.Add(prgSubTitle);

            //Adding paragraph for report generated by
            Paragraph prgGeneratedBY = new Paragraph();
            BaseFont  btnAuthor      = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);

            iTextSharp.text.Font fntAuthor = new iTextSharp.text.Font(btnAuthor, 8, 2, iTextSharp.text.BaseColor.BLUE);
            prgGeneratedBY.Alignment = Element.ALIGN_RIGHT;
            //prgGeneratedBY.Add(new Chunk("Report Generated by : ASPArticles", fntAuthor));
            prgGeneratedBY.Add(new Chunk("\nSettlement Date : " + setDate.ToShortDateString(), fntAuthor));
            doc.Add(prgGeneratedBY);

            //Adding a line
            Paragraph p = new Paragraph(new Chunk(new iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, iTextSharp.text.BaseColor.BLACK, Element.ALIGN_LEFT, 1)));

            doc.Add(p);

            //Adding line break
            doc.Add(new Chunk("\n", fntHead));

            //Adding  PdfPTable
            table = new PdfPTable(dt.Columns.Count);
            table.WidthPercentage = 100.0f;
            // Options: Element.ALIGN_LEFT (or 0), Element.ALIGN_CENTER (1), Element.ALIGN_RIGHT (2).
            table.HorizontalAlignment = Element.ALIGN_LEFT;

            for (int i = 0; i < dt.Columns.Count; i++)
            {
                string   cellText = Server.HtmlDecode(dt.Columns[i].ColumnName);
                PdfPCell cell     = new PdfPCell();
                cell.Phrase          = new Phrase(cellText, new iTextSharp.text.Font(iTextSharp.text.Font.FontFamily.TIMES_ROMAN, 8, 1, new BaseColor(System.Drawing.ColorTranslator.FromHtml("#000000"))));
                cell.BackgroundColor = new BaseColor(System.Drawing.ColorTranslator.FromHtml("#ff9800"));
                //cell.Phrase = new Phrase(cellText, new Font(Font.FontFamily.TIMES_ROMAN, 10, 1, new BaseColor(grdStudent.HeaderStyle.ForeColor)));
                //cell.BackgroundColor = new BaseColor(grdStudent.HeaderStyle.BackColor);
                cell.HorizontalAlignment = Element.ALIGN_LEFT;
                //cell.PaddingBottom = 5;
                table.AddCell(cell);
            }

            //writing table Data
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    string   cellText = "";
                    PdfPCell cell     = new PdfPCell();
                    if (dt.Rows[i][j].GetType() == typeof(decimal))
                    {
                        decimal value;
                        var     suc = decimal.TryParse(dt.Rows[i][j].ToString(), out value);
                        if (suc)
                        {
                            cellText = SmartObj.FormatMoney(value.ToString("F"));
                            cell.HorizontalAlignment = Element.ALIGN_RIGHT;
                        }
                        else
                        {
                            cell.HorizontalAlignment = Element.ALIGN_RIGHT;
                        }
                    }
                    else if (dt.Rows[i][j].GetType() == typeof(DateTime))
                    {
                        DateTime date;
                        var      suc = DateTime.TryParse(dt.Rows[i][j].ToString(), out date);
                        if (suc)
                        {
                            cellText = date.ToString("dd-MM-yyyy");
                            cell.HorizontalAlignment = Element.ALIGN_LEFT;
                        }
                        else
                        {
                            cell.HorizontalAlignment = Element.ALIGN_LEFT;
                        }
                    }
                    else
                    {
                        cellText = dt.Rows[i][j].ToString();
                        cell.HorizontalAlignment = Element.ALIGN_LEFT;
                    }



                    // cell.BackgroundColor = new BaseColor(System.Drawing.ColorTranslator.FromHtml("#ff9800"));
                    //cell.Phrase = new Phrase(cellText, new Font(Font.FontFamily.TIMES_ROMAN, 10, 1, new BaseColor(grdStudent.HeaderStyle.ForeColor)));
                    //cell.BackgroundColor = new BaseColor(grdStudent.HeaderStyle.BackColor);
                    cell.Phrase = new Phrase(cellText, new Font(Font.FontFamily.TIMES_ROMAN, 8, 1, new BaseColor(System.Drawing.ColorTranslator.FromHtml("#000000"))));

                    table.AddCell(cell);
                }
            }

            doc.Add(table);
            doc.Close();

            writer.Close();
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "attachment;" + string.Format("filename={0}.pdf", fileName));
            Response.Cache.SetCacheability(HttpCacheability.NoCache);
            Response.Write(doc);
            Response.End();
            //File(doc, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        }
Beispiel #43
0
        private void WriteParagraph(FileStream fs, Paragraph p, int number, bool isLast)
        {
            WriteTimeCode(fs, p.StartTime);
            WriteTimeCode(fs, p.EndTime);

            if (_codePage == -1)
            {
                GetCodePage(null, 0, 0);
            }

            byte alignment         = 2;    // center
            byte verticalAlignment = 0x0a; // bottom

            if (!p.Text.Contains(Environment.NewLine))
            {
                verticalAlignment = 0x0b;
            }
            string text = p.Text;

            if (text.StartsWith("{\\an1}") || text.StartsWith("{\\an4}") || text.StartsWith("{\\an7}"))
            {
                alignment = 1; // left
            }
            else if (text.StartsWith("{\\an3}") || text.StartsWith("{\\an6}") || text.StartsWith("{\\an9}"))
            {
                alignment = 0; // right
            }
            if (text.StartsWith("{\\an7}") || text.StartsWith("{\\an8}") || text.StartsWith("{\\an9}"))
            {
                verticalAlignment = 0; // top
            }
            else if (text.StartsWith("{\\an4}") || text.StartsWith("{\\an5}") || text.StartsWith("{\\an6}"))
            {
                verticalAlignment = 5; // center
            }
            if (text.Length >= 6 && text[0] == '{' && text[5] == '}')
            {
                text = text.Remove(0, 6);
            }
            text = MakePacItalicsAndRemoveOtherTags(text);

            Encoding encoding = GetEncoding(_codePage);

            byte[] textBuffer;

            if (_codePage == 3)
            {
                textBuffer = GetArabicBytes(Utilities.FixEnglishTextInRightToLeftLanguage(text, "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), alignment);
            }
            else if (_codePage == 4)
            {
                textBuffer = GetHebrewBytes(Utilities.FixEnglishTextInRightToLeftLanguage(text, "0123456789abcdefghijklmnopqrstuvwxyz"), alignment);
            }
            else if (_codePage == 0)
            {
                textBuffer = GetLatinBytes(encoding, text, alignment);
            }
            else if (_codePage == 6)
            {
                textBuffer = GetCyrillicBytes(text, alignment);
            }
            else
            {
                textBuffer = encoding.GetBytes(text);
            }

            // write text length
            var length = (UInt16)(textBuffer.Length + 4);

            fs.Write(BitConverter.GetBytes(length), 0, 2);

            fs.WriteByte(verticalAlignment); // fs.WriteByte(0x0a); // sometimes 0x0b? - this seems to be vertical alignment - 0 to 11
            fs.WriteByte(0xfe);
            fs.WriteByte(alignment);         //2=centered, 1=left aligned, 0=right aligned, 09=Fount2 (large font),
                                             //55=safe area override (too long line), 0A=Fount2 + centered, 06=centered + safe area override
            fs.WriteByte(0x03);

            fs.Write(textBuffer, 0, textBuffer.Length);

            if (!isLast)
            {
                fs.WriteByte(0);
                fs.WriteByte((byte)((number + 1) % 256));
                fs.WriteByte((byte)((number + 1) / 256));
                fs.WriteByte(0x60);
            }
        }
Beispiel #44
0
        public async static System.Threading.Tasks.Task CreateProductReport()
        {
            Word._Application oWord;
            Word._Document    oDoc;
            try
            {
                API            api      = API.GetInstance();
                List <Product> products = await api.AsyncGetCatalog <Product>();

                if (products.Count == 0)
                {
                    throw new Exception("В БД нет записей о товарах");
                }
                var categories = products.GroupBy(p => p.Category?.Name);
                int rows       = 0;
                foreach (var c in categories)
                {
                    rows += 1 + c.Count();
                }

                object oMissing  = System.Reflection.Missing.Value;
                object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */

                //Start Word and create a new document.
                oWord = new Word.Application();
                oDoc  = oWord.Documents.Add(ref oMissing, ref oMissing,
                                            ref oMissing, ref oMissing);

                object     start = 0, end = 0;
                Word.Range rng = oDoc.Range(ref start, ref end);
                rng.SetRange(rng.End, rng.End);

                // Header
                Paragraph header          = oDoc.Content.Paragraphs.Add(ref oMissing);
                var       rngReportHeader = header.Range;
                rngReportHeader.Text      = "Отчет по остаткам";
                rngReportHeader.Font.Size = 15;
                rngReportHeader.Font.Name = "Verdana";
                rngReportHeader.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                rngReportHeader.InsertParagraphAfter();

                // Add the table.
                Paragraph table    = oDoc.Content.Paragraphs.Add(ref oMissing);
                var       rngTable = table.Range;
                rngTable.Tables.Add(rngTable, rows + 1, 6, ref oMissing, ref oMissing);

                // Format the table and apply a style.
                Word.Table tbl = oDoc.Tables[1];
                tbl.Range.Font.Size = 12;
                tbl.Range.ParagraphFormat.Alignment  = WdParagraphAlignment.wdAlignParagraphLeft;
                tbl.Range.ParagraphFormat.SpaceAfter = 0.0f;
                tbl.Borders.Enable = 1;

                tbl.Cell(1, 1).Range.Text = "ИД";
                tbl.Cell(1, 2).Range.Text = "Название";
                tbl.Cell(1, 3).Range.Text = "Ед.";
                tbl.Cell(1, 4).Range.Text = "Цена";
                tbl.Cell(1, 5).Range.Text = "Количество";
                tbl.Cell(1, 6).Range.Text = "Сумма";
                for (int j = 1; j <= 6; j++)
                {
                    var cell = tbl.Cell(1, j);
                    cell.Range.Font.Bold = 1;
                    cell.Range.Font.Name = "Verdana";
                    cell.Range.Font.Size = 12;
                    cell.Shading.BackgroundPatternColor = WdColor.wdColorGray25;
                    //Center alignment for the Header cells
                    cell.VerticalAlignment = WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                    cell.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
                }
                int i = 2;
                foreach (var c in categories)
                {
                    tbl.Cell(i, 1).Range.Text = c.Key;
                    tbl.Rows[i].Cells.Merge();
                    i++;
                    foreach (var p in c)
                    {
                        tbl.Cell(i, 1).Range.Text = p.Id.ToString();
                        tbl.Cell(i, 2).Range.Text = p.Name;
                        tbl.Cell(i, 3).Range.Text = p.Unit?.ToString();
                        tbl.Cell(i, 4).Range.Text = p.Price.ToString() + " руб.";
                        tbl.Cell(i, 5).Range.Text = p.Quantity.ToString();
                        tbl.Cell(i, 6).Range.Text = (p.Price * (decimal)p.Quantity).ToString() + " руб.";
                        i++;
                    }
                }
                tbl.AutoFitBehavior(WdAutoFitBehavior.wdAutoFitContent);
                tbl.TopPadding    = 6f;
                tbl.RightPadding  = 6f;
                tbl.LeftPadding   = 6f;
                tbl.BottomPadding = 6f;
                tbl.Range.InsertParagraphAfter();

                // Footer
                Paragraph footer          = oDoc.Content.Paragraphs.Add(ref oMissing);
                var       rngReportFooter = footer.Range;
                rngReportFooter.Text      = "\nНа дату: " + DateTime.Now.ToString();
                rngReportFooter.Font.Size = 10;
                rngReportFooter.Font.Name = "Verdana";
                rngReportFooter.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphRight;
                rngReportFooter.InsertParagraphAfter();

                oWord.Visible = true;
                return;
            }
            catch
            {
                throw;
            }
            finally
            {
                oDoc  = null;
                oWord = null;
            }
        }
        public ActionResult BIRCASSalesJournal(String StartDate, String EndDate, String CompanyId, String BranchId, String DocumentReference)
        {
            // ==============================
            // PDF Settings and Customization
            // ==============================
            MemoryStream workStream = new MemoryStream();
            Rectangle    rectangle  = new Rectangle(PageSize.A3.Rotate());
            Document     document   = new Document(rectangle, 72, 72, 72, 72);

            document.SetMargins(30f, 30f, 30f, 30f);
            PdfWriter.GetInstance(document, workStream).CloseStream = false;

            // =============
            // Document Open
            // =============
            document.Open();

            // ============
            // Fonts Styles
            // ============
            Font fontArial9       = FontFactory.GetFont("Arial", 9);
            Font fontArial9Bold   = FontFactory.GetFont("Arial", 9, Font.BOLD);
            Font fontArial9Italic = FontFactory.GetFont("Arial", 9, Font.ITALIC);
            Font fontArial17Bold  = FontFactory.GetFont("Arial", 17, Font.BOLD);
            Font fontArial12Bold  = FontFactory.GetFont("Arial", 12, Font.BOLD);
            Font fontArial12      = FontFactory.GetFont("Arial", 12);
            Font fontArial10Bold  = FontFactory.GetFont("Arial", 10, Font.BOLD);
            Font fontArial10      = FontFactory.GetFont("Arial", 10);

            // ====
            // Line
            // ====
            Paragraph line = new Paragraph(new Chunk(new iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, BaseColor.BLACK, Element.ALIGN_LEFT, 4.5F)));

            // ==============
            // Company Detail
            // ==============
            var company = from d in db.MstCompanies where d.Id == Convert.ToInt32(CompanyId) select d;

            var branchName = "All Branches";

            if (Convert.ToInt32(BranchId) != 0)
            {
                var branch = from d in db.MstBranches where d.Id == Convert.ToInt32(BranchId) select d;
                branchName = branch.FirstOrDefault().Branch;
            }

            var identityUserId = User.Identity.GetUserId();
            var currentUser    = from d in db.MstUsers where d.UserId == identityUserId select d;

            // ===========
            // Header Page
            // ===========
            PdfPTable header = new PdfPTable(2);

            header.SetWidths(new float[] { 100f, 75f });
            header.WidthPercentage = 100;
            header.AddCell(new PdfPCell(new Phrase(company.FirstOrDefault().Company, fontArial17Bold))
            {
                Border = 0
            });
            header.AddCell(new PdfPCell(new Phrase("Sales Journal", fontArial17Bold))
            {
                Border = 0, HorizontalAlignment = 2
            });
            header.AddCell(new PdfPCell(new Phrase(company.FirstOrDefault().Address, fontArial10))
            {
                Border = 0, PaddingTop = 5f
            });
            header.AddCell(new PdfPCell(new Phrase(branchName, fontArial10))
            {
                Border = 0, PaddingTop = 5f, HorizontalAlignment = 2
            });
            header.AddCell(new PdfPCell(new Phrase(company.FirstOrDefault().ContactNumber, fontArial10))
            {
                Border = 0, PaddingTop = 5f
            });
            header.AddCell(new PdfPCell(new Phrase("Date Printed: " + DateTime.Now.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture) + " " + DateTime.Now.ToString("hh:mm:ss tt"), fontArial10))
            {
                Border = 0, PaddingTop = 5f, HorizontalAlignment = 2
            });
            header.AddCell(new PdfPCell(new Phrase("TIN: " + company.FirstOrDefault().TaxNumber, fontArial10))
            {
                Border = 0, PaddingTop = 5f
            });
            header.AddCell(new PdfPCell(new Phrase(Settings.SoftwareVersion + " (" + currentUser.FirstOrDefault().UserName + ")", fontArial10))
            {
                Border = 0, PaddingTop = 5f, HorizontalAlignment = 2
            });
            document.Add(header);
            document.Add(line);

            // ==================
            // Date Range Filters
            // ==================
            PdfPTable dateRangeFilters = new PdfPTable(1);

            dateRangeFilters.SetWidths(new float[] { 100f });
            dateRangeFilters.WidthPercentage = 100;
            dateRangeFilters.AddCell(new PdfPCell(new Phrase("Document Reference:  " + DocumentReference, fontArial10))
            {
                Border = 0, HorizontalAlignment = 0, PaddingTop = 8f
            });
            dateRangeFilters.AddCell(new PdfPCell(new Phrase("Date Start:  " + Convert.ToDateTime(StartDate).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture), fontArial10))
            {
                Border = 0, HorizontalAlignment = 0, PaddingTop = 5f
            });
            dateRangeFilters.AddCell(new PdfPCell(new Phrase("Date End:   " + Convert.ToDateTime(EndDate).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture), fontArial10))
            {
                Border = 0, HorizontalAlignment = 0, PaddingTop = 5f
            });
            document.Add(dateRangeFilters);

            // =====
            // Space
            // =====
            PdfPTable space = new PdfPTable(1);

            space.SetWidths(new float[] { 100f });
            space.WidthPercentage = 100;
            space.AddCell(new PdfPCell(new Phrase(" ", fontArial10))
            {
                Border = 0, PaddingTop = 7f
            });
            document.Add(space);

            String documentReferenceString = DocumentReference;

            if (DocumentReference.Equals("ALL"))
            {
                documentReferenceString = "";
            }

            // ====
            // Data
            // ====
            IQueryable <Data.TrnSalesInvoiceItem> salesInvoiceItems;

            if (Convert.ToInt32(BranchId) != 0)
            {
                salesInvoiceItems = from d in db.TrnSalesInvoiceItems.OrderBy(d => d.TrnSalesInvoice.SINumber)
                                    where d.TrnSalesInvoice.MstBranch.CompanyId == Convert.ToInt32(CompanyId) &&
                                    d.TrnSalesInvoice.BranchId == Convert.ToInt32(BranchId) &&
                                    d.TrnSalesInvoice.SIDate >= Convert.ToDateTime(StartDate) &&
                                    d.TrnSalesInvoice.SIDate <= Convert.ToDateTime(EndDate) &&
                                    (d.TrnSalesInvoice.DocumentReference.Contains(documentReferenceString) || d.TrnSalesInvoice.ManualSINumber.Contains(documentReferenceString))
                                    select d;
            }
            else
            {
                salesInvoiceItems = from d in db.TrnSalesInvoiceItems.OrderBy(d => d.TrnSalesInvoice.SINumber)
                                    where d.TrnSalesInvoice.MstBranch.CompanyId == Convert.ToInt32(CompanyId) &&
                                    d.TrnSalesInvoice.SIDate >= Convert.ToDateTime(StartDate) &&
                                    d.TrnSalesInvoice.SIDate <= Convert.ToDateTime(EndDate) &&
                                    (d.TrnSalesInvoice.DocumentReference.Contains(documentReferenceString) || d.TrnSalesInvoice.ManualSINumber.Contains(documentReferenceString))
                                    select d;
            }

            if (salesInvoiceItems.Any())
            {
                var groupedBranches = from d in salesInvoiceItems
                                      group d by new
                {
                    d.TrnSalesInvoice.BranchId,
                    d.TrnSalesInvoice.MstBranch.Branch
                } into g
                select g;

                if (groupedBranches.Any())
                {
                    Decimal overAllTotalGrossAmount          = 0;
                    Decimal overAllTotalVATableSalesAmount   = 0;
                    Decimal overAllTotalVATExemptSalesAmount = 0;
                    Decimal overAllTotalZeroRatedSalesAmount = 0;
                    Decimal overAllTotalVATAmount            = 0;
                    Decimal overAllTotalDiscountAmount       = 0;
                    Decimal overAllTotalNetSales             = 0;

                    foreach (var groupedBranch in groupedBranches)
                    {
                        PdfPTable branchTitle = new PdfPTable(1);
                        branchTitle.SetWidths(new float[] { 100f });
                        branchTitle.WidthPercentage = 100;
                        branchTitle.AddCell(new PdfPCell(new Phrase(groupedBranch.Key.Branch, fontArial12Bold))
                        {
                            Border = 0, HorizontalAlignment = 0, PaddingBottom = 5f
                        });
                        document.Add(branchTitle);

                        PdfPTable data = new PdfPTable(15);
                        data.SetWidths(new float[] { 40f, 65f, 60f, 50f, 50f, 55f, 55f, 55f, 50f, 50f, 50f, 50f, 50f, 50f, 50f });
                        data.WidthPercentage = 100;
                        data.AddCell(new PdfPCell(new Phrase("Date", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });
                        data.AddCell(new PdfPCell(new Phrase("Tx No.", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });
                        data.AddCell(new PdfPCell(new Phrase("Customer", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });
                        data.AddCell(new PdfPCell(new Phrase("TIN", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });
                        data.AddCell(new PdfPCell(new Phrase("Address", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });
                        data.AddCell(new PdfPCell(new Phrase("Doc. Ref. No.", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });
                        data.AddCell(new PdfPCell(new Phrase("SI Ref. No.", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });
                        data.AddCell(new PdfPCell(new Phrase("Item Code", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });

                        data.AddCell(new PdfPCell(new Phrase("Gross Amount", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });

                        data.AddCell(new PdfPCell(new Phrase("VATable Sales", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });
                        data.AddCell(new PdfPCell(new Phrase("VAT Exempt Sales", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });
                        data.AddCell(new PdfPCell(new Phrase("Zero Rated Sales", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });

                        data.AddCell(new PdfPCell(new Phrase("VAT Amount", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });
                        data.AddCell(new PdfPCell(new Phrase("Discount", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });

                        data.AddCell(new PdfPCell(new Phrase("Net Sales", fontArial10Bold))
                        {
                            HorizontalAlignment = 1, PaddingTop = 4f, PaddingBottom = 8f, PaddingLeft = 5f, PaddingRight = 5f
                        });

                        var salesInvoiceItemPerBranch = from d in salesInvoiceItems
                                                        where d.TrnSalesInvoice.BranchId == groupedBranch.Key.BranchId
                                                        select d;

                        if (salesInvoiceItemPerBranch.Any())
                        {
                            Decimal totalGrossAmount = 0;

                            Decimal totalVATableSalesAmount   = 0;
                            Decimal totalVATExemptSalesAmount = 0;
                            Decimal totalZeroRatedSalesAmount = 0;
                            Decimal totalVATAmount            = 0;

                            Decimal totalDiscountAmount = 0;
                            Decimal totalNetSales       = 0;

                            foreach (var salesInvoiceItem in salesInvoiceItemPerBranch)
                            {
                                totalGrossAmount += salesInvoiceItem.Amount + salesInvoiceItem.DiscountAmount + salesInvoiceItem.VATAmount;

                                totalVATableSalesAmount   += ComputeVATableSales(salesInvoiceItem.MstTaxType.TaxType, salesInvoiceItem.Amount);
                                totalVATExemptSalesAmount += ComputeVATExemptSales(salesInvoiceItem.MstTaxType.TaxType, salesInvoiceItem.MstTaxType.TaxRate, salesInvoiceItem.MstDiscount.Discount, salesInvoiceItem.Price, salesInvoiceItem.Quantity, salesInvoiceItem.Amount);
                                totalZeroRatedSalesAmount += ComputeZeroRatedSales(salesInvoiceItem.MstTaxType.TaxType, salesInvoiceItem.Amount);
                                totalVATAmount            += salesInvoiceItem.VATAmount;

                                totalDiscountAmount += salesInvoiceItem.DiscountAmount;
                                totalNetSales       += salesInvoiceItem.Amount;

                                data.AddCell(new PdfPCell(new Phrase(salesInvoiceItem.TrnSalesInvoice.SIDate.ToShortDateString(), fontArial10))
                                {
                                    HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                                data.AddCell(new PdfPCell(new Phrase("SI-" + salesInvoiceItem.TrnSalesInvoice.MstBranch.BranchCode + "-" + salesInvoiceItem.TrnSalesInvoice.SINumber, fontArial10))
                                {
                                    HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                                data.AddCell(new PdfPCell(new Phrase(salesInvoiceItem.TrnSalesInvoice.MstArticle.Article, fontArial10))
                                {
                                    HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                                data.AddCell(new PdfPCell(new Phrase(salesInvoiceItem.TrnSalesInvoice.MstArticle.TaxNumber, fontArial10))
                                {
                                    HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                                data.AddCell(new PdfPCell(new Phrase(salesInvoiceItem.TrnSalesInvoice.MstArticle.Address, fontArial10))
                                {
                                    HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                                data.AddCell(new PdfPCell(new Phrase(salesInvoiceItem.TrnSalesInvoice.DocumentReference, fontArial10))
                                {
                                    HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                                data.AddCell(new PdfPCell(new Phrase(salesInvoiceItem.TrnSalesInvoice.ManualSINumber, fontArial10))
                                {
                                    HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                                data.AddCell(new PdfPCell(new Phrase(salesInvoiceItem.MstArticle.ManualArticleCode, fontArial10))
                                {
                                    HorizontalAlignment = 0, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });

                                data.AddCell(new PdfPCell(new Phrase((salesInvoiceItem.Amount + salesInvoiceItem.DiscountAmount + salesInvoiceItem.VATAmount).ToString("#,##0.00"), fontArial10))
                                {
                                    HorizontalAlignment = 2, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });

                                data.AddCell(new PdfPCell(new Phrase(ComputeVATableSales(salesInvoiceItem.MstTaxType.TaxType, salesInvoiceItem.Amount).ToString("#,##0.00"), fontArial10))
                                {
                                    HorizontalAlignment = 2, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                                data.AddCell(new PdfPCell(new Phrase(ComputeVATExemptSales(salesInvoiceItem.MstTaxType.TaxType, salesInvoiceItem.MstTaxType.TaxRate, salesInvoiceItem.MstDiscount.Discount, salesInvoiceItem.Price, salesInvoiceItem.Quantity, salesInvoiceItem.Amount).ToString("#,##0.00"), fontArial10))
                                {
                                    HorizontalAlignment = 2, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                                data.AddCell(new PdfPCell(new Phrase(ComputeZeroRatedSales(salesInvoiceItem.MstTaxType.TaxType, salesInvoiceItem.Amount).ToString("#,##0.00"), fontArial10))
                                {
                                    HorizontalAlignment = 2, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                                data.AddCell(new PdfPCell(new Phrase(salesInvoiceItem.VATAmount.ToString("#,##0.00"), fontArial10))
                                {
                                    HorizontalAlignment = 2, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });

                                data.AddCell(new PdfPCell(new Phrase(salesInvoiceItem.DiscountAmount.ToString("#,##0.00"), fontArial10))
                                {
                                    HorizontalAlignment = 2, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                                data.AddCell(new PdfPCell(new Phrase(salesInvoiceItem.Amount.ToString("#,##0.00"), fontArial10))
                                {
                                    HorizontalAlignment = 2, PaddingTop = 3f, PaddingBottom = 6f, PaddingLeft = 5f, PaddingRight = 5f
                                });
                            }

                            data.AddCell(new PdfPCell(new Phrase("TOTAL", fontArial10Bold))
                            {
                                Colspan = 8, HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                            });

                            data.AddCell(new PdfPCell(new Phrase(totalGrossAmount.ToString("#,##0.00"), fontArial10Bold))
                            {
                                HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                            });

                            data.AddCell(new PdfPCell(new Phrase(totalVATableSalesAmount.ToString("#,##0.00"), fontArial10Bold))
                            {
                                HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                            });
                            data.AddCell(new PdfPCell(new Phrase(totalVATExemptSalesAmount.ToString("#,##0.00"), fontArial10Bold))
                            {
                                HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                            });
                            data.AddCell(new PdfPCell(new Phrase(totalZeroRatedSalesAmount.ToString("#,##0.00"), fontArial10Bold))
                            {
                                HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                            });
                            data.AddCell(new PdfPCell(new Phrase(totalVATAmount.ToString("#,##0.00"), fontArial10Bold))
                            {
                                HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                            });

                            data.AddCell(new PdfPCell(new Phrase(totalDiscountAmount.ToString("#,##0.00"), fontArial10Bold))
                            {
                                HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                            });
                            data.AddCell(new PdfPCell(new Phrase(totalNetSales.ToString("#,##0.00"), fontArial10Bold))
                            {
                                HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                            });

                            document.Add(data);

                            overAllTotalGrossAmount += totalGrossAmount;

                            overAllTotalVATableSalesAmount   += totalVATableSalesAmount;
                            overAllTotalVATExemptSalesAmount += totalVATExemptSalesAmount;
                            overAllTotalZeroRatedSalesAmount += totalZeroRatedSalesAmount;
                            overAllTotalVATAmount            += totalVATAmount;

                            overAllTotalDiscountAmount += totalDiscountAmount;
                            overAllTotalNetSales       += totalNetSales;
                        }

                        document.Add(space);
                    }

                    PdfPTable overallTotalData = new PdfPTable(15);
                    overallTotalData.SetWidths(new float[] { 40f, 65f, 60f, 50f, 50f, 55f, 55f, 55f, 50f, 50f, 50f, 50f, 50f, 50f, 50f });
                    overallTotalData.WidthPercentage = 100;
                    overallTotalData.AddCell(new PdfPCell(new Phrase("OVERALL TOTAL", fontArial10Bold))
                    {
                        Colspan = 8, HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                    });
                    overallTotalData.AddCell(new PdfPCell(new Phrase(overAllTotalGrossAmount.ToString("#,##0.00"), fontArial10Bold))
                    {
                        HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                    });
                    overallTotalData.AddCell(new PdfPCell(new Phrase(overAllTotalVATableSalesAmount.ToString("#,##0.00"), fontArial10Bold))
                    {
                        HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                    });
                    overallTotalData.AddCell(new PdfPCell(new Phrase(overAllTotalVATExemptSalesAmount.ToString("#,##0.00"), fontArial10Bold))
                    {
                        HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                    });
                    overallTotalData.AddCell(new PdfPCell(new Phrase(overAllTotalZeroRatedSalesAmount.ToString("#,##0.00"), fontArial10Bold))
                    {
                        HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                    });
                    overallTotalData.AddCell(new PdfPCell(new Phrase(overAllTotalVATAmount.ToString("#,##0.00"), fontArial10Bold))
                    {
                        HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                    });
                    overallTotalData.AddCell(new PdfPCell(new Phrase(overAllTotalDiscountAmount.ToString("#,##0.00"), fontArial10Bold))
                    {
                        HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                    });
                    overallTotalData.AddCell(new PdfPCell(new Phrase(overAllTotalNetSales.ToString("#,##0.00"), fontArial10Bold))
                    {
                        HorizontalAlignment = 2, PaddingTop = 4f, PaddingBottom = 8f, PaddingRight = 5f, PaddingLeft = 5f
                    });

                    document.Add(overallTotalData);
                }
            }

            // ======
            // Footer
            // ======
            PdfPTable tblFooter = new PdfPTable(1);

            tblFooter.SetWidths(new float[] { 100f });
            tblFooter.WidthPercentage = 100;
            tblFooter.AddCell(new PdfPCell(new Phrase("Software Provider Name: Cebu Innosoft Solutions VAT REG TIN:261-481-387-000 Address: Y & S Bldg. V Rama Guadalupe Cebu \nPTU No.: XXX-XXX-XXXX Date Issued: XX/XX/XXXX Valid Until: XX/XX/XXXX", fontArial9Italic))
            {
                Border = 0, PaddingTop = 10f, HorizontalAlignment = 1
            });

            document.Add(tblFooter);

            // ==============
            // Document Close
            // ==============
            document.Close();

            // ================
            // Byte File Stream
            // ================
            byte[] byteInfo = workStream.ToArray();
            workStream.Write(byteInfo, 0, byteInfo.Length);
            workStream.Position = 0;

            return(new FileStreamResult(workStream, "application/pdf"));
        }
        public static LuceneDocument ToLucene(this Sentence sourceSentence, MarcellDocument parentDocument, Section parentSection, Paragraph parentParagraph)
        {
            LuceneDocument result = new LuceneDocument();

            //Add basic document data
            result.AddStringField("Id", sourceSentence.Id ?? sourceSentence.InternalId.ToString("N"), Field.Store.YES);
            result.AddStringField("InternalId", sourceSentence.InternalId.ToString("N"), Field.Store.YES);
            result.AddStringList("DocumentToken", sourceSentence.DocumentSimilarityData.ConsolidatedTokens);
            result.AddStringList("DocumentTopic", sourceSentence.DocumentSimilarityData.ConsolidatedTopics);
            result.AddStringList("SectionToken", sourceSentence.SectionSimilarityData.ConsolidatedTokens);
            result.AddStringList("SectionTopic", sourceSentence.SectionSimilarityData.ConsolidatedTopics);
            result.AddStringList("ParagraphToken", sourceSentence.ParagraphSimilarityData.ConsolidatedTokens);
            result.AddStringList("ParagraphTopic", sourceSentence.ParagraphSimilarityData.ConsolidatedTopics);
            result.AddStringList("SentenceToken", sourceSentence.SentenceSimilarityData.ConsolidatedTokens);
            result.AddStringList("SentenceTopic", sourceSentence.SentenceSimilarityData.ConsolidatedTopics);
            result.AddInt32Field("TokenCount", sourceSentence.TokenCount, Field.Store.YES);
            result.AddStringField("Language", sourceSentence.Language, Field.Store.YES);
            result.AddScoredDoubleField("RecognitionQuality", sourceSentence.RecognitionQuality);
            result.AddInt32Field("Order", sourceSentence.Order, Field.Store.YES);

            string sentencehText = sourceSentence.Text ?? "";

            result.AddTextField("Text", sentencehText, Field.Store.YES);

            //Add reference to parent document
            if (parentDocument != null)
            {
                result.AddStringField("ParentDocumentId", parentDocument.InternalId.ToString("N"), Field.Store.YES);
            }
            //Add reference to parent section
            if (parentSection != null)
            {
                result.AddStringField("ParentSectionId", parentSection.InternalId.ToString("N"), Field.Store.YES);
            }
            //Add reference to parent section
            if (parentParagraph != null)
            {
                result.AddStringField("ParentParagraphId", parentParagraph.InternalId.ToString("N"), Field.Store.YES);
            }

            result.AddStringList("ContainedTokenEV", sourceSentence.Tokens.SelectMany(t => t.EuroVocEntities), Field.Store.NO);
            result.AddStringList("ContainedTokenIATE", sourceSentence.Tokens.SelectMany(t => t.IateEntities), Field.Store.NO);

            return(result);
        }
Beispiel #47
0
        public void IzdajRacun(racun odabraniRacun, float zaPlatiti, string popisStavki, string imeZaposlenika)
        {
            string         Naziv           = "";
            decimal        Iznos           = 0;
            List <decimal> listaZaUmanjiti = new List <decimal>();
            List <string>  listaNaziva     = new List <string>();

            using (var db = new Entities17045_DB())
            {
                var A = db.racun_jelo.Where(x => x.id_racun == odabraniRacun.id).ToList();
                foreach (var item in A)
                {
                    var C = item.jelo.sastojaks.Where(x => x.jelo.naziv == item.jelo.naziv).ToList();
                    foreach (var ite in C)
                    {
                        listaNaziva.Add(ite.naziv.ToString());
                        listaZaUmanjiti.Add((decimal)item.kolicina * (decimal)ite.kolicina);
                    }
                }
                for (int i = 0; i < listaNaziva.Count(); i++)
                {
                    Naziv = listaNaziva[i];
                    var B = db.zalihes.FirstOrDefault(x => x.naziv == Naziv);
                    if (B != null)
                    {
                        Iznos = listaZaUmanjiti[i];
                        zalihe odabranaZaliha = B;
                        db.zalihes.Attach(odabranaZaliha);
                        odabranaZaliha.kolicina = (decimal)odabranaZaliha.kolicina - Iznos;
                        odabranaZaliha.datum    = DateTime.Now.ToShortDateString();
                        if (odabranaZaliha.kolicina >= 0)
                        {
                            db.SaveChanges();
                        }
                        else
                        {
                            MessageBox.Show("Nema dovoljno potrebnih sastojaka na zalihi!");
                            return;
                        }
                    }
                }
            }
            listaNaziva.Clear();
            listaZaUmanjiti.Clear();

            using (var db = new Entities17045_DB())
            {
                db.racuns.Attach(odabraniRacun);
                odabraniRacun.iznos = zaPlatiti;
                db.SaveChanges();
            }

            //Kreiranje računa u PDF-u
            string    nazivDatoteke = "Racun" + odabraniRacun.id.ToString() + ".pdf";
            Document  racunPDF      = new Document(iTextSharp.text.PageSize.LETTER, 20, 15, 42, 35);
            PdfWriter writer        = PdfWriter.GetInstance(racunPDF, new FileStream(nazivDatoteke, FileMode.Create));

            racunPDF.Open();
            Paragraph header = new Paragraph("\n\nŠifra racuna: " + odabraniRacun.id.ToString() + "     ||     Vrijeme: " + odabraniRacun.datum_vrijeme.ToString()
                                             + "     ||     Zaposlenik: " + imeZaposlenika + "\n\n\n");

            header.Alignment = Element.ALIGN_CENTER;
            Paragraph stavke = new Paragraph(popisStavki + "\n\n");

            stavke.IndentationLeft = 30;
            Paragraph footer = new Paragraph("Iznos za platiti: " + odabraniRacun.iznos.ToString() + " kn");

            footer.IndentationLeft = 30;
            racunPDF.Add(header);
            racunPDF.Add(stavke);
            racunPDF.Add(footer);
            racunPDF.Close();

            //Otvaranje PDF-a
            System.Diagnostics.Process.Start(nazivDatoteke);
        }
Beispiel #48
0
        private Paragraph GetPacParagraph(ref int index, byte[] buffer)
        {
            while (index < 15)
            {
                index++;
            }
            bool con = true;

            while (con)
            {
                index++;
                if (index + 20 >= buffer.Length)
                {
                    return(null);
                }

                if (buffer[index] == 0xFE && (buffer[index - 15] == 0x60 || buffer[index - 15] == 0x61))
                {
                    con = false;
                }
                if (buffer[index] == 0xFE && (buffer[index - 12] == 0x60 || buffer[index - 12] == 0x61))
                {
                    con = false;
                }
            }

            int  feIndex           = index;
            int  endDelimiter      = 0x00;
            byte alignment         = buffer[feIndex + 1];
            byte verticalAlignment = buffer[feIndex - 1];
            var  p = new Paragraph();

            int timeStartIndex = feIndex - 15;

            if (buffer[timeStartIndex] == 0x60)
            {
                p.StartTime = GetTimeCode(timeStartIndex + 1, buffer);
                p.EndTime   = GetTimeCode(timeStartIndex + 5, buffer);
            }
            else if (buffer[timeStartIndex + 3] == 0x60)
            {
                timeStartIndex += 3;
                p.StartTime     = GetTimeCode(timeStartIndex + 1, buffer);
                p.EndTime       = GetTimeCode(timeStartIndex + 5, buffer);
            }
            else
            {
                return(null);
            }
            int textLength = buffer[timeStartIndex + 9] + buffer[timeStartIndex + 10] * 256;
            int maxIndex   = timeStartIndex + 10 + textLength;

            if (_codePage == -1)
            {
                GetCodePage(buffer, index, endDelimiter);
            }

            var sb = new StringBuilder();

            index = feIndex + 3;
            string preTextCode = System.Text.Encoding.ASCII.GetString(buffer, index + 1, 3);

            if (preTextCode == "W16")
            {
                index += 5;
            }
            while (index < buffer.Length && index <= maxIndex) // buffer[index] != endDelimiter)
            {
                if (preTextCode == "W16")
                {
                    if (buffer[index] == 0xFE)
                    {
                        sb.AppendLine();
                        preTextCode = System.Text.Encoding.ASCII.GetString(buffer, index + 4, 3);
                        if (preTextCode == "W16")
                        {
                            index += 7;
                        }
                        index += 2;
                    }
                    else
                    {
                        if (buffer[index] == 0)
                        {
                            sb.Append(System.Text.Encoding.ASCII.GetString(buffer, index + 1, 1));
                        }
                        else
                        {
                            sb.Append(System.Text.Encoding.GetEncoding(950).GetString(buffer, index, 2));
                        }
                        index++;
                    }
                }
                else if (buffer[index] == 0xFF)
                {
                    sb.Append(" ");
                }
                else if (buffer[index] == 0xFE)
                {
                    sb.AppendLine();
                    index += 2;
                }
                else if (_codePage == 0)
                {
                    sb.Append(GetLatinString(GetEncoding(_codePage), buffer, ref index));
                }
                else if (_codePage == 3)
                {
                    sb.Append(GetArabicString(buffer, ref index));
                }
                else if (_codePage == 4)
                {
                    sb.Append(GetHebrewString(buffer, ref index));
                }
                else if (_codePage == 6)
                {
                    sb.Append(GetCyrillicString(buffer, ref index));
                }
                else
                {
                    sb.Append(GetEncoding(_codePage).GetString(buffer, index, 1));
                }
                index++;
            }
            if (index + 20 >= buffer.Length)
            {
                return(null);
            }

            p.Text = sb.ToString();
            p.Text = p.Text.Replace("\0", string.Empty);
            p.Text = FixItalics(p.Text);
            if (_codePage == 3)
            {
                p.Text = Utilities.FixEnglishTextInRightToLeftLanguage(p.Text, "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
            }


            if (verticalAlignment < 5)
            {
                if (alignment == 1) // left
                {
                    p.Text = "{\\an7}" + p.Text;
                }
                else if (alignment == 0) // right
                {
                    p.Text = "{\\an9}" + p.Text;
                }
                else
                {
                    p.Text = "{\\an8}" + p.Text;
                }
            }
            else if (verticalAlignment < 9)
            {
                if (alignment == 1) // left
                {
                    p.Text = "{\\an4}" + p.Text;
                }
                else if (alignment == 0) // right
                {
                    p.Text = "{\\an6}" + p.Text;
                }
                else
                {
                    p.Text = "{\\an5}" + p.Text;
                }
            }
            else
            {
                if (alignment == 1) // left
                {
                    p.Text = "{\\an1}" + p.Text;
                }
                else if (alignment == 0) // right
                {
                    p.Text = "{\\an3}" + p.Text;
                }
            }

            p.Text = p.Text.Replace(Convert.ToChar(0).ToString(CultureInfo.InvariantCulture), string.Empty);
            p.Text = p.Text.Replace(Convert.ToChar(1).ToString(CultureInfo.InvariantCulture), string.Empty);
            p.Text = p.Text.Replace(Convert.ToChar(2).ToString(CultureInfo.InvariantCulture), string.Empty);
            p.Text = p.Text.Replace(Convert.ToChar(3).ToString(CultureInfo.InvariantCulture), string.Empty);
            p.Text = p.Text.Replace(Convert.ToChar(4).ToString(CultureInfo.InvariantCulture), string.Empty);
            p.Text = p.Text.Replace(Convert.ToChar(5).ToString(CultureInfo.InvariantCulture), string.Empty);
            p.Text = p.Text.Replace(Convert.ToChar(6).ToString(CultureInfo.InvariantCulture), string.Empty);
            p.Text = p.Text.Replace(Convert.ToChar(7).ToString(CultureInfo.InvariantCulture), string.Empty);
            p.Text = p.Text.Replace(Convert.ToChar(8).ToString(CultureInfo.InvariantCulture), string.Empty);
            p.Text = p.Text.Replace(Convert.ToChar(11).ToString(CultureInfo.InvariantCulture), string.Empty);
            p.Text = p.Text.Replace(Convert.ToChar(12).ToString(CultureInfo.InvariantCulture), string.Empty);

            return(p);
        }
Beispiel #49
0
        /// <summary>
        /// Creates the static parts of the invoice.
        /// </summary>
        void CreatePage()
        {
            // Each MigraDoc document needs at least one section.
            Section section = this.document.AddSection();

            // Put a logo in the header
            //Image image = section.Headers.Primary.AddImage("../../PowerBooks.png");
            var foo   = imageToByteArray(System.Drawing.Image.FromFile("../../PowerBooks.png"));
            var image = section.Headers.Primary.AddImage(foo);

            image.Height             = "2.5cm";
            image.LockAspectRatio    = true;
            image.RelativeVertical   = RelativeVertical.Line;
            image.RelativeHorizontal = RelativeHorizontal.Margin;
            image.Top              = ShapePosition.Top;
            image.Left             = ShapePosition.Right;
            image.WrapFormat.Style = WrapStyle.Through;

            // Create footer
            Paragraph paragraph = section.Footers.Primary.AddParagraph();

            paragraph.AddText("PowerBooks Inc · Sample Street 42 · 56789 Cologne · Germany");
            paragraph.Format.Font.Size = 9;
            paragraph.Format.Alignment = ParagraphAlignment.Center;

            // Create the text frame for the address
            this.addressFrame                    = section.AddTextFrame();
            this.addressFrame.Height             = "3.0cm";
            this.addressFrame.Width              = "7.0cm";
            this.addressFrame.Left               = ShapePosition.Left;
            this.addressFrame.RelativeHorizontal = RelativeHorizontal.Margin;
            this.addressFrame.Top                = "5.0cm";
            this.addressFrame.RelativeVertical   = RelativeVertical.Page;

            // Put sender in address frame
            paragraph = this.addressFrame.AddParagraph("PowerBooks Inc · Sample Street 42 · 56789 Cologne");
            paragraph.Format.Font.Name  = "Times New Roman";
            paragraph.Format.Font.Size  = 7;
            paragraph.Format.SpaceAfter = 3;

            // Add the print date field
            paragraph = section.AddParagraph();
            paragraph.Format.SpaceBefore = "8cm";
            paragraph.Style = "Reference";
            paragraph.AddFormattedText("INVOICE", TextFormat.Bold);
            paragraph.AddTab();
            paragraph.AddText("Cologne, ");
            paragraph.AddDateField("dd.MM.yyyy");

            // Create the item table
            this.table                     = section.AddTable();
            this.table.Style               = "Table";
            this.table.Borders.Color       = TableBorder;
            this.table.Borders.Width       = 0.25;
            this.table.Borders.Left.Width  = 0.5;
            this.table.Borders.Right.Width = 0.5;
            this.table.Rows.LeftIndent     = 0;

            // Before you can add a row, you must define the columns
            Column column = this.table.AddColumn("1cm");

            column.Format.Alignment = ParagraphAlignment.Center;

            column = this.table.AddColumn("2.5cm");
            column.Format.Alignment = ParagraphAlignment.Right;

            column = this.table.AddColumn("3cm");
            column.Format.Alignment = ParagraphAlignment.Right;

            column = this.table.AddColumn("3.5cm");
            column.Format.Alignment = ParagraphAlignment.Right;

            column = this.table.AddColumn("2cm");
            column.Format.Alignment = ParagraphAlignment.Center;

            column = this.table.AddColumn("4cm");
            column.Format.Alignment = ParagraphAlignment.Right;

            // Create the header of the table
            Row row = table.AddRow();

            row.HeadingFormat    = true;
            row.Format.Alignment = ParagraphAlignment.Center;
            row.Format.Font.Bold = true;
            row.Shading.Color    = TableBlue;
            row.Cells[0].AddParagraph("Item");
            row.Cells[0].Format.Font.Bold  = false;
            row.Cells[0].Format.Alignment  = ParagraphAlignment.Left;
            row.Cells[0].VerticalAlignment = VerticalAlignment.Bottom;
            row.Cells[0].MergeDown         = 1;
            row.Cells[1].AddParagraph("Title and Author");
            row.Cells[1].Format.Alignment = ParagraphAlignment.Left;
            row.Cells[1].MergeRight       = 3;
            row.Cells[5].AddParagraph("Extended Price");
            row.Cells[5].Format.Alignment  = ParagraphAlignment.Left;
            row.Cells[5].VerticalAlignment = VerticalAlignment.Bottom;
            row.Cells[5].MergeDown         = 1;

            row = table.AddRow();
            row.HeadingFormat    = true;
            row.Format.Alignment = ParagraphAlignment.Center;
            row.Format.Font.Bold = true;
            row.Shading.Color    = TableBlue;
            row.Cells[1].AddParagraph("Quantity");
            row.Cells[1].Format.Alignment = ParagraphAlignment.Left;
            row.Cells[2].AddParagraph("Unit Price");
            row.Cells[2].Format.Alignment = ParagraphAlignment.Left;
            row.Cells[3].AddParagraph("Discount (%)");
            row.Cells[3].Format.Alignment = ParagraphAlignment.Left;
            row.Cells[4].AddParagraph("Taxable");
            row.Cells[4].Format.Alignment = ParagraphAlignment.Left;

            this.table.SetEdge(0, 0, 6, 2, Edge.Box, BorderStyle.Single, 0.75, Color.Empty);
        }
Beispiel #50
0
        public override void ExecuteResult(ControllerContext context)
        {
            var Response = context.HttpContext.Response;

            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "filename=foo.pdf");

            dt = Util.Now;

            doc = new Document(PageSize.LETTER.Rotate(), 36, 36, 64, 64);
            var w = PdfWriter.GetInstance(doc, Response.OutputStream);

            var roles = DbUtil.Db.CurrentRoles();
            var i     = (from o in DbUtil.Db.Organizations
                         where o.LimitToRole == null || roles.Contains(o.LimitToRole)
                         where o.OrganizationId == orgid
                         select new
            {
                o.OrganizationName,
                o.LeaderName,
                o.FirstMeetingDate
            }).SingleOrDefault();

            w.PageEvent = new HeadFoot
            {
                HeaderText = $"Recent Attendee Report: {i.OrganizationName} - {i.LeaderName} ({(i.FirstMeetingDate.HasValue ? "since " + i.FirstMeetingDate.FormatDate() : "no First Meeting Date set")})",
                FooterText = "Recent Attendee Report"
            };
            doc.Open();

            var q = Attendees(orgid.Value);

            if (!orgid.HasValue || i == null || !q.Any())
            {
                doc.Add(new Phrase("no data"));
            }
            else
            {
                var mt = new PdfPTable(1);
                mt.SetNoPadding();
                mt.HeaderRows = 1;

                float[] widths = new float[] { 4f, 6f, 7f, 2.6f, 2f, 3f };
                var     t      = new PdfPTable(widths);
                t.DefaultCell.Border            = PdfPCell.NO_BORDER;
                t.DefaultCell.VerticalAlignment = PdfPCell.ALIGN_TOP;
                t.DefaultCell.SetLeading(2.0f, 1f);
                t.WidthPercentage = 100;

                t.AddHeader("Name", boldfont);
                t.AddHeader("Address", boldfont);
                t.AddHeader("Phone/Email", boldfont);
                t.AddHeader("Last Att.", boldfont);
                t.AddHeader("Birthday", boldfont);
                t.AddHeader("Status", boldfont);
                mt.AddCell(t);

                var  color = BaseColor.BLACK;
                bool?v     = null;

                foreach (var p in q)
                {
                    if (color == BaseColor.WHITE)
                    {
                        color = new GrayColor(240);
                    }
                    else
                    {
                        color = BaseColor.WHITE;
                    }

                    t = new PdfPTable(widths);
                    t.SetNoBorder();
                    t.DefaultCell.VerticalAlignment = Element.ALIGN_TOP;
                    t.DefaultCell.BackgroundColor   = color;

                    if (v != p.visitor)
                    {
                        t.Add($"             ------ {(p.visitor ? "Guests and Previous Members" : "Members")} ------", 6, bigboldfont);
                    }
                    v = p.visitor;

                    t.Add(p.Name, font);

                    var ph = new Paragraph();
                    ph.AddLine(p.Address, font);
                    ph.AddLine(p.Address2, font);
                    ph.AddLine(p.CSZ, font);
                    t.AddCell(ph);

                    ph = new Paragraph();
                    ph.AddLine(p.HomePhone.FmtFone("H"), font);
                    ph.AddLine(p.CellPhone.FmtFone("C"), font);
                    ph.AddLine(p.Email, font);
                    t.AddCell(ph);

                    t.Add(p.LastAttend.FormatDate(), font);
                    t.Add(p.Birthday, font);
                    t.Add(p.AttendType, font);
                    t.CompleteRow();

                    t.Add("", font);
                    t.Add(p.AttendStr, 4, monofont);
                    t.AddRight($"{p.AttendPct:n1}{(p.AttendPct.HasValue ? "%" : "")}", font);

                    mt.AddCell(t);
                }
                doc.Add(mt);
            }
            doc.Close();
        }
Beispiel #51
0
        public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName)
        {
            _errorCount = 0;

            var sb = new StringBuilder();

            lines.ForEach(line => sb.AppendLine(line));
            var xml = new XmlDocument {
                XmlResolver = null
            };

            xml.LoadXml(sb.ToString().Replace(" & ", " &amp; ").Replace("Q&A", "Q&amp;A").RemoveControlCharactersButWhiteSpace().Trim());
            subtitle.Header = xml.OuterXml;

            var nsmgr = new XmlNamespaceManager(xml.NameTable);

            nsmgr.AddNamespace("ttaf1", xml.DocumentElement.NamespaceURI);

            var div = xml.DocumentElement.SelectSingleNode("//ttaf1:body", nsmgr).SelectSingleNode("ttaf1:div", nsmgr);

            if (div == null)
            {
                div = xml.DocumentElement.SelectSingleNode("//ttaf1:body", nsmgr).FirstChild;
            }

            var styleDic = new Dictionary <string, string>();

            foreach (XmlNode node in xml.DocumentElement.SelectNodes("//ttaf1:style", nsmgr))
            {
                if (node.Attributes["tts:fontStyle"] != null && node.Attributes["xml:id"] != null)
                {
                    styleDic.Add(node.Attributes["xml:id"].Value, node.Attributes["tts:fontStyle"].Value);
                }
            }
            bool couldBeFrames = true;
            bool couldBeMillisecondsWithMissingLastDigit = true;

            foreach (XmlNode node in div.ChildNodes)
            {
                try
                {
                    var pText     = new StringBuilder();
                    var styleName = string.Empty;
                    if (node.Attributes["style"] != null)
                    {
                        styleName = node.Attributes["style"].Value;
                    }
                    foreach (XmlNode innerNode in node.ChildNodes)
                    {
                        switch (innerNode.Name.Replace("tt:", string.Empty))
                        {
                        case "br":
                            pText.AppendLine();
                            break;

                        case "span":
                            bool italic = false;
                            bool font   = false;
                            if (innerNode.Attributes["style"] != null && styleDic.ContainsKey(innerNode.Attributes["style"].Value))
                            {
                                if (styleDic[innerNode.Attributes["style"].Value].Contains("italic"))
                                {
                                    italic = true;
                                    pText.Append("<i>");
                                }
                            }
                            if (innerNode.Attributes["tts:color"] != null)
                            {
                                var colorAsString = innerNode.Attributes["tts:color"].Value;
                                if (colorAsString != "white")
                                {
                                    pText.Append("<font color=\"" + colorAsString + "\">");
                                    font = true;
                                }
                            }
                            if (!italic && innerNode.Attributes != null)
                            {
                                var fs = innerNode.Attributes.GetNamedItem("tts:fontStyle");
                                if (fs != null && fs.Value == "italic")
                                {
                                    italic = true;
                                    pText.Append("<i>");
                                }
                            }
                            if (innerNode.HasChildNodes)
                            {
                                foreach (XmlNode innerInnerNode in innerNode.ChildNodes)
                                {
                                    if (innerInnerNode.Name == "br" || innerInnerNode.Name == "tt:br")
                                    {
                                        pText.AppendLine();
                                    }
                                    else
                                    {
                                        pText.Append(innerInnerNode.InnerText);
                                    }
                                }
                            }
                            else
                            {
                                pText.Append(innerNode.InnerText);
                            }
                            if (italic)
                            {
                                pText.Append("</i>");
                            }
                            if (font)
                            {
                                if (pText.EndsWith(' '))
                                {
                                    pText = new StringBuilder(pText.ToString().TrimEnd());
                                    pText.Append("</font> ");
                                }
                                else
                                {
                                    pText.Append("</font>");
                                }
                            }

                            break;

                        case "i":
                            pText.Append("<i>" + innerNode.InnerText + "</i>");
                            break;

                        case "b":
                            pText.Append("<b>" + innerNode.InnerText + "</b>");
                            break;

                        default:
                            pText.Append(innerNode.InnerText);
                            break;
                        }
                    }

                    string start = null;
                    string end   = null;
                    string dur   = null;
                    foreach (XmlAttribute attr in node.Attributes)
                    {
                        if (attr.Name.EndsWith("begin", StringComparison.Ordinal))
                        {
                            start = attr.InnerText;
                        }
                        else if (attr.Name.EndsWith("end", StringComparison.Ordinal))
                        {
                            end = attr.InnerText;
                        }
                        else if (attr.Name.EndsWith("duration", StringComparison.Ordinal))
                        {
                            dur = attr.InnerText;
                        }
                    }
                    string text = pText.ToString();
                    text = text.Replace(Environment.NewLine + "</i>", "</i>" + Environment.NewLine);
                    text = text.Replace("<i></i>", string.Empty).Trim();
                    if (!string.IsNullOrEmpty(end))
                    {
                        if (end.Length != 11 || end.Substring(8, 1) != ":" || start == null || start.Length != 11 || start.Substring(8, 1) != ":")
                        {
                            couldBeFrames = false;
                        }

                        if (couldBeMillisecondsWithMissingLastDigit && (end.Length != 11 || start == null || start.Length != 11 || end.Substring(8, 1) != "." || start.Substring(8, 1) != "."))
                        {
                            couldBeMillisecondsWithMissingLastDigit = false;
                        }

                        double dBegin, dEnd;
                        if (!start.Contains(':') && Utilities.CountTagInText(start, '.') == 1 &&
                            !end.Contains(':') && Utilities.CountTagInText(end, '.') == 1 &&
                            double.TryParse(start, NumberStyles.Float, CultureInfo.InvariantCulture, out dBegin) && double.TryParse(end, NumberStyles.Float, CultureInfo.InvariantCulture, out dEnd))
                        {
                            subtitle.Paragraphs.Add(new Paragraph(text, dBegin * TimeCode.BaseUnit, dEnd * TimeCode.BaseUnit));
                            if (!string.IsNullOrEmpty(styleName))
                            {
                                subtitle.Paragraphs[subtitle.Paragraphs.Count - 1].Extra = styleName;
                            }
                        }
                        else
                        {
                            if (start.Length == 8 && start[2] == ':' && start[5] == ':' && end.Length == 8 && end[2] == ':' && end[5] == ':')
                            {
                                var p     = new Paragraph();
                                var parts = start.Split(SplitCharColon);
                                p.StartTime = new TimeCode(int.Parse(parts[0]), int.Parse(parts[1]), int.Parse(parts[2]), 0);
                                parts       = end.Split(SplitCharColon);
                                p.EndTime   = new TimeCode(int.Parse(parts[0]), int.Parse(parts[1]), int.Parse(parts[2]), 0);
                                p.Text      = text;
                                subtitle.Paragraphs.Add(p);
                                if (!string.IsNullOrEmpty(styleName))
                                {
                                    p.Extra = styleName;
                                }
                            }
                            else
                            {
                                subtitle.Paragraphs.Add(new Paragraph(TimedText10.GetTimeCode(start, false), TimedText10.GetTimeCode(end, false), text));
                                if (!string.IsNullOrEmpty(styleName))
                                {
                                    subtitle.Paragraphs[subtitle.Paragraphs.Count - 1].Extra = styleName;
                                }
                            }
                        }
                    }
                    else if (!string.IsNullOrEmpty(dur))
                    {
                        if (dur.Length != 11 || dur.Substring(8, 1) != ":" || start == null || start.Length != 11 || start.Substring(8, 1) != ":")
                        {
                            couldBeFrames = false;
                        }

                        if (couldBeMillisecondsWithMissingLastDigit && (dur.Length != 11 || start == null || start.Length != 11 || dur.Substring(8, 1) != "." || start.Substring(8, 1) != "."))
                        {
                            couldBeMillisecondsWithMissingLastDigit = false;
                        }

                        TimeCode duration  = TimedText10.GetTimeCode(dur, false);
                        TimeCode startTime = TimedText10.GetTimeCode(start, false);
                        var      endTime   = new TimeCode(startTime.TotalMilliseconds + duration.TotalMilliseconds);
                        subtitle.Paragraphs.Add(new Paragraph(startTime, endTime, text));
                        if (!string.IsNullOrEmpty(styleName))
                        {
                            subtitle.Paragraphs[subtitle.Paragraphs.Count - 1].Extra = styleName;
                        }
                    }
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                    _errorCount++;
                }
            }
            subtitle.RemoveEmptyLines();

            if (couldBeFrames)
            {
                bool all30OrBelow = true;
                foreach (Paragraph p in subtitle.Paragraphs)
                {
                    if (p.StartTime.Milliseconds > 30 || p.EndTime.Milliseconds > 30)
                    {
                        all30OrBelow = false;
                        break;
                    }
                }
                if (all30OrBelow)
                {
                    foreach (Paragraph p in subtitle.Paragraphs)
                    {
                        p.StartTime.Milliseconds = SubtitleFormat.FramesToMillisecondsMax999(p.StartTime.Milliseconds);
                        p.EndTime.Milliseconds   = SubtitleFormat.FramesToMillisecondsMax999(p.EndTime.Milliseconds);
                    }
                }
            }
            else if (couldBeMillisecondsWithMissingLastDigit && Configuration.Settings.SubtitleSettings.TimedText10TimeCodeFormatSource != "hh:mm:ss.ms-two-digits")
            {
                foreach (Paragraph p in subtitle.Paragraphs)
                {
                    p.StartTime.Milliseconds *= 10;
                    p.EndTime.Milliseconds   *= 10;
                }
            }

            subtitle.Renumber();
        }
Beispiel #52
0
        /// <summary>
        /// Creates the dynamic parts of the invoice.
        /// </summary>
        void FillContent()
        {
            // Fill address in address text frame
            XPathNavigator item      = SelectItem("/invoice/to");
            Paragraph      paragraph = this.addressFrame.AddParagraph();

            paragraph.AddText(GetValue(item, "name/singleName"));
            paragraph.AddLineBreak();
            paragraph.AddText(GetValue(item, "address/line1"));
            paragraph.AddLineBreak();
            paragraph.AddText(GetValue(item, "address/postalCode") + " " + GetValue(item, "address/city"));

            // Iterate the invoice items
            double            totalExtendedPrice = 0;
            XPathNodeIterator iter = this.navigator.Select("/invoice/items/*");

            while (iter.MoveNext())
            {
                item = iter.Current;
                double quantity = GetValueAsDouble(item, "quantity");
                double price    = GetValueAsDouble(item, "price");
                double discount = GetValueAsDouble(item, "discount");

                // Each item fills two rows
                Row row1 = this.table.AddRow();
                Row row2 = this.table.AddRow();
                row1.TopPadding                 = 1.5;
                row1.Cells[0].Shading.Color     = TableGray;
                row1.Cells[0].VerticalAlignment = VerticalAlignment.Center;
                row1.Cells[0].MergeDown         = 1;
                row1.Cells[1].Format.Alignment  = ParagraphAlignment.Left;
                row1.Cells[1].MergeRight        = 3;
                row1.Cells[5].Shading.Color     = TableGray;
                row1.Cells[5].MergeDown         = 1;

                row1.Cells[0].AddParagraph(GetValue(item, "itemNumber"));
                paragraph = row1.Cells[1].AddParagraph();
                paragraph.AddFormattedText(GetValue(item, "title"), TextFormat.Bold);
                paragraph.AddFormattedText(" by ", TextFormat.Italic);
                paragraph.AddText(GetValue(item, "author"));
                row2.Cells[1].AddParagraph(GetValue(item, "quantity"));
                row2.Cells[2].AddParagraph(price.ToString("0.00") + " €");
                row2.Cells[3].AddParagraph(discount.ToString("0.0"));
                row2.Cells[4].AddParagraph();
                row2.Cells[5].AddParagraph(price.ToString("0.00"));
                double extendedPrice = quantity * price;
                extendedPrice = extendedPrice * (100 - discount) / 100;
                row1.Cells[5].AddParagraph(extendedPrice.ToString("0.00") + " €");
                row1.Cells[5].VerticalAlignment = VerticalAlignment.Bottom;
                totalExtendedPrice += extendedPrice;

                this.table.SetEdge(0, this.table.Rows.Count - 2, 6, 2, Edge.Box, BorderStyle.Single, 0.75);
            }

            // Add an invisible row as a space line to the table
            Row row = this.table.AddRow();

            row.Borders.Visible = false;

            // Add the total price row
            row = this.table.AddRow();
            row.Cells[0].Borders.Visible = false;
            row.Cells[0].AddParagraph("Total Price");
            row.Cells[0].Format.Font.Bold = true;
            row.Cells[0].Format.Alignment = ParagraphAlignment.Right;
            row.Cells[0].MergeRight       = 4;
            row.Cells[5].AddParagraph(totalExtendedPrice.ToString("0.00") + " €");

            // Add the VAT row
            row = this.table.AddRow();
            row.Cells[0].Borders.Visible = false;
            row.Cells[0].AddParagraph("VAT (19%)");
            row.Cells[0].Format.Font.Bold = true;
            row.Cells[0].Format.Alignment = ParagraphAlignment.Right;
            row.Cells[0].MergeRight       = 4;
            row.Cells[5].AddParagraph((0.19 * totalExtendedPrice).ToString("0.00") + " €");

            // Add the additional fee row
            row = this.table.AddRow();
            row.Cells[0].Borders.Visible = false;
            row.Cells[0].AddParagraph("Shipping and Handling");
            row.Cells[5].AddParagraph(0.ToString("0.00") + " €");
            row.Cells[0].Format.Font.Bold = true;
            row.Cells[0].Format.Alignment = ParagraphAlignment.Right;
            row.Cells[0].MergeRight       = 4;

            // Add the total due row
            row = this.table.AddRow();
            row.Cells[0].AddParagraph("Total Due");
            row.Cells[0].Borders.Visible  = false;
            row.Cells[0].Format.Font.Bold = true;
            row.Cells[0].Format.Alignment = ParagraphAlignment.Right;
            row.Cells[0].MergeRight       = 4;
            totalExtendedPrice           += 0.19 * totalExtendedPrice;
            row.Cells[5].AddParagraph(totalExtendedPrice.ToString("0.00") + " €");

            // Set the borders of the specified cell range
            this.table.SetEdge(5, this.table.Rows.Count - 4, 1, 4, Edge.Box, BorderStyle.Single, 0.75);

            // Add the notes paragraph
            paragraph = this.document.LastSection.AddParagraph();
            paragraph.Format.SpaceBefore      = "1cm";
            paragraph.Format.Borders.Width    = 0.75;
            paragraph.Format.Borders.Distance = 3;
            paragraph.Format.Borders.Color    = TableBorder;
            paragraph.Format.Shading.Color    = TableGray;
            item = SelectItem("/invoice");
            paragraph.AddText(GetValue(item, "notes"));
        }
Beispiel #53
0
 /// <summary>
 /// 设置文档的标题和页脚
 /// </summary>
 /// <param name="path">文档的路径</param>
 public static bool HeadersAndFooters(string path)
 {
     try
     {
         // 创建新文档
         using (var document = DocX.Create(path))
         {
             // 这个文档添加页眉和页脚。
             document.AddHeaders();
             document.AddFooters();
             // 强制第一个页面有一个不同的头和脚。
             document.DifferentFirstPage = true;
             // 奇偶页页眉页脚不同
             document.DifferentOddAndEvenPages = true;
             // 获取本文档的第一个、奇数和甚至是头文件。
             Header headerFirst = document.Headers.First;
             Header headerOdd   = document.Headers.Odd;
             Header headerEven  = document.Headers.Even;
             // 获取此文档的第一个、奇数和甚至脚注。
             Footer footerFirst = document.Footers.First;
             Footer footerOdd   = document.Footers.Odd;
             Footer footerEven  = document.Footers.Even;
             // 将一段插入到第一个头。
             Paragraph p0 = headerFirst.InsertParagraph();
             p0.Append("Hello First Header.").Bold();
             // 在奇数头中插入一个段落。
             Paragraph p1 = headerOdd.InsertParagraph();
             p1.Append("Hello Odd Header.").Bold();
             // 插入一个段落到偶数头中。
             Paragraph p2 = headerEven.InsertParagraph();
             p2.Append("Hello Even Header.").Bold();
             // 将一段插入到第一个脚注中。
             Paragraph p3 = footerFirst.InsertParagraph();
             p3.Append("Hello First Footer.").Bold();
             // 在奇数脚注中插入一个段落。
             Paragraph p4 = footerOdd.InsertParagraph();
             p4.Append("Hello Odd Footer.").Bold();
             // 插入一个段落到偶数头中。
             Paragraph p5 = footerEven.InsertParagraph();
             p5.Append("Hello Even Footer.").Bold();
             // 在文档中插入一个段落。
             Paragraph p6 = document.InsertParagraph();
             p6.AppendLine("Hello First page.");
             // 创建一个第二个页面,显示第一个页面有自己的头和脚。
             p6.InsertPageBreakAfterSelf();
             // 在页面中断后插入一段。
             Paragraph p7 = document.InsertParagraph();
             p7.AppendLine("Hello Second page.");
             // 创建三分之一页面显示,奇偶页不同的页眉和页脚。
             p7.InsertPageBreakAfterSelf();
             // 在页面中断后插入一段。
             Paragraph p8 = document.InsertParagraph();
             p8.AppendLine("Hello Third page.");
             // 将属性保存入文档
             document.Save();
             return(true);
         }
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message);
     }
     //从内存中释放此文档。
 }
        public void SacuvajRezervaciju(BindingList <Rezervacija> rezervacije, List <Rezervacija> pdfRez)
        {
            try
            {
                if (rezervacije.Count > 0)
                {
                    bool uspeh = KontrolerKorisnickogInterfejsa.Instance.ZapamtiRrezervacije(rezervacije.ToList());
                    if (uspeh)
                    {
                        MessageBox.Show("Sistem je zapamtio rezervaciju!");
                        List <Rezervacija> sacuvaneRez = new List <Rezervacija>();
                        int broj = rezervacije.Count;
                        sacuvaneRez = KontrolerKorisnickogInterfejsa.Instance.UcitajRezervacije();
                        int ukupno = sacuvaneRez.Count();
                        for (int i = ukupno - broj; i < ukupno; i++)
                        {
                            pdfRez.Add(sacuvaneRez.ElementAt(i));
                        }
                        rezervacije.Clear();
                        Document doc = new Document();
                        PdfWriter.GetInstance(doc, new FileStream("C:/Users/lazam/Desktop/Karte/karta" + $"{pdfRez.ElementAt(0).RedBr}" + ".pdf", FileMode.Create));
                        doc.Open();
                        for (int i = 0; i < pdfRez.Count; i++)
                        {
                            Paragraph p    = new Paragraph($"------------------------------Rezervacija {i+1}------------------------------");
                            Paragraph p1   = new Paragraph($"Rezervacija id: {pdfRez.ElementAt(i).RedBr} \n");
                            Paragraph p11  = new Paragraph($"Rezervisao: {pdfRez.ElementAt(i).Korisnik.Ime} {pdfRez.ElementAt(i).Korisnik.Prezime}");
                            Paragraph p2   = new Paragraph($"Let od: {pdfRez.ElementAt(i).Let.DestinacijaOD.Zemlja.Naziv}" + "-" + $"{pdfRez.ElementAt(i).Let.DestinacijaOD.Grad}");
                            Paragraph p22  = new Paragraph($"      do: {pdfRez.ElementAt(i).Let.DestinacijaDO.Zemlja.Naziv}" + "-" + $"{pdfRez.ElementAt(i).Let.DestinacijaDO.Grad}");
                            Paragraph p3   = new Paragraph($"Sediste: {pdfRez.ElementAt(i).Sediste.BrojSedista}");
                            Paragraph p4   = new Paragraph("-----------------------------------------------------------------------------");
                            Paragraph p5   = new Paragraph($"Datum polaska: { pdfRez.ElementAt(i).Let.DatumPolaska}");
                            Paragraph p6   = new Paragraph(" ");
                            Paragraph psp  = new Paragraph(" ");
                            Paragraph psp1 = new Paragraph(" ");
                            doc.Add(p);
                            doc.Add(p1);
                            doc.Add(p11);
                            doc.Add(p2);
                            doc.Add(p22);
                            doc.Add(p3);
                            doc.Add(p5);
                            doc.Add(p4);
                            doc.Add(p6);
                            doc.Add(psp);
                            doc.Add(psp1);
                        }
                        doc.Close();
                        MessageBox.Show("Rezervacija je odstampana!");
                    }


                    else
                    {
                        MessageBox.Show("Nema unete rezervacije");
                    }
                }
                else
                {
                    MessageBox.Show("Sistem ne moze da zapamti rezervaciju");
                }
            }
            catch (ExceptionServer es)
            {
                MessageBox.Show("Server je iskljucen!");
                Environment.Exit(0);
            }
        }
Beispiel #55
0
        public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName)
        {
            _errorCount = 0;
            string xmlString;

            if (lines == null && fileName != null)
            {
                xmlString = File.ReadAllText(fileName);
            }
            else if (lines != null)
            {
                StringBuilder sb = new StringBuilder();
                lines.ForEach(line => sb.AppendLine(line));
                xmlString = sb.ToString();
            }
            else
            {
                return;
            }

            if (!xmlString.Contains("<captionate>") || !xmlString.Contains("</caption>"))
            {
                return;
            }

            XmlDocument xml = new XmlDocument();

            xml.XmlResolver = null;
            try
            {
                xml.LoadXml(xmlString);
            }
            catch
            {
                _errorCount = 1;
                return;
            }

            Paragraph p = null;

            foreach (XmlNode node in xml.DocumentElement.SelectNodes("captions/caption"))
            {
                try
                {
                    if (node.Attributes["time"] != null)
                    {
                        string start             = node.Attributes["time"].InnerText;
                        double startMilliseconds = DecodeTimeToMilliseconds(start);
                        if (p != null)
                        {
                            p.EndTime.TotalMilliseconds = startMilliseconds - 1;
                        }
                        if (node.SelectSingleNode("tracks/track0") != null)
                        {
                            string text = node.SelectSingleNode("tracks/track0").InnerText;
                            text = Utilities.RemoveHtmlTags(text);
                            text = text.Replace("<br>", Environment.NewLine).Replace("<br />", Environment.NewLine).Replace("<BR>", Environment.NewLine);
                            p    = new Paragraph(text, startMilliseconds, startMilliseconds + 3000);
                            if (!string.IsNullOrWhiteSpace(text))
                            {
                                subtitle.Paragraphs.Add(p);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                    _errorCount++;
                }
            }
            subtitle.Renumber(1);
        }
Beispiel #56
0
        public override void LoadSubtitle(Subtitle subtitle, List<string> lines, string fileName)
        {
            subtitle.Paragraphs.Clear();
            subtitle.Header = null;
            byte[] buffer = FileUtil.ReadAllBytesShared(fileName);

            int i = 512;
            Paragraph last = null;
            var sb = new StringBuilder();
            while (i < buffer.Length - 25)
            {
                var p = new Paragraph();
                int length = buffer[i + 1];

                p.StartTime = DecodeTimestamp(buffer, i + 3);
                if (last != null && Math.Abs(last.EndTime.TotalMilliseconds) < 0.001)
                {
                    last.EndTime.TotalMilliseconds = p.StartTime.TotalMilliseconds - 1;
                }

                if (length > 22)
                {
                    int start = i + 7;
                    sb.Clear();
                    int skipCount = 0;
                    bool italics = false;
                    for (int k = start; k < length + i; k++)
                    {
                        byte b = buffer[k];
                        if (skipCount > 0)
                        {
                            skipCount--;
                        }
                        else if (b < 0x1F)
                        {
                            byte b2 = buffer[k + 1];
                            skipCount = 1;
                            if (sb.Length > 0 && !sb.ToString().EndsWith(Environment.NewLine, StringComparison.Ordinal) && !sb.EndsWith('>'))
                            {
                                if (italics)
                                {
                                    sb.Append("</i>");
                                }

                                sb.AppendLine();
                                italics = false;
                            }

                            if (b == 0x11 && b2 == 0x2e)
                            {
                                sb.Append("<i>");
                                italics = true;
                            }
                        }
                        else if (b == 0x80)
                        {
                        }
                        else
                        {
                            sb.Append(Encoding.GetEncoding(1252).GetString(buffer, k, 1));
                        }
                    }
                    p.Text = sb.ToString().Trim();
                    if (italics)
                    {
                        p.Text += "</i>";
                    }

                    p.Text = p.Text.Replace(Environment.NewLine + Environment.NewLine, Environment.NewLine);
                    p.Text = p.Text.Replace(Environment.NewLine + Environment.NewLine, Environment.NewLine);
                    p.Text = p.Text.Replace(Environment.NewLine + Environment.NewLine, Environment.NewLine);
                    subtitle.Paragraphs.Add(p);
                }
                else if (last != null)
                {
                    last.EndTime.TotalMilliseconds = p.StartTime.TotalMilliseconds;
                }
                last = p;

                i += length + 3;
            }
            if (last != null)
            {
                if (Math.Abs(last.EndTime.TotalMilliseconds) < 0.001)
                {
                    last.EndTime.TotalMilliseconds = last.StartTime.TotalMilliseconds + 2500;
                }

                if (last.Duration.TotalMilliseconds > Configuration.Settings.General.SubtitleMaximumDisplayMilliseconds)
                {
                    last.EndTime.TotalMilliseconds = last.StartTime.TotalMilliseconds + Utilities.GetOptimalDisplayMilliseconds(last.Text);
                }
            }

            subtitle.Renumber();
        }
Beispiel #57
0
 public Picture CreatePicture()
 {
     return(Paragraph.CreatePicture(document, id, string.Empty, string.Empty));
 }
Beispiel #58
0
 private static string GetTimeCodeString(Paragraph paragraph)
 {
     return($"#{paragraph.StartTime.TotalMilliseconds:00000000}{paragraph.Duration.TotalMilliseconds:000000}");
 }
        public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName)
        {
            _errorCount = 0;
            Paragraph p = null;

            foreach (string line in lines)
            {
                string s = line.TrimEnd();
                if (s.IndexOf(':') > 0)
                {
                    if (RegexTimeCode1.IsMatch(s))
                    {
                        try
                        {
                            if (p != null)
                            {
                                subtitle.Paragraphs.Add(p);
                            }

                            p = new Paragraph(DecodeTimeCodeFrames(s.Substring(5, 11), SplitCharColon), new TimeCode(), s.Remove(0, 37).Trim());
                        }
                        catch
                        {
                            _errorCount++;
                            p = null;
                        }
                    }
                    else if (RegexTimeCode1Empty.IsMatch(s))
                    {
                        try
                        {
                            if (p != null)
                            {
                                subtitle.Paragraphs.Add(p);
                            }

                            p = new Paragraph(DecodeTimeCodeFrames(s.Substring(5, 11), SplitCharColon), new TimeCode(), string.Empty);
                        }
                        catch
                        {
                            _errorCount++;
                            p = null;
                        }
                    }
                    else if (RegexTimeCode2.IsMatch(s))
                    {
                        try
                        {
                            if (p != null)
                            {
                                p.EndTime = DecodeTimeCodeFrames(s.Substring(5, 11), SplitCharColon);
                                if (string.IsNullOrWhiteSpace(p.Text))
                                {
                                    p.Text = s.Remove(0, 37).Trim();
                                }
                                else
                                {
                                    p.Text = p.Text + Environment.NewLine + s.Remove(0, 37).Trim();
                                }
                            }
                        }
                        catch
                        {
                            _errorCount++;
                            p = null;
                        }
                    }
                }
                else if (!string.IsNullOrWhiteSpace(s))
                {
                    _errorCount++;
                    if (_errorCount > 200 && subtitle.Paragraphs.Count == 0)
                    {
                        return;
                    }
                }
            }
            if (p != null)
            {
                subtitle.Paragraphs.Add(p);
            }

            subtitle.Renumber();
        }
Beispiel #60
0
        public override void LoadSubtitle(Subtitle subtitle, List <string> lines, string fileName)
        {
            _errorCount = 0;
            var sb = new StringBuilder();

            foreach (string line in lines)
            {
                sb.AppendLine(line);
            }

            string rtf = sb.ToString().Trim();

            if (!rtf.StartsWith("{\\rtf"))
            {
                return;
            }

            string[] arr   = null;
            var      rtBox = new System.Windows.Forms.RichTextBox();

            try
            {
                rtBox.Rtf = rtf;
                arr       = rtBox.Text.Replace("\r\n", "\n").Replace("\r", "\n").Split('\n');
            }
            catch (Exception exception)
            {
                System.Diagnostics.Debug.WriteLine(exception.Message);
                return;
            }
            finally
            {
                rtBox.Dispose();
            }

            bool expectStartTime = true;
            var  p = new Paragraph();

            subtitle.Paragraphs.Clear();
            foreach (string line in arr)
            {
                string s     = line.Trim().Replace("*", string.Empty);
                var    match = regexTimeCodes.Match(s);
                if (match.Success)
                {
                    string[] parts = s.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    if (parts.Length == 4)
                    {
                        try
                        {
                            if (!string.IsNullOrEmpty(p.Text))
                            {
                                subtitle.Paragraphs.Add(p);
                                p = new Paragraph();
                            }
                            p.StartTime     = DecodeTimeCode(parts[1]);
                            p.EndTime       = DecodeTimeCode(parts[2]);
                            expectStartTime = false;
                        }
                        catch (Exception exception)
                        {
                            _errorCount++;
                            System.Diagnostics.Debug.WriteLine(exception.Message);
                        }
                    }
                }
                else if (line.Trim().Length == 0)
                {
                    if (p.StartTime.TotalMilliseconds == 0 && p.EndTime.TotalMilliseconds == 0)
                    {
                        _errorCount++;
                    }
                    else
                    {
                        subtitle.Paragraphs.Add(p);
                    }
                    p = new Paragraph();
                }
                else if (line.Trim().Length > 0 && !expectStartTime)
                {
                    p.Text = (p.Text + Environment.NewLine + line).Trim();
                    if (p.Text.Length > 500)
                    {
                        _errorCount += 10;
                        return;
                    }
                    while (p.Text.Contains(Environment.NewLine + " "))
                    {
                        p.Text = p.Text.Replace(Environment.NewLine + " ", Environment.NewLine);
                    }
                }
            }
            if (!string.IsNullOrEmpty(p.Text))
            {
                subtitle.Paragraphs.Add(p);
            }

            subtitle.RemoveEmptyLines();
            subtitle.Renumber(1);
        }