/// <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); }
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); }
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); } } } } }
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; } }
/// <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(); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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]); } }
/// <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(); } }
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); }
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 }
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); } } } }
/// <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); } }
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); } } } } } }
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(); } } }
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; } }
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(); }
internal override void pdfWriteToDocument(PdfDocumentWriter document, PdfStreamWriter writer) { throw new PdfExceptionWriter("Can't write PdfToken."); }
internal override void Write(PdfStreamWriter writer) { writer.SetState(State); }
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(); }
internal override void pdfWriteToDocument(PdfDocumentWriter document, PdfStreamWriter writer) { writer.WriteInteger(_value); }
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(); }
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(); }
internal override void pdfWriteToDocument(PdfDocumentWriter document, PdfStreamWriter writer) { writer.WriteNull(); }
internal override void Write(PdfStreamWriter writer) { writer.WriteLine($"{Point} l"); }
internal override void pdfWriteToDocument(PdfDocumentWriter document, PdfStreamWriter writer) { if (_hexadecimal) { writer.WriteStringHex(_value); } else { writer.WriteStringRaw(_value); } }
internal abstract void Write(PdfStreamWriter writer);
internal override void Write(PdfStreamWriter writer) { writer.WriteLine($"{P1} {P2} {P3} c"); }