Exemple #1
0
        public static Sound Create(string filename, int sampling_rate)
        {
            PDFStream stream1 = Library.CreateStream(new FileStream(filename, FileMode.Open));

            stream1.Dict["R"] = Library.CreateFixed(((double)sampling_rate));
            return(new Sound(stream1));
        }
Exemple #2
0
        public PDFStream InsertStream(Stream s, int nr)
        {
            PDFStream stream1 = Library.CreateStream();

            this.InsertStream(stream1, nr);
            stream1.Encode(s);
            return(stream1);
        }
Exemple #3
0
        public static XObjectPS Create(Stream ps)
        {
            PDFDict dict1 = Library.CreateDict();

            dict1["Type"]    = PDF.N("XObject");
            dict1["Subtype"] = PDF.N("PS");
            PDFStream stream1 = Library.CreateStream(ps, dict1);

            return(Resources.Get(stream1, typeof(XObjectPS)) as XObjectPS);
        }
Exemple #4
0
        public static FunctionType4 Create(double[] domain, double[] range, string expression)
        {
            byte[]    numArray1 = Encoding.ASCII.GetBytes(expression);
            PDFStream stream1   = Library.CreateStream(numArray1, 0, numArray1.Length, false, null);
            PDFDict   dict1     = stream1.Dict;

            dict1["FunctionType"] = Library.CreateInteger(((long)4));
            dict1["Domain"]       = Library.CreateArray(false, domain);
            dict1["Range"]        = Library.CreateArray(false, range);
            return(new FunctionType4(stream1));
        }
        public static EmbeddedFileStream Create(bool indirect, Stream _str)
        {
            PDFStream          stream1 = Library.CreateStream(_str);
            EmbeddedFileStream stream2 = (Resources.Get(stream1, typeof(EmbeddedFileStream)) as EmbeddedFileStream);

            if (indirect)
            {
                Library.CreateIndirect(stream1);
            }
            return(stream2);
        }
        public static ColorSpaceICCBased Create(Document doc, bool indirect, Stream profile, params string[] encoding)
        {
            PDFArray array2;
            int      num2;
            PDFArray array1 = Library.CreateArray(2);

            array1[0] = PDF.N("ICCBased");
            PDFStream stream1 = Library.CreateStream();

            byte[] numArray1 = new byte[30];
            profile.Position = ((long)0);
            int num1 = profile.Read(numArray1, 0, 30);

            if (num1 == 0)
            {
                throw new Exception("Empty ICC profile");
            }
            string text1 = Utils.BytesToString(numArray1);

            if (text1.IndexOf("GRAY") != -1)
            {
                stream1.Dict["N"] = Library.CreateInteger(((long)1));
            }
            if (text1.IndexOf("RGB") != -1)
            {
                stream1.Dict["N"] = Library.CreateInteger(((long)3));
            }
            if (text1.IndexOf("CMYK") != -1)
            {
                stream1.Dict["N"] = Library.CreateInteger(((long)4));
            }
            if ((encoding != null) && (encoding.Length > 0))
            {
                array2 = Library.CreateArray(encoding.Length);
                stream1.Dict["Filter"] = array2;
                for (num2 = 0; (num2 < encoding.Length); num2 += 1)
                {
                    array2[num2] = PDF.N(encoding[num2]);
                }
            }
            stream1.Encode(profile);
            array1[1] = doc.Indirects.New(stream1);
            ColorSpaceICCBased based1 = (Resources.Get(array1, typeof(ColorSpaceICCBased)) as ColorSpaceICCBased);

            if (indirect)
            {
                doc.Indirects.New(array1);
            }
            return(based1);
        }
Exemple #7
0
        public static PDFStream CreateStream(Stream src, PDFDict strmDict, bool encodeAndEncrypt)
        {
            Stream stream1 = new MemoryStream();

            byte[] numArray1 = new byte[65536];
            int    num1      = 0;

            goto Label_001E;
Label_0015:
            stream1.Write(numArray1, 0, num1);
Label_001E:
            num1 = src.Read(numArray1, 0, numArray1.Length);
            if (num1 != 0)
            {
                goto Label_0015;
            }
            stream1.Position = ((long)0);
            return(Library.CreateStream(stream1, ((long)0), stream1.Length, strmDict, encodeAndEncrypt));
        }
Exemple #8
0
        public static XObjectForm Create(string StrBody, Rect BBox)
        {
            int num1;

            byte[] numArray1 = new byte[StrBody.Length];
            for (num1 = 0; (num1 < StrBody.Length); num1 += 1)
            {
                numArray1[num1] = ((byte)StrBody[num1]);
            }
            MemoryStream stream1 = new MemoryStream(numArray1);
            PDFStream    stream2 = Library.CreateStream(stream1);

            stream2.Dict["Subtype"] = Library.CreateName("Form");
            XObjectForm form1 = new XObjectForm(stream2);

            form1.BBox = BBox;
            form1.CTM  = new CTM(1f, 0f, 0f, 1f, 0f, 0f);
            return(form1);
        }
Exemple #9
0
        public static XObjectForm Create()
        {
            int    num1;
            string text1 = "/DeviceRGB cs 0.1 1.0 1.0 sc 0.0 4.00 40.00 20.00 re B";

            byte[] numArray1 = new byte[text1.Length];
            for (num1 = 0; (num1 < text1.Length); num1 += 1)
            {
                numArray1[num1] = ((byte)text1[num1]);
            }
            MemoryStream stream1 = new MemoryStream(numArray1);
            PDFStream    stream2 = Library.CreateStream(stream1);

            stream2.Dict["Subtype"] = Library.CreateName("Form");
            XObjectForm form1 = new XObjectForm(stream2);

            form1.BBox = new Rect(0f, 0f, 50f, 50f);
            form1.CTM  = new CTM(1f, 0f, 0f, 1f, 0f, 0f);
            return(form1);
        }
Exemple #10
0
        public bool EmbedFontFile(Stream fontStream)
        {
            PDFArray array1;
            PDFDict  dict1;
            PDFDict  dict2;

            Altsoft.FTMB.Font font1 = Altsoft.FTMB.Font.OpenFont(fontStream);
            if ((font1 == null) || !font1.GetType().Equals(typeof(TrueTypeFont)))
            {
                return(false);
            }
            if (((font1.EmbeddingRights & 782) == 0) || ((font1.EmbeddingRights & 8) != 0))
            {
                array1 = (this.Dict["DescendantFonts"] as PDFArray);
                if (array1 == null)
                {
                    return(false);
                }
                dict1 = (array1[0] as PDFDict);
                if (dict1 == null)
                {
                    return(false);
                }
                dict1 = (dict1["FontDescriptor"] as PDFDict);
                if (dict1 == null)
                {
                    return(false);
                }
                font1.FontStream.Position = ((long)0);
                dict2              = Library.CreateDict();
                dict2["Filter"]    = Library.CreateName("FlateDecode");
                dict2["Length1"]   = Library.CreateInteger(font1.FontStream.Length);
                dict1["FontFile2"] = base.Direct.Doc.Indirects.New(Library.CreateStream(font1.FontStream, dict2));
                return(true);
            }
            return(false);
        }
Exemple #11
0
 public static PDFStream CreateStream(byte[] buffer, int offset, int count, bool copyData, PDFDict strmDict)
 {
     return(Library.CreateStream(buffer, offset, count, copyData, strmDict, true));
 }
Exemple #12
0
 public static PDFStream CreateStream(Stream src, long offset, long count, PDFDict strmDict)
 {
     return(Library.CreateStream(src, offset, count, strmDict, true));
 }
Exemple #13
0
        protected internal virtual PDFDirect CopyHandlerDirect(PDFDirect src, CopyHandlerDelegate ch)
        {
            PDFObject obj1;
            PDFArray  array1;
            PDFArray  array2;
            int       num1;
            PDFDict   dict1;
            PDFDict   dict2;
            PDFStream stream1;
            PDFStream stream2;

            if (ch != null)
            {
                obj1 = ch.Invoke(this.dstDoc, src);
                if ((obj1 is PDFDirect))
                {
                    src = ((PDFDirect)obj1);
                }
                else
                {
                    throw new PDFException("Can\'t convert direct into indirect");
                }
            }
            PDFObjectType type1 = src.PDFType;

            switch (type1)
            {
            case PDFObjectType.tPDFNull:
            {
                goto Label_0155;
            }

            case PDFObjectType.tPDFInteger:
            {
                goto Label_0133;
            }

            case PDFObjectType.tPDFFixed:
            {
                goto Label_0122;
            }

            case PDFObjectType.tPDFBoolean:
            {
                goto Label_00A2;
            }

            case PDFObjectType.tPDFName:
            {
                goto Label_0144;
            }

            case PDFObjectType.tPDFString:
            {
                goto Label_01E7;
            }

            case PDFObjectType.tPDFDict:
            {
                dict1 = (src as PDFDict);
                dict2 = Library.CreateDict();
                foreach (PDFName name1 in dict1.Keys)
                {
                    dict2[name1.Value] = this.CopyHandler(dict1[name1, 0], ch);
                }
                return(dict2);
            }

            case PDFObjectType.tPDFArray:
            {
                array1 = (src as PDFArray);
                array2 = Library.CreateArray(array1.Count);
                num1   = 0;
                goto Label_0097;
            }

            case PDFObjectType.tPDFStream:
            {
                stream1 = (src as PDFStream);
                stream2 = Library.CreateStream();
                foreach (PDFName name2 in stream1.Dict.Keys)
                {
                    stream2.Dict[name2.Value] = this.CopyHandler(stream1.Dict[name2, 0], ch);
                }
                stream2.SetRawStream(stream1.Decrypt());
                return(stream2);
            }
            }
            goto Label_01F8;
Label_007D:
            array2[num1] = this.CopyHandler(array1[num1, 0], ch);
            num1        += 1;
Label_0097:
            if (num1 < array1.Count)
            {
                goto Label_007D;
            }
            return(array2);

Label_00A2:
            return(Library.CreateBoolean((src as PDFBoolean).Value));

Label_0122:
            return(Library.CreateFixed((src as PDFFixed).Value));

Label_0133:
            return(Library.CreateInteger((src as PDFInteger).Value));

Label_0144:
            return(Library.CreateName((src as PDFName).Value));

Label_0155:
            return(Library.CreateNull());

Label_01E7:
            return(Library.CreateString((src as PDFString).Value));

Label_01F8:
            throw new Exception("Invalid object type");
        }
Exemple #14
0
 public static PDFStream CreateStream()
 {
     return(Library.CreateStream(Stream.Null, ((long)0), ((long)0), null));
 }
Exemple #15
0
        public static Altsoft.PDFO.Font EmbedFont(Document doc, Stream fontstream, string encoding, bool embedFontFile, bool isVertical)
        {
            int      num2;
            PDFArray array2;
            int      num10;

            Altsoft.FTMB.Font font1 = Altsoft.FTMB.Font.OpenFont(fontstream);
            if ((font1.FontType != FontType.TrueTypeFontT) || (encoding != "Unicode"))
            {
                return(null);
            }
            TrueTypeFont font2 = (font1 as TrueTypeFont);
            double       num1  = ((double)font2.UnitsPerEm);
            PDFDict      dict1 = Library.CreateDict();

            dict1["Type"]     = Library.CreateName("Font");
            dict1["Subtype"]  = Library.CreateName("CIDFontType2");
            dict1["BaseFont"] = Library.CreateName(font2.FontName);
            PDFDict dict2 = Library.CreateDict();

            dict2["Registry"]      = Library.CreateString("Adobe");
            dict2["Ordering"]      = Library.CreateString("Identity");
            dict2["Supplement"]    = Library.CreateInteger(((long)0));
            dict1["CIDSystemInfo"] = dict2;
            TTEncoding encoding1 = null;

            for (num2 = 0; ((num2 < font2.Encodings.Count) && (encoding1 == null)); num2 += 1)
            {
                encoding1 = ((TTEncoding)font2.Encodings[num2]);
                if ((encoding1.platformID != 3) || ((encoding1.specificID != 1) && (encoding1.specificID != 0)))
                {
                    encoding1 = null;
                }
            }
            if (encoding1 == null)
            {
                return(null);
            }
            dict1["DW"] = Library.CreateInteger(((long)((((double)font2.GetWidth(encoding1.GetGID(0))) * 1000f) / num1)));
            int      num3   = 0;
            int      num4   = encoding1.GetLastCharCode(ref num3);
            int      num5   = encoding1.GetFirstCharCode(ref num3);
            PDFArray array1 = Library.CreateArray(0);

            if (num5 != 0)
            {
                array1.Add(Library.CreateInteger(((long)0)));
                array2 = Library.CreateArray(0);
                array2.Add(Library.CreateInteger(((long)((((double)font2.GetWidth(0, 3, 1)) * 1000f) / num1))));
                array1.Add(array2);
            }
            array1.Add(Library.CreateInteger(((long)num5)));
            array2 = Library.CreateArray(0);
            array2.Add(Library.CreateInteger(((long)((((double)font2.GetWidth(num3)) * 1000f) / num1))));
            int num6 = num5;

            while ((num5 != num4))
            {
                num5 = encoding1.GetNextCharCode(num5, ref num3);
                if (num5 != (num6 + 1))
                {
                    array1.Add(array2);
                    array1.Add(Library.CreateInteger(((long)num5)));
                    array2 = Library.CreateArray(0);
                }
                num6 = num5;
                array2.Add(Library.CreateInteger(((long)((((double)font2.GetWidth(num3)) * 1000f) / num1))));
            }
            array1.Add(array2);
            dict1["W"] = array1;
            Stream stream1 = new MemoryStream();
            int    num7    = encoding1.GetFirstCharCode(ref num3);
            int    num8    = 0;

            while ((num8 < num7))
            {
                stream1.WriteByte(0);
                stream1.WriteByte(0);
                num8 += 1;
            }
            stream1.WriteByte(((byte)(num3 / 256)));
            stream1.WriteByte(((byte)(num3 % 256)));
            num8 += 1;
            int num9 = encoding1.GetLastCharCode(ref num3);

            do
            {
                num7 = encoding1.GetNextCharCode(num7, ref num3);
                while ((num8 < num7))
                {
                    stream1.WriteByte(0);
                    stream1.WriteByte(0);
                    num8 += 1;
                }
                stream1.WriteByte(((byte)(num3 / 256)));
                stream1.WriteByte(((byte)(num3 % 256)));
                num8 += 1;
            }while ((num7 != num9));
            stream1.Position = ((long)0);
            PDFDict dict3 = Library.CreateDict();

            dict3["Filter"] = Library.CreateName("FlateDecode");
            PDFStream stream2 = Library.CreateStream(stream1, dict3);

            dict1["CIDToGIDMap"] = doc.Indirects.New(stream2);
            PDFDict dict4 = Library.CreateDict();

            dict4["Type"]     = Library.CreateName("FontDescriptor");
            dict4["FontName"] = Library.CreateName(font2.FontName);
            dict4["Flags"]    = Library.CreateInteger(((long)4));
            PDFArray array3 = Library.CreateArray(4);

            for (num10 = 0; (num10 < 4); num10 += 1)
            {
                array3[num10] = Library.CreateInteger(((long)font2.FontBBox[num10]));
            }
            dict4["FontBBox"]    = array3;
            dict4["ItalicAngle"] = Library.CreateFixed(font2.ItalicAngle);
            dict4["Ascent"]      = Library.CreateInteger(((long)font2.FontBBox[3]));
            dict4["Descent"]     = Library.CreateInteger(((long)font2.FontBBox[1]));
            dict4["CapHeight"]   = Library.CreateInteger(((long)font2.FontBBox[3]));
            dict4["StemV"]       = Library.CreateInteger(((long)0));
            if (((font2.EmbeddingRights == 0) || ((font2.EmbeddingRights & 8) != 0)) && embedFontFile)
            {
                font2.FontStream.Position = ((long)0);
                dict3              = Library.CreateDict();
                dict3["Filter"]    = Library.CreateName("FlateDecode");
                dict3["Length1"]   = Library.CreateInteger(font2.FontStream.Length);
                dict4["FontFile2"] = doc.Indirects.New(Library.CreateStream(font2.FontStream, dict3));
            }
            dict1["FontDescriptor"] = doc.Indirects.New(dict4);
            PDFDict dict5 = Library.CreateDict();

            dict5["Type"]     = Library.CreateName("Font");
            dict5["Subtype"]  = Library.CreateName("Type0");
            dict5["BaseFont"] = Library.CreateName(font2.FontName);
            if (!isVertical)
            {
                dict5["Encoding"] = Library.CreateName("Identity-H");
            }
            else
            {
                dict5["Encoding"] = Library.CreateName("Identity-V");
            }
            PDFArray array4 = Library.CreateArray(1);

            array4[0] = doc.Indirects.New(dict1);
            dict5["DescendantFonts"] = array4;
            return(new FontType0(dict5));
        }
Exemple #16
0
        public static XObjectImage Create(Document doc, Bitmap img, params string[] encoding)
        {
            int       num3;
            int       num4;
            int       num5;
            Color     color1;
            int       num6;
            PDFArray  array1;
            int       num7;
            int       num8;
            PDFStream stream1 = Library.CreateStream();
            PDFDict   dict1   = stream1.Dict;

            dict1["Width"]   = PDF.O(img.Width);
            dict1["Height"]  = PDF.O(img.Height);
            dict1["Subtype"] = PDF.N("Image");
            dict1["Type"]    = PDF.N("XObject");
            byte[]           numArray1 = null;
            BitArrayAccessor accessor1 = null;
            int num1 = 0;
            int num2 = 0;

            if (doc == null)
            {
                doc = Library.Resources.Doc;
            }
            XObjectImage image1 = ((XObjectImage)doc.Resources[doc.Indirects.New(stream1), typeof(XObjectImage)]);

            image1.ColorSpace = ColorSpaceDeviceRGB.Create();
            numArray1         = new byte[((3 * img.Width) * img.Height)];
            num1 = 8;
            num2 = (3 * img.Width);
            dict1["BitsPerComponent"] = PDF.O(8);
            for (num3 = 0; (num3 < img.Height); num3 += 1)
            {
                num4      = 0;
                accessor1 = new BitArrayAccessor(numArray1, ((num3 * num2) * 8), num1, false);
                for (num5 = 0; (num5 < img.Width); num5 += 1)
                {
                    color1 = img.GetPixel(num5, num3);
                    num6   = 0;
                    while ((num6 < 3))
                    {
                        num8 = num6;
                        switch (num8)
                        {
                        case 0:
                        {
                            int num9 = num4;
                            num4            = (num9 + 1);
                            accessor1[num4] = ((long)((ulong)color1.R));
                            goto Label_0180;
                        }

                        case 1:
                        {
                            int num10 = num4;
                            num4            = (num10 + 1);
                            accessor1[num4] = ((long)((ulong)color1.G));
                            goto Label_0180;
                        }

                        case 2:
                        {
                            goto Label_016B;
                        }
                        }
                        goto Label_0180;
Label_016B:
                        int num11       = num4;
                        num4            = (num11 + 1);
                        accessor1[num4] = ((long)((ulong)color1.B));
Label_0180:
                        num6 += 1;
                    }
                }
            }
            MemoryStream stream2 = new MemoryStream(numArray1);

            if (encoding.Length > 0)
            {
                array1 = Library.CreateArray(encoding.Length);
                stream1.Dict["Filter"] = array1;
                for (num7 = 0; (num7 < encoding.Length); num7 += 1)
                {
                    array1[num7] = PDF.N(encoding[num7]);
                }
            }
            stream1.Encode(stream2);
            return(image1);
        }
Exemple #17
0
 public static PDFStream CreateStream(Stream src)
 {
     return(Library.CreateStream(src, Library.CreateDict(), true));
 }
Exemple #18
0
        public static PDFObject DefaultCopyHandler(Document dstDoc, PDFObject src)
        {
            PDFIndirect indirect1;
            PDFStream   stream1;

            if (src == null)
            {
                return(Library.CreateNull());
            }
            if ((src is PDFIndirect))
            {
                indirect1        = dstDoc.Indirects.New();
                indirect1.Direct = ((PDFDirect)Document.DefaultCopyHandler(dstDoc, src.Direct));
                return(indirect1);
            }
            PDFDirect     direct1 = null;
            PDFDirect     direct2 = ((PDFDirect)src);
            PDFObjectType type1   = src.PDFType;

            switch (type1)
            {
            case PDFObjectType.tPDFNull:
            {
                return(Library.CreateNull());
            }

            case PDFObjectType.tPDFInteger:
            {
                return(Library.CreateInteger(((PDFInteger)direct2).Value));
            }

            case PDFObjectType.tPDFFixed:
            {
                return(Library.CreateFixed(((PDFFixed)direct2).Value));
            }

            case PDFObjectType.tPDFBoolean:
            {
                return(Library.CreateBoolean(((PDFBoolean)direct2).Value));
            }

            case PDFObjectType.tPDFName:
            {
                return(Library.CreateName(((PDFName)direct2).Value));
            }

            case PDFObjectType.tPDFString:
            {
                return(Library.CreateString(((PDFString)direct2).Value));
            }

            case PDFObjectType.tPDFDict:
            case PDFObjectType.tPDFArray:
            {
                goto Label_0108;
            }

            case PDFObjectType.tPDFStream:
            {
                stream1 = ((PDFStream)direct2);
                return(Library.CreateStream(stream1.Decrypt(), ((PDFDict)dstDoc.CloneObject(stream1.Dict)), false));
            }
            }
Label_0108:
            return(Library.CreateDirect(src.PDFType));
        }
Exemple #19
0
 public static PDFStream CreateStream(Stream src, PDFDict strmDict)
 {
     return(Library.CreateStream(src, strmDict, true));
 }