コード例 #1
0
        // returns true if an xref was found false otherwise
        private void RetrieveXRef()
        {
            _xref = null;

            // only necessary if not linearized
            startXRef = RetrieveStartXRef();

            // if the xref was not found, early exit
            if (startXRef == -1)
            {
                return;
            }

            _lexer.PushPosition(startXRef);

            var token = _lexer.ReadToken();

            if (token == "xref")
            {
                // we have an uncompressed xref table
                _xref = PdfXRef.Parse(_lexer);
            }
            else
            {
                // maybe there is no xref
            }
            _lexer.PopPosition();
        }
コード例 #2
0
        public PdfScript(PdfXRef AXref, string AName) : base(AXref, AName)
        {
            PdfArray      FWidths;
            PdfDictionary FFont;
            PdfDictionary FFontDescriptor;

            FFont = new PdfDictionary(AXref);
            AXref.AddObject(FFont);

            AddStrElements(FFont, Generic._String_Table());
            AddIntElements(FFont, Generic._Int_Table());
            FFont.AddItem("BaseFont", new PdfName("Script"));

            FFontDescriptor = new PdfDictionary(AXref);
            AXref.AddObject(FFontDescriptor);

            AddStrElements(FFontDescriptor, Generic._Script_String_Table());
            AddIntElements(FFontDescriptor, Generic._Script_Int_Table());
            FFontDescriptor.AddItem("FontBBox", new PdfArray(AXref, SCRIPT_BBOX));
            FFont.AddItem("FontDescriptor", FFontDescriptor);

            FWidths = new PdfArray(AXref, SCRIPT_W_ARRAY);
            FFont.AddItem("Widths", FWidths);
            SetData(FFont);
        }
コード例 #3
0
//				internal bool XT
//				{
//					get
//					{
//						return (this.PR != null);
//					}
//				}
//
//				internal bool XU
//				{
//					get
//					{
//						if (this.PR != null)
//						{
//							return this.PR.NA;
//						}
//						return false;
//					}
//					set
//					{
//						if (this.PR != null)
//						{
//							this.PR.NA = 09F;
//						}
//					}
//				}

//				internal bool XV
//				{
//					get
//					{
//						if (((this.PK != null) && this.PK.Bold) && ((this.PR != null) && this.PR.NA))
//						{
//							return !this.PR.XA;
//						}
//						return false;
//					}
//				}
//
//				internal bool XW
//				{
//					get
//					{
//						if (((this.PK != null) && this.PK.Italic) && ((this.PR != null) && this.PR.NA))
//						{
//							return !this.PR.XB;
//						}
//						return false;
//					}
//				}
        #endregion
        #region Constructors
        public PdfTrueTypeFont(PdfXRef AXref, string AName) : base(AXref, AName)
        {
            PdfDictionary FFont;

            PK = fntReturnFont(AName);
            if (PK != null)
            {
                vAdjustFontSize(PK);
                PdfDictionary dicFontDescriptor = dicCreateFontDescriptor(AXref, AName, PK);
                FFont = new PdfDictionary(AXref);
                AXref.AddObject(FFont);
                FFont.AddItem("Type", new PdfName("Font"));
                FFont.AddItem("Subtype", new PdfName("TrueType"));
                FFont.AddItem("BaseFont", new PdfName(AName));
                FFont.AddInternalItem("FontDescriptor", dicFontDescriptor);
                FFont.AddItem("Encoding", new PdfName("WinAnsiEncoding"));
                FFont.AddItem("FirstChar", new PdfNumber(FFirstChar));
                FFont.AddItem("LastChar", new PdfNumber(FLastChar));

                PdfArray faWidths = new PdfArray(AXref, ARIAL_W_ARRAY);
                AXref.AddObject(faWidths);
                FFont.AddInternalItem("Widths", faWidths);

                SetData(FFont);
            }
        }
コード例 #4
0
ファイル: PdfXRefTests.cs プロジェクト: carbon/SafeRapidPdf
        public void Parsing_Uncompressed_XRef()
        {
            var r = PdfXRef.Parse(@"0 6
0000000000 65535 f 
0000000016 00000 n 
0000000051 00000 n 
0000000109 00000 n 
0000000281 00000 n 
0000000385 00000 n 
".ToLexer());
            // 1 section
            Assert.Equal(1, r.Items.Count);
            var s = r.Items[0] as PdfXRefSection;
            // 6 entries
            Assert.Equal(6, s.Items.Count);
        }
コード例 #5
0
        private void RetrieveXRefLinearized()
        {
            // if we get here we can read the next object as the first xref
            // use the linearized header to jump to the main table /T offset
            // parse the xref there too
            var firstPageXRef    = PdfObject.ParseAny(_lexer) as PdfIndirectObject;
            var mainXRefPosition = _linearizationHeader["T"] as PdfNumeric;

            _lexer.PushPosition(mainXRefPosition.ToInt64());

            var mainXRef = PdfObject.ParseAny(_lexer) as PdfIndirectObject;

            _lexer.PopPosition();

            _xref = PdfXRef.Parse((PdfStream)firstPageXRef.Object, (PdfStream)mainXRef.Object);
        }
コード例 #6
0
        public PdfTimesRoman(PdfXRef AXref, string AName) : base(AXref, AName)
        {
            PdfArray      FWidths;
            PdfDictionary FFont;

            FFont = new PdfDictionary(AXref);
            AXref.AddObject(FFont);

            AddStrElements(FFont, Generic._String_Table());
            AddIntElements(FFont, Generic._Int_Table());
            FFont.AddItem("BaseFont", new PdfName("Times-Roman"));

            FWidths = new PdfArray(AXref, TIMES_ROMAN_W_ARRAY);
            FFont.AddInternalItem("Widths", FWidths);
            SetData(FFont);
        }
コード例 #7
0
        public PdfFixedWidthItalic(PdfXRef AXref, string AName) : base(AXref, AName)
        {
            PdfArray      FWidths;
            PdfDictionary FFont;

            FFont = new PdfDictionary(AXref);
            AXref.AddObject(FFont);

            AddStrElements(FFont, Generic._String_Table());
            AddIntElements(FFont, Generic._Int_Table());
            FFont.AddItem("BaseFont", new PdfName("Courier-Oblique"));

            FWidths = new PdfArray(AXref, FIXED_WIDTH_ITALIC_W_ARRAY);
            FFont.AddInternalItem("Widths", FWidths);
            SetData(FFont);
        }
コード例 #8
0
        public PdfArial(PdfXRef AXref, string AName) : base(AXref, AName)
        {
            PdfArray      FWidths;
            PdfDictionary FFont;

            FFont = new PdfDictionary(AXref);
            AXref.AddObject(FFont);

            AddStrElements(FFont, Generic._String_Table());
            AddIntElements(FFont, Generic._Int_Table());
            FFont.AddItem("BaseFont", new PdfName("Helvetica"));

            FWidths = new PdfArray(AXref, ARIAL_W_ARRAY);
            FFont.AddInternalItem("Widths", FWidths);
            SetData(FFont);
        }
コード例 #9
0
        private PdfDictionary dicCreateFontDescriptor(PdfXRef AXref, string AName, System.Drawing.Font fntFont)
        {
            PdfDictionary dicFontDescriptor = new PdfDictionary(AXref);

            AXref.AddObject(dicFontDescriptor);
            dicFontDescriptor.AddItem("Type", new PdfName("FontDescriptor"));
            dicFontDescriptor.AddItem("FontName", new PdfName(AName));
            dicFontDescriptor.AddItem("Flags", new PdfNumber(this.nFlag()));
            dicFontDescriptor.AddItem("FontBBox", new PdfArray(AXref, this.aintFontBox()));
            dicFontDescriptor.AddItem("MissingWidth", new PdfNumber((long)this.PS.QS.PY));
            dicFontDescriptor.AddItem("StemV", new PdfNumber(((long)(this.PK.Bold ? 144 : 72))));
            dicFontDescriptor.AddItem("StemH", new PdfNumber(((long)(this.PK.Bold ? 144 : 72))));
            dicFontDescriptor.AddItem("ItalicAngle", new PdfNumber(((long)(this.PK.Italic ? (this.PS.QZ / 10) : 0))));
            dicFontDescriptor.AddItem("CapHeight", new PdfNumber((long)this.PS.R4));
            dicFontDescriptor.AddItem("XHeight", new PdfNumber((long)this.PS.R5));
            dicFontDescriptor.AddItem("Ascent", new PdfNumber((long)this.PS.R1));
            dicFontDescriptor.AddItem("Descent", new PdfNumber((long)this.PS.R2));
            dicFontDescriptor.AddItem("Leading", new PdfNumber((long)this.PS.QS.PX));
            dicFontDescriptor.AddItem("MaxWidth", new PdfNumber((long)this.PS.QS.PZ));
            dicFontDescriptor.AddItem("AvgWidth", new PdfNumber((long)this.PS.QS.PY));
            return(dicFontDescriptor);
        }
コード例 #10
0
 public PdfType1Font(PdfXRef AXref, string AName) : base(AXref, AName)
 {
 }