// --------------------------------------------------------------------------- public void Write(Stream stream) { // step 1 using (Document document = new Document()) { // step 2 PdfWriter writer = PdfWriter.GetInstance(document, stream); // step 3 document.Open(); // step 4 Rectangle rect = new Rectangle(100, 400, 500, 800); rect.Border = Rectangle.BOX; rect.BorderWidth = 0.5f; rect.BorderColor = new BaseColor(0xFF, 0x00, 0x00); document.Add(rect); PdfIndirectObject streamObject = null; using (FileStream fs = new FileStream(RESOURCE, FileMode.Open, FileAccess.Read)) { PdfStream stream3D = new PdfStream(fs, writer); stream3D.Put(PdfName.TYPE, new PdfName("3D")); stream3D.Put(PdfName.SUBTYPE, new PdfName("U3D")); stream3D.FlateCompress(); streamObject = writer.AddToBody(stream3D); stream3D.WriteLength(); } PdfDictionary dict3D = new PdfDictionary(); dict3D.Put(PdfName.TYPE, new PdfName("3DView")); dict3D.Put(new PdfName("XN"), new PdfString("Default")); dict3D.Put(new PdfName("IN"), new PdfString("Unnamed")); dict3D.Put(new PdfName("MS"), PdfName.M); dict3D.Put( new PdfName("C2W"), new PdfArray( new float[] { 1, 0, 0, 0, 0, -1, 0, 1, 0, 3, -235, 28 } ) ); dict3D.Put(PdfName.CO, new PdfNumber(235)); PdfIndirectObject dictObject = writer.AddToBody(dict3D); PdfAnnotation annot = new PdfAnnotation(writer, rect); annot.Put(PdfName.CONTENTS, new PdfString("3D Model")); annot.Put(PdfName.SUBTYPE, new PdfName("3D")); annot.Put(PdfName.TYPE, PdfName.ANNOT); annot.Put(new PdfName("3DD"), streamObject.IndirectReference); annot.Put(new PdfName("3DV"), dictObject.IndirectReference); PdfAppearance ap = writer.DirectContent.CreateAppearance( rect.Width, rect.Height ); annot.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, ap); annot.SetPage(); writer.AddAnnotation(annot); } }
/// <summary> /// Gets the stream representing this object. /// @since 2.1.3 (replacing the method without param compressionLevel) /// @throws IOException /// </summary> /// <param name="compressionLevel">the compressionLevel</param> /// <returns>the stream representing this template</returns> internal override PdfStream GetFormXObject(int compressionLevel) { var s = new PdfStream(Content.ToByteArray()); s.Put(PdfName.TYPE, PdfName.Xobject); s.Put(PdfName.Subtype, PdfName.Ps); s.FlateCompress(compressionLevel); return(s); }
// --------------------------------------------------------------------------- /** * Manipulates a PDF file src with the file dest as result * @param src the original PDF */ public byte[] ManipulatePdf(byte[] src) { // the font file byte[] fontfile = null; using (FileStream fs = new FileStream( FONT, FileMode.Open, FileAccess.Read)) { fontfile = new byte[fs.Length]; fs.Read(fontfile, 0, (int)fs.Length); } // create a new stream for the font file PdfStream stream = new PdfStream(fontfile); stream.FlateCompress(); stream.Put(PdfName.LENGTH1, new PdfNumber(fontfile.Length)); // create a reader object PdfReader reader = new PdfReader(src); int n = reader.XrefSize; PdfDictionary font; using (MemoryStream ms = new MemoryStream()) { using (PdfStamper stamper = new PdfStamper(reader, ms)) { PdfName fontname = new PdfName(FONTNAME); for (int i = 0; i < n; i++) { PdfObject objectPdf = reader.GetPdfObject(i); if (objectPdf == null || !objectPdf.IsDictionary()) { continue; } font = (PdfDictionary)objectPdf; if (PdfName.FONTDESCRIPTOR.Equals(font.Get(PdfName.TYPE)) && fontname.Equals(font.Get(PdfName.FONTNAME))) { PdfIndirectObject objref = stamper.Writer.AddToBody(stream); font.Put(PdfName.FONTFILE2, objref.IndirectReference); } } } return(ms.ToArray()); } }
private void OutputDss(PdfDictionary dss, PdfDictionary vrim, PdfArray ocsps, PdfArray crls, PdfArray certs) { writer.AddDeveloperExtension(PdfDeveloperExtension.ESIC_1_7_EXTENSIONLEVEL5); PdfDictionary catalog = reader.Catalog; stp.MarkUsed(catalog); foreach (PdfName vkey in validated.Keys) { PdfArray ocsp = new PdfArray(); PdfArray crl = new PdfArray(); PdfArray cert = new PdfArray(); PdfDictionary vri = new PdfDictionary(); foreach (byte[] b in validated[vkey].crls) { PdfStream ps = new PdfStream(b); ps.FlateCompress(); PdfIndirectReference iref = writer.AddToBody(ps, false).IndirectReference; crl.Add(iref); crls.Add(iref); } foreach (byte[] b in validated[vkey].ocsps) { PdfStream ps = new PdfStream(b); ps.FlateCompress(); PdfIndirectReference iref = writer.AddToBody(ps, false).IndirectReference; ocsp.Add(iref); ocsps.Add(iref); } foreach (byte[] b in validated[vkey].certs) { PdfStream ps = new PdfStream(b); ps.FlateCompress(); PdfIndirectReference iref = writer.AddToBody(ps, false).IndirectReference; cert.Add(iref); certs.Add(iref); } if (ocsp.Size > 0) vri.Put(PdfName.OCSP, writer.AddToBody(ocsp, false).IndirectReference); if (crl.Size > 0) vri.Put(PdfName.CRL, writer.AddToBody(crl, false).IndirectReference); if (cert.Size > 0) vri.Put(PdfName.CERT, writer.AddToBody(cert, false).IndirectReference); vrim.Put(vkey, writer.AddToBody(vri, false).IndirectReference); } dss.Put(PdfName.VRI, writer.AddToBody(vrim, false).IndirectReference); if (ocsps.Size > 0) dss.Put(PdfName.OCSPS, writer.AddToBody(ocsps, false).IndirectReference); if (crls.Size > 0) dss.Put(PdfName.CRLS, writer.AddToBody(crls, false).IndirectReference); if (certs.Size > 0) dss.Put(PdfName.CERTS, writer.AddToBody(certs, false).IndirectReference); catalog.Put(PdfName.DSS, writer.AddToBody(dss, false).IndirectReference); }
private void OutputDss(PdfDictionary dss, PdfDictionary vrim, PdfArray ocsps, PdfArray crls, PdfArray certs) { writer.AddDeveloperExtension(PdfDeveloperExtension.ESIC_1_7_EXTENSIONLEVEL5); PdfDictionary catalog = reader.Catalog; stp.MarkUsed(catalog); foreach (PdfName vkey in validated.Keys) { PdfArray ocsp = new PdfArray(); PdfArray crl = new PdfArray(); PdfArray cert = new PdfArray(); PdfDictionary vri = new PdfDictionary(); foreach (byte[] b in validated[vkey].crls) { PdfStream ps = new PdfStream(b); ps.FlateCompress(); PdfIndirectReference iref = writer.AddToBody(ps, false).IndirectReference; crl.Add(iref); crls.Add(iref); } foreach (byte[] b in validated[vkey].ocsps) { PdfStream ps = new PdfStream(b); ps.FlateCompress(); PdfIndirectReference iref = writer.AddToBody(ps, false).IndirectReference; ocsp.Add(iref); ocsps.Add(iref); } foreach (byte[] b in validated[vkey].certs) { PdfStream ps = new PdfStream(b); ps.FlateCompress(); PdfIndirectReference iref = writer.AddToBody(ps, false).IndirectReference; cert.Add(iref); certs.Add(iref); } if (ocsp.Size > 0) { vri.Put(PdfName.OCSP, writer.AddToBody(ocsp, false).IndirectReference); } if (crl.Size > 0) { vri.Put(PdfName.CRL, writer.AddToBody(crl, false).IndirectReference); } if (cert.Size > 0) { vri.Put(PdfName.CERT, writer.AddToBody(cert, false).IndirectReference); } vrim.Put(vkey, writer.AddToBody(vri, false).IndirectReference); } dss.Put(PdfName.VRI, writer.AddToBody(vrim, false).IndirectReference); if (ocsps.Size > 0) { dss.Put(PdfName.OCSPS, writer.AddToBody(ocsps, false).IndirectReference); } if (crls.Size > 0) { dss.Put(PdfName.CRLS, writer.AddToBody(crls, false).IndirectReference); } if (certs.Size > 0) { dss.Put(PdfName.CERTS, writer.AddToBody(certs, false).IndirectReference); } catalog.Put(PdfName.DSS, writer.AddToBody(dss, false).IndirectReference); }
void outputDss() { PdfWriter writer = pdfStamper.Writer; PdfReader reader = pdfStamper.Reader; PdfDictionary dss = new PdfDictionary(); PdfDictionary vrim = new PdfDictionary(); PdfArray ocsps = new PdfArray(); PdfArray crls = new PdfArray(); PdfArray certs = new PdfArray(); writer.AddDeveloperExtension(PdfDeveloperExtension.ESIC_1_7_EXTENSIONLEVEL5); writer.AddDeveloperExtension(new PdfDeveloperExtension(PdfName.ADBE, new PdfName("1.7"), 8)); PdfDictionary catalog = reader.Catalog; pdfStamper.MarkUsed(catalog); foreach (PdfName vkey in validated.Keys) { PdfArray ocsp = new PdfArray(); PdfArray crl = new PdfArray(); PdfArray cert = new PdfArray(); PdfDictionary vri = new PdfDictionary(); foreach (byte[] b in validated[vkey].crls) { PdfStream ps = new PdfStream(b); ps.FlateCompress(); PdfIndirectReference iref = writer.AddToBody(ps, false).IndirectReference; crl.Add(iref); crls.Add(iref); } foreach (byte[] b in validated[vkey].ocsps) { PdfStream ps = new PdfStream(buildOCSPResponse(b)); ps.FlateCompress(); PdfIndirectReference iref = writer.AddToBody(ps, false).IndirectReference; ocsp.Add(iref); ocsps.Add(iref); } foreach (byte[] b in validated[vkey].certs) { PdfStream ps = new PdfStream(b); ps.FlateCompress(); PdfIndirectReference iref = writer.AddToBody(ps, false).IndirectReference; cert.Add(iref); certs.Add(iref); } if (ocsp.Length > 0) { vri.Put(PdfName.OCSP, writer.AddToBody(ocsp, false).IndirectReference); } if (crl.Length > 0) { vri.Put(PdfName.CRL, writer.AddToBody(crl, false).IndirectReference); } if (cert.Length > 0) { vri.Put(PdfName.CERT, writer.AddToBody(cert, false).IndirectReference); } vri.Put(PdfName.TU, new PdfDate()); vrim.Put(vkey, writer.AddToBody(vri, false).IndirectReference); } dss.Put(PdfName.VRI, writer.AddToBody(vrim, false).IndirectReference); if (ocsps.Length > 0) { dss.Put(PdfName.OCSPS, writer.AddToBody(ocsps, false).IndirectReference); } if (crls.Length > 0) { dss.Put(PdfName.CRLS, writer.AddToBody(crls, false).IndirectReference); } if (certs.Length > 0) { dss.Put(PdfName.CERTS, writer.AddToBody(certs, false).IndirectReference); } catalog.Put(PdfName.DSS, writer.AddToBody(dss, false).IndirectReference); }