Ejemplo n.º 1
0
        /// <summary>
        /// Toes the PDF.
        /// </summary>
        /// <param name="writer">The writer.</param>
        public void ToPdf(PdfWriter writer)
        {
            this.ValidateEntries();
            base.Sort();
            PdfStreamWriter psw = writer.Psw;

            psw.WriteLineEnd();
            psw.WriteBytes(xref).WriteLineEnd();
            int index = 0;
            int count = 1;
            int num3  = 1;

            while (num3 < base.Count)
            {
                if ((base[index].ObjectIndex + count) != base[num3].ObjectIndex)
                {
                    this.WriteCrossBlock(index, count, psw);
                    index = num3;
                    count = 0;
                }
                num3++;
                count++;
            }
            this.WriteCrossBlock(index, count, psw);
        }
Ejemplo n.º 2
0
        private static void Main()
        {
            if (File.Exists(ResultFileName))
            {
                File.Delete(ResultFileName);
            }

            using (PdfStreamWriter fileWriter = new PdfStreamWriter(File.OpenWrite(ResultFileName)))
            {
                fileWriter.Settings.DocumentInfo.Author      = "Progress Software";
                fileWriter.Settings.DocumentInfo.Title       = "Merged document";
                fileWriter.Settings.DocumentInfo.Description = "This big document is generated with PdfStreamWriter class in less than a second, with minimal memory footprint and optimized result file size.";

                using (PdfFileSource fileSource = new PdfFileSource(File.OpenRead(InputFileName)))
                {
                    PdfPageSource pageToMerge = fileSource.Pages[0];

                    for (int i = 0; i < MergedDocumentPagesCount; i++)
                    {
                        fileWriter.WritePage(pageToMerge);
                    }
                }
            }

            ProcessStartInfo psi = new ProcessStartInfo()
            {
                FileName        = ResultFileName,
                UseShellExecute = true
            };

            Process.Start(psi);
        }
Ejemplo n.º 3
0
        private static void MergeDifferentDocumentsPages(string resultFileName)
        {
            string[] documentsToMerge =
            {
                InputFileSoundVideoAnd3D,
                InputFileBarChart,
                InputFileCentaurFeatures,
                InputFileMultipageDocument
            };

            string resultFile = Path.Combine(ResultDirName, resultFileName);

            using (PdfStreamWriter fileWriter = new PdfStreamWriter(File.OpenWrite(resultFile)))
            {
                foreach (string documentName in documentsToMerge)
                {
                    using (PdfFileSource fileToMerge = new PdfFileSource(File.OpenRead(documentName)))
                    {
                        foreach (PdfPageSource pageToMerge in fileToMerge.Pages)
                        {
                            fileWriter.WritePage(pageToMerge);
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public PdfDocumentWriter(Stream stream, bool closeOnFinish)
        {
            if (stream is null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            try {
                _writer          = new PdfStreamWriter(stream);
                _compressContent = true;
                _closeOnFinish   = closeOnFinish;
                _xrefTable       = new List <PdfWriterReference>();
                _referenceTable  = new Dictionary <PdfValue, PdfWriterReference>();
                _documentInfo    = new PdfDocumentInfo();
                _catalog         = new PdfCatalog();
                _pages           = new List <PdfPage_s>();
                _objToWrite      = new List <PdfValue>();
                _xrefTable.Add(null);

                _writer.WriteFileHeader();
            }
            catch (Exception) {
                if (closeOnFinish)
                {
                    stream.Close();
                }

                throw;
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Toes the PDF.
        /// </summary>
        /// <param name="writer">The writer.</param>
        public void ToPdf(PdfWriter writer)
        {
            PdfArray  array2 = new PdfArray();
            PdfString item   = new PdfString(Guid.NewGuid().ToString())
            {
                IsHexMode = true
            };

            array2.Add(item);
            PdfString str2 = new PdfString(Guid.NewGuid().ToString())
            {
                IsHexMode = true
            };

            array2.Add(str2);
            PdfArray array = array2;

            this.dic[PdfName.ID] = array;
            PdfStreamWriter psw = writer.Psw;

            psw.WriteLineEnd();
            psw.WriteBytes(trailer).WriteLineEnd();
            writer.WriteObject(this.dic);
            psw.WriteLineEnd();
            psw.WriteBytes(startxref).WriteLineEnd();
            psw.WriteInt(this.Offset).WriteLineEnd();
            psw.WriteBytes(eof).WriteLineEnd();
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Write Pdf object to Pdf writer
        /// </summary>
        /// <param name="writer">Pdf Writer</param>
        public override void ToPdf(PdfWriter writer)
        {
            PdfStreamWriter psw = writer.Psw;

            psw.WriteByte(0x5b);
            this.WriteContent(writer);
            psw.WriteByte(0x5d);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Writes the content.
        /// </summary>
        /// <param name="writer">The writer.</param>
        protected override void WriteContent(PdfWriter writer)
        {
            PdfStreamWriter psw = writer.Psw;

            psw.WriteDouble((double)this.ll_x).WriteSpace();
            psw.WriteDouble((double)this.ll_y).WriteSpace();
            psw.WriteDouble((double)this.ur_x).WriteSpace();
            psw.WriteDouble((double)this.ur_y);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Writes to.
        /// </summary>
        /// <param name="psw">The PSW.</param>
        internal void WriteTo(PdfStreamWriter psw)
        {
            string name = this.name;

            if (!this.safeName)
            {
                name = FixName(name);
            }
            psw.WriteByte(0x2f).WriteString(name);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Write Pdf object to Pdf writer
        /// </summary>
        /// <param name="writer">Pdf Writer</param>
        public override void ToPdf(PdfWriter writer)
        {
            PdfStreamWriter psw = writer.Psw;

            psw.WriteByte(60).WriteByte(60);
            foreach (KeyValuePair <PdfName, PdfObjectBase> pair in this.dic)
            {
                pair.Key.ToPdf(writer);
                psw.WriteSpace();
                writer.WriteObject(pair.Value);
            }
            psw.WriteByte(0x3e).WriteByte(0x3e);
        }
Ejemplo n.º 10
0
 /// <summary>
 /// Writes the cross block.
 /// </summary>
 /// <param name="index">The index.</param>
 /// <param name="count">The count.</param>
 /// <param name="psw">The PSW.</param>
 private void WriteCrossBlock(int index, int count, PdfStreamWriter psw)
 {
     psw.WriteInt(base[index].ObjectIndex).WriteSpace().WriteInt(count);
     for (int i = index; i < count; i++)
     {
         psw.WriteLineEnd();
         psw.WriteString(((long)base[i].Offset).ToString("0000000000", CultureInfo.InvariantCulture.NumberFormat));
         psw.WriteSpace();
         psw.WriteString(((int)base[i].Generation).ToString("00000", CultureInfo.InvariantCulture.NumberFormat));
         psw.WriteSpace();
         psw.WriteByte(base[i].InUse ? nf[0] : nf[1]);
     }
 }
Ejemplo n.º 11
0
        /// <summary>
        /// Write Pdf object to Pdf writer
        /// </summary>
        /// <param name="writer">Pdf Writer</param>
        public override void ToPdf(PdfWriter writer)
        {
            MemoryStream data = this.data;

            if ((this.filters != null) && (this.filters.Count > 0))
            {
                data = new MemoryStream();
                this.data.WriteTo(data);
                PdfArray array = new PdfArray();
                while (this.filters.Count > 0)
                {
                    using (MemoryStream stream2 = new MemoryStream())
                    {
                        data.Seek(0L, SeekOrigin.Begin);
                        data.WriteTo(stream2);
                        stream2.Seek(0L, SeekOrigin.Begin);
                        data.Dispose();
                        data.Dispose();
                        data = new MemoryStream();
                        PdfFilter filter = this.filters.Dequeue();
                        filter.Encode(stream2, data, null);
                        array.Insert(0, filter.GetName());
                        continue;
                    }
                }
                if (array.Count == 1)
                {
                    this.properties.Add(PdfName.Filter, array[0]);
                }
                else
                {
                    this.properties.Add(PdfName.Filter, array);
                }
            }
            this.properties[PdfName.Length] = new PdfNumber((double)data.Length);
            PdfStreamWriter psw = writer.Psw;

            this.properties.ToPdf(writer);
            psw.WriteLineEnd();
            psw.WriteBytes(streamPrefix).WriteLineEnd();
            data.WriteTo(psw.Stream);
            psw.WriteLineEnd().WriteBytes(streamSuffix);
            psw.WriteLineEnd();
            if (data != this.data)
            {
                data.Dispose();
            }
        }
Ejemplo n.º 12
0
 public override void ToPdf(PdfWriter writer)
 {
     if (this.usedChars.Count > 0)
     {
         PdfStreamWriter psw = base.Psw;
         psw.WriteString("/CIDInit /ProcSet findresource begin 12 dict begin begincmap /CMapType 2 def").WriteLineEnd();
         psw.WriteString("1 begincodespacerange <0000> <FFFF> endcodespacerange").WriteLineEnd();
         psw.WriteString(((int)this.usedChars.Count) + " beginbfchar").WriteLineEnd();
         foreach (KeyValuePair <char, int> pair in this.usedChars)
         {
             psw.WriteString(string.Format("<{0:x4}><{1:x4}>", new object[] { (int)pair.Value, (int)pair.Key })).WriteLineEnd();
         }
         psw.WriteString("endbfchar").WriteLineEnd().WriteString("endcmap CMapName currentdict /CMap defineresource pop end end").WriteLineEnd();
     }
     base.ToPdf(writer);
 }
Ejemplo n.º 13
0
        private void                                _writeContent(PdfStreamWriter writer, string filter, StreamBuffer buffer)
        {
            writer.WriteDictionaryBegin();

            if (filter != null)
            {
                writer.WriteName("Filter");
                writer.WriteName(filter);
            }

            writer.WriteName("Length");
            writer.WriteInteger((int)buffer.Length);
            writer.WriteDictionaryEnd();
            writer.WriteStream(buffer.GetBuffer(), (int)buffer.Length);
            _dataStream.Dispose();
            _dataStream = null; // Release datastream for less memory usage
        }
Ejemplo n.º 14
0
        private static void SplitDocumentPages(string resultFileFormat)
        {
            string documentToSplit = InputFileMultipageDocument;

            using (PdfFileSource fileToSplit = new PdfFileSource(File.OpenRead(documentToSplit)))
            {
                for (int i = 0; i < fileToSplit.Pages.Length; i++)
                {
                    PdfPageSource page = fileToSplit.Pages[i];
                    string        splitDocumentName = Path.Combine(ResultDirName, string.Format(resultFileFormat, i + 1));

                    using (PdfStreamWriter fileWriter = new PdfStreamWriter(File.OpenWrite(splitDocumentName)))
                    {
                        fileWriter.WritePage(page);
                    }
                }
            }
        }
Ejemplo n.º 15
0
 /// <summary>
 /// Writes to.
 /// </summary>
 /// <param name="psw">The PSW.</param>
 internal void WriteTo(PdfStreamWriter psw)
 {
     if (this.isHexMode)
     {
         psw.WriteByte(60);
         byte[] byteValue = this.byteValue;
         for (int i = 0; i < byteValue.Length; i++)
         {
             psw.WriteString(((byte)byteValue[i]).ToString("X2"));
         }
         psw.WriteByte(0x3e);
     }
     else
     {
         psw.WriteByte(40);
         psw.WriteBytes(this.GetEscapedBytes());
         psw.WriteByte(0x29);
     }
 }
Ejemplo n.º 16
0
        private static void PrependAndAppendPageContent(string resultFileName)
        {
            string initialDocument = InputFileMultipageDocument;
            string resultDocument  = Path.Combine(ResultDirName, resultFileName);

            using (PdfStreamWriter fileWriter = new PdfStreamWriter(File.OpenWrite(resultDocument)))
            {
                using (PdfFileSource fileSource = new PdfFileSource(File.OpenRead(initialDocument)))
                {
                    RadFixedPage backgroundContentOwner = GenerateBackgroundImageContent(InputFileBackgroundImage);
                    RadFixedPage foregroundContentOwner = GenerateForegroundTextContent("WATERMARK");

                    foreach (PdfPageSource pageSource in fileSource.Pages)
                    {
                        using (PdfPageStreamWriter pageWriter = fileWriter.BeginPage(pageSource.Size, pageSource.Rotation))
                        {
                            using (pageWriter.SaveContentPosition())
                            {
                                double xCenteringTranslation = (pageSource.Size.Width - backgroundContentOwner.Size.Width) / 2;
                                double yCenteringTranslation = (pageSource.Size.Height - backgroundContentOwner.Size.Height) / 2;
                                pageWriter.ContentPosition.Translate(xCenteringTranslation, yCenteringTranslation);
                                pageWriter.WriteContent(backgroundContentOwner);
                            }

                            pageWriter.WriteContent(pageSource);

                            using (pageWriter.SaveContentPosition())
                            {
                                double xCenteringTranslation = (pageSource.Size.Width - foregroundContentOwner.Size.Width) / 2;
                                double yCenteringTranslation = (pageSource.Size.Height - foregroundContentOwner.Size.Height) / 2;
                                pageWriter.ContentPosition.Translate(xCenteringTranslation, yCenteringTranslation);
                                pageWriter.WriteContent(foregroundContentOwner);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 17
0
        private static void FitAndPositionMultiplePagesOnSinglePage(string resultFileName)
        {
            string initialDocument = InputFileMultipageDocument;
            string resultDocument  = Path.Combine(ResultDirName, resultFileName);

            using (PdfStreamWriter fileWriter = new PdfStreamWriter(File.OpenWrite(resultDocument)))
            {
                using (PdfFileSource fileSource = new PdfFileSource(File.OpenRead(initialDocument)))
                {
                    double              halfWidth           = fileSource.Pages[0].Size.Width / 2;
                    double              halfHeight          = fileSource.Pages[0].Size.Height / 2;
                    Vector[]            translateDirections = new Vector[] { new Vector(0, 0), new Vector(1, 0), new Vector(0, 1), new Vector(1, 1) };
                    PdfPageStreamWriter resultPage          = null;

                    for (int i = 0; i < fileSource.Pages.Length; i++)
                    {
                        if (i % 4 == 0)
                        {
                            if (i > 0)
                            {
                                resultPage.Dispose();
                            }

                            resultPage = fileWriter.BeginPage(fileSource.Pages[0].Size, fileSource.Pages[0].Rotation);
                            resultPage.ContentPosition.Scale(0.5, 0.5);
                        }

                        Vector direction = translateDirections[i % 4];
                        resultPage.ContentPosition.Translate(direction.X * halfWidth, direction.Y * halfHeight);
                        PdfPageSource sourcePage = fileSource.Pages[i];
                        resultPage.WriteContent(sourcePage);
                    }

                    resultPage.Dispose();
                }
            }
        }
Ejemplo n.º 18
0
        public void                    Dispose()
        {
            if (_writer != null)
            {
                _writer.PdfStream.Flush();

                if (_closeOnFinish)
                {
                    _writer.PdfStream.Close();
                }

                _writer = null;
            }

            if (_xrefTable != null)
            {
                _xrefTable.Clear();
                _xrefTable    = null;
                _documentInfo = null;
                _catalog      = null;
                _pages        = null;
                _objToWrite   = null;
            }
        }
Ejemplo n.º 19
0
        internal override void                pdfWriteToDocument(PdfDocumentWriter document, PdfStreamWriter writer)
        {
            writer.WriteDictionaryBegin();

            if (_title != null)
            {
                writer.WriteName("Title");          writer.WriteString(_title);
            }
            if (_author != null)
            {
                writer.WriteName("Author");         writer.WriteString(_author);
            }
            if (_subject != null)
            {
                writer.WriteName("Subject");        writer.WriteString(_subject);
            }
            if (_keywords != null)
            {
                writer.WriteName("Keywords");       writer.WriteString(_keywords);
            }
            if (_creator != null)
            {
                writer.WriteName("Creator");        writer.WriteString(_creator);
            }
            if (_producer != null)
            {
                writer.WriteName("Producer");       writer.WriteString(_producer);
            }
            { writer.WriteName("CreationDate");   writer.WriteDate(_creationDate); }
            { writer.WriteName("ModDate");        writer.WriteDate(_modDate); }

            writer.WriteDictionaryEnd();
        }
Ejemplo n.º 20
0
 internal override void                    pdfWriteToDocument(PdfDocumentWriter document, PdfStreamWriter writer)
 {
     throw new PdfExceptionWriter("Can't write PdfToken.");
 }
Ejemplo n.º 21
0
 internal override void Write(PdfStreamWriter writer)
 {
     writer.SetState(State);
 }
Ejemplo n.º 22
0
        internal override void                pdfWriteToDocument(PdfDocumentWriter document, PdfStreamWriter writer)
        {
            writer.WriteDictionaryBegin();
            writer.WriteName("Type");
            writer.WriteName("Catalog");

            if (_pages != null)
            {
                writer.WriteName("Pages");
                writer.WriteReference(document, _pages);
            }

            writer.WriteName("ViewerPreferences");
            writer.WriteDictionaryBegin();
            writer.WriteName("PrintScaling");
            writer.WriteName("None");
            writer.WriteDictionaryEnd();

            writer.WriteName("PageLayout");
            writer.WriteName("SinglePage");

            writer.WriteDictionaryEnd();
        }
Ejemplo n.º 23
0
 internal override void                    pdfWriteToDocument(PdfDocumentWriter document, PdfStreamWriter writer)
 {
     writer.WriteInteger(_value);
 }
Ejemplo n.º 24
0
        internal override void                pdfWriteToDocument(PdfDocumentWriter Document, PdfStreamWriter Writer)
        {
            Writer.WriteDictionaryBegin();
            {
                Writer.WriteName("Type");
                Writer.WriteName("Font");

                Writer.WriteName("Subtype");
                Writer.WriteName("Type1");

                Writer.WriteName("BaseFont");
                Writer.WriteName(FontName);

                Writer.WriteName("Encoding");
                Writer.WriteName("WinAnsiEncoding");
            }
            Writer.WriteDictionaryEnd();
        }
Ejemplo n.º 25
0
        internal override void                    pdfWriteToDocument(PdfDocumentWriter document, PdfStreamWriter writer)
        {
            writer.WriteDictionaryBegin();
            {
                writer.WriteName("Type");
                writer.WriteName("Page");

                writer.WriteName("Parent");
                writer.WriteReference(document, Parent);

                writer.WriteName("MediaBox");
                writer.WriteArrayBegin();
                {
                    writer.WriteInteger(0);
                    writer.WriteInteger(0);
                    writer.WriteNumber(_pageSize.width.pnts);
                    writer.WriteNumber(_pageSize.height.pnts);
                }
                writer.WriteArrayEnd();

                writer.WriteName("CropBox");
                writer.WriteRectangle(_cropBox);

                if (_bleedBox != _cropBox)
                {
                    writer.WriteName("BleedBox");
                    writer.WriteRectangle(_bleedBox);
                }

                if (_trimBox != _cropBox)
                {
                    writer.WriteName("TrimBox");
                    writer.WriteRectangle(_trimBox);
                }

                if (_artBox != _cropBox)
                {
                    writer.WriteName("ArtBox");
                    writer.WriteRectangle(_artBox);
                }

                writer.WriteName("Contents");
                writer.WriteArrayBegin();

                for (var curContent = this._content; curContent != null; curContent = curContent.Parent)
                {
                    writer.WriteReference(document.GetReference(curContent));
                }

                writer.WriteArrayEnd();


                writer.WriteName("Resources");
                writer.WriteDictionaryBegin();
                {
                    writer.WriteName("ProcSet");
                    writer.WriteArrayBegin();
                    {
                        writer.WriteName("PDF");
                        writer.WriteName("Text");
                        writer.WriteName("ImageB");
                        writer.WriteName("ImageC");
                    }
                    writer.WriteArrayEnd();

                    _content.Resources.pdfWriteResources(document, writer);
                }
                writer.WriteDictionaryEnd();
            }
            writer.WriteDictionaryEnd();
        }
Ejemplo n.º 26
0
 internal override void                    pdfWriteToDocument(PdfDocumentWriter document, PdfStreamWriter writer)
 {
     writer.WriteNull();
 }
Ejemplo n.º 27
0
 internal override void Write(PdfStreamWriter writer)
 {
     writer.WriteLine($"{Point} l");
 }
Ejemplo n.º 28
0
 internal override void                    pdfWriteToDocument(PdfDocumentWriter document, PdfStreamWriter writer)
 {
     if (_hexadecimal)
     {
         writer.WriteStringHex(_value);
     }
     else
     {
         writer.WriteStringRaw(_value);
     }
 }
Ejemplo n.º 29
0
 internal abstract void Write(PdfStreamWriter writer);
Ejemplo n.º 30
0
 internal override void Write(PdfStreamWriter writer)
 {
     writer.WriteLine($"{P1} {P2} {P3} c");
 }