Esempio n. 1
0
        public string Build()
        {
            PdfMetadata = ValueOrDefault(PdfMetadata, PdfMetadataDefaultValue);
            AddMetadata(PdfMetadata);

            StringBuilder sb = new StringBuilder();

            sb.Append($"%PDF-{Version}\n");
            sb.Append(BinaryComment());

            foreach (PdfObject pdfObject in PdfObjects)
            {
                sb.Append(pdfObject.Build());
            }

            var pdfFileUpUntilXref = sb.ToString(); // Temp pdf so that we can calculate position to Reference table

            var xref         = new PdfReferenceTable(pdfFileUpUntilXref, PdfObjects);
            var xrefPosition = PdfHelpers.Encoding.GetByteCount(pdfFileUpUntilXref);

            sb.Append($"{xref.ToString()}");

            var trailer = new PdfTrailer(this.Catalog, PdfObjects.Count + 1, PdfMetadata);

            sb.Append(trailer.Build());

            // Tells pdf where to find xref table
            sb.Append("startxref\n");
            sb.Append($"{xrefPosition}\n");
            sb.Append("%%EOF");

            return(sb.ToString());
        }