SetLocalDestination() public method

Sets a local destination for this Chunk.
public SetLocalDestination ( string name ) : Chunk
name string the name for this destination
return Chunk
Exemplo n.º 1
0
 /**
  * Applies the properties of the Anchor to a Chunk.
  * @param chunk			the Chunk (part of the Anchor)
  * @param notGotoOK		if true, this chunk will determine the local destination
  * @param localDestination	true if the chunk is a local goto and the reference a local destination
  * @return	the value of notGotoOK or false, if a previous Chunk was used to determine the local destination
  */
 virtual protected bool ApplyAnchor(Chunk chunk, bool notGotoOK, bool localDestination)
 {
     if (name != null && notGotoOK && !chunk.IsEmpty())
     {
         chunk.SetLocalDestination(name);
         notGotoOK = false;
     }
     if (localDestination)
     {
         chunk.SetLocalGoto(reference.Substring(1));
     }
     else if (reference != null)
     {
         chunk.SetAnchor(reference);
     }
     return(notGotoOK);
 }
Exemplo n.º 2
0
        public static Chunk GetChunk(Properties attributes)
        {
            Chunk chunk = new Chunk();

            chunk.Font = FontFactory.GetFont(attributes);
            String value;

            value = attributes[ElementTags.ITEXT];
            if (value != null) {
                chunk.Append(value);
            }
            value = attributes[ElementTags.LOCALGOTO];
            if (value != null) {
                chunk.SetLocalGoto(value);
            }
            value = attributes[ElementTags.REMOTEGOTO];
            if (value != null) {
                String page = attributes[ElementTags.PAGE];
                if (page != null) {
                    chunk.SetRemoteGoto(value, int.Parse(page));
                }
                else {
                    String destination = attributes[ElementTags.DESTINATION];
                    if (destination != null) {
                        chunk.SetRemoteGoto(value, destination);
                    }
                }
            }
            value = attributes[ElementTags.LOCALDESTINATION];
            if (value != null) {
                chunk.SetLocalDestination(value);
            }
            value = attributes[ElementTags.SUBSUPSCRIPT];
            if (value != null) {
                chunk.SetTextRise(float.Parse(value, System.Globalization.NumberFormatInfo.InvariantInfo));
            }
            value = attributes[Markup.CSS_KEY_VERTICALALIGN];
            if (value != null && value.EndsWith("%")) {
                float p = float.Parse(value.Substring(0, value.Length - 1), System.Globalization.NumberFormatInfo.InvariantInfo) / 100f;
                chunk.SetTextRise(p * chunk.Font.Size);
            }
            value = attributes[ElementTags.GENERICTAG];
            if (value != null) {
                chunk.SetGenericTag(value);
            }
            value = attributes[ElementTags.BACKGROUNDCOLOR];
            if (value != null) {
                chunk.SetBackground(Markup.DecodeColor(value));
            }
            return chunk;
        }
Exemplo n.º 3
0
 /**
  * Applies the properties of the Anchor to a Chunk.
  * @param chunk			the Chunk (part of the Anchor)
  * @param notGotoOK		if true, this chunk will determine the local destination
  * @param localDestination	true if the chunk is a local goto and the reference a local destination
  * @return	the value of notGotoOK or false, if a previous Chunk was used to determine the local destination
  */
 protected bool ApplyAnchor(Chunk chunk, bool notGotoOK, bool localDestination) {
     if (name != null && notGotoOK && !chunk.IsEmpty()) {
         chunk.SetLocalDestination(name);
         notGotoOK = false;
     }
     if (localDestination) {
         chunk.SetLocalGoto(reference.Substring(1));
     } else if (reference != null)
         chunk.SetAnchor(reference);
     return notGotoOK;
 }
Exemplo n.º 4
0
// ===========================================================================
    public void Write(Stream stream) {
      // step 1
      using (Document document = new Document()) {
        // step 2
        PdfWriter.GetInstance(document, stream);
        // step 3
        document.Open();
        // step 4
        // Create a local destination at the top of the page
        Paragraph p = new Paragraph();
        Chunk top = new Chunk("Country List", FilmFonts.BOLD);
        top.SetLocalDestination("top");
        p.Add(top);
        document.Add(p);
        // create an external link
        Chunk imdb = new Chunk("Internet Movie Database", FilmFonts.ITALIC);
        imdb.SetAnchor(new Uri("http://www.imdb.com/"));
        p = new Paragraph(
          "Click on a country, and you'll get a list of movies, containing links to the "
        );
        p.Add(imdb);
        p.Add(".");
        document.Add(p);
        // Create a remote goto
        p = new Paragraph("This list can be found in a ");
        Chunk page1 = new Chunk("separate document");
        page1.SetRemoteGoto("movie_links_1.pdf", 1);
        p.Add(page1);
        p.Add(".");
        document.Add(p);
        document.Add(Chunk.NEWLINE);
        
        var SQL =
@"SELECT DISTINCT mc.country_id, c.country, count(*) AS c 
FROM film_country c, film_movie_country mc
WHERE c.id = mc.country_id 
GROUP BY mc.country_id, country ORDER BY c DESC";        
        // Create a database connection and statement
        using (var c =  AdoDB.Provider.CreateConnection()) {
          c.ConnectionString = AdoDB.CS;
          using (DbCommand cmd = c.CreateCommand()) {
            cmd.CommandText = SQL;        
            c.Open();            
            using (var r = cmd.ExecuteReader()) {
              while (r.Read()) {
              // add country with remote goto
                Paragraph country = new Paragraph(r["country"].ToString());
                country.Add(": ");
                Chunk link = new Chunk(string.Format(
                  "{0} movies", Convert.ToInt32(r["c"])
                ));
                link.SetRemoteGoto(
                  "movie_links_1.pdf", r["country_id"].ToString()
                );
                country.Add(link);
                document.Add(country);
              }
            }
          }
        }      
        document.Add(Chunk.NEWLINE);
        // Create local goto to top
        p = new Paragraph("Go to ");
        top = new Chunk("top");
        top.SetLocalGoto("top");
        p.Add(top);
        p.Add(".");
        document.Add(p);        
      }
    }
Exemplo n.º 5
0
 /**
 * Create an index entry.
 *
 * @param text  The text for the Chunk.
 * @param in1   The first level.
 * @param in2   The second level.
 * @param in3   The third level.
 * @return Returns the Chunk.
 */
 public Chunk Create(String text, String in1, String in2,
         String in3)
 {
     Chunk chunk = new Chunk(text);
     String tag = "idx_" + (indexcounter++);
     chunk.SetGenericTag(tag);
     chunk.SetLocalDestination(tag);
     Entry entry = new Entry(in1, in2, in3, tag, this);
     indexentry.Add(entry);
     return chunk;
 }
Exemplo n.º 6
0
 /**
 * Create an index entry.
 *
 * @param text  The text.
 * @param in1   The first level.
 * @param in2   The second level.
 * @param in3   The third level.
 */
 public void Create(Chunk text, String in1, String in2,
         String in3)
 {
     String tag = "idx_" + (indexcounter++);
     text.SetGenericTag(tag);
     text.SetLocalDestination(tag);
     Entry entry = new Entry(in1, in2, in3, tag, this);
     indexentry.Add(entry);
 }
Exemplo n.º 7
0
        private static void MergePDFs(IList fileList, string destinationfile)
        {
            var document = new Document();
            try {
                var writer = PdfWriter.GetInstance(document, new FileStream(destinationfile, FileMode.Create));
                document.Open();

                foreach (string filename in fileList) {
                    var reader = new PdfReader(filename);
                    for (int i = 0; i++ < reader.NumberOfPages; ) {
                        document.SetPageSize(reader.GetPageSizeWithRotation(1));
                        document.NewPage();

                        if (i == 1) {
                            var fileRef = new Chunk(" ");
                            fileRef.SetLocalDestination(filename);
                            document.Add(fileRef);
                        }

                        if (reader.GetPageRotation(i) == 90 || reader.GetPageRotation(i) == 270) {
                            writer.DirectContent.AddTemplate(writer.GetImportedPage(reader, i), 0, -1f, 1f, 0, 0,
                            reader.GetPageSizeWithRotation(i).Height);
                        }
                        else
                            writer.DirectContent.AddTemplate(writer.GetImportedPage(reader, i), 1f, 0, 0, 1f, 0, 0);
                    }
                }
            }
            catch (Exception e) { throw e; }
            finally { document.Close(); }
        }
Exemplo n.º 8
0
        // ---------------------------------------------------------------------------    
        /**
         * Creates a PDF document.
         */
        public byte[] CreatePdf()
        {
            using (MemoryStream ms = new MemoryStream())
            {
                // step 1
                using (Document document = new Document())
                {
                    // step 2
                    PdfWriter.GetInstance(document, ms);
                    // step 3
                    document.Open();
                    // step 4
                    // Add text with a local destination
                    Paragraph p = new Paragraph();
                    Chunk top = new Chunk("Country List", FilmFonts.BOLD);
                    top.SetLocalDestination("top");
                    p.Add(top);
                    document.Add(p);
                    // Add text with a link to an external URL
                    Chunk imdb = new Chunk("Internet Movie Database", FilmFonts.ITALIC);
                    imdb.SetAction(new PdfAction(new Uri("http://www.imdb.com/")));
                    p = new Paragraph(
                      @"Click on a country, and you'll get a list of movies, 
            containing links to the "
                    );
                    p.Add(imdb);
                    p.Add(".");
                    document.Add(p);
                    // Add text with a remote goto
                    p = new Paragraph("This list can be found in a ");
                    Chunk page1 = new Chunk("separate document");
                    page1.SetAction(new PdfAction(RESULT1, 1));

                    p.Add(page1);
                    p.Add(".");
                    document.Add(p);
                    document.Add(Chunk.NEWLINE);
                    // Get a list with countries from the database      
                    var SQL =
          @"SELECT DISTINCT mc.country_id, c.country, count(*) AS c 
FROM film_country c, film_movie_country mc 
WHERE c.id = mc.country_id
GROUP BY mc.country_id, country 
ORDER BY c DESC";
                    using (var c = AdoDB.Provider.CreateConnection())
                    {
                        c.ConnectionString = AdoDB.CS;
                        using (DbCommand cmd = c.CreateCommand())
                        {
                            cmd.CommandText = SQL;
                            c.Open();
                            using (var r = cmd.ExecuteReader())
                            {
                                while (r.Read())
                                {
                                    Paragraph country = new Paragraph(r["country"].ToString());
                                    country.Add(": ");
                                    Chunk link = new Chunk(string.Format(
                                      "{0} movies", r["c"].ToString()
                                    ));
                                    link.SetAction(PdfAction.GotoRemotePage(
                                      RESULT1,
                                      r["country_id"].ToString(),
                                      false,
                                      true
                                    ));
                                    country.Add(link);
                                    document.Add(country);
                                }
                            }
                        }
                    }
                    document.Add(Chunk.NEWLINE);
                    // Add text with a local goto
                    p = new Paragraph("Go to ");
                    top = new Chunk("top");
                    top.SetAction(PdfAction.GotoLocalPage("top", false));
                    p.Add(top);
                    p.Add(".");
                    document.Add(p);
                }
                return ms.ToArray();
            }
        }
        private void WriteWorkItems(string chapterText, ref int chapterNumber, IEnumerable<ReleaseNoteWorkItem> workItems)
        {
            if (!workItems.Any())
                return;

            _document.NewPage();

            string chapterTitle = string.Format(CultureInfo.InvariantCulture, "{0}. {1}", chapterNumber++, chapterText);

            var chapter = new Chunk(chapterTitle, _chapterFont);
            var paragraph = new Paragraph(20f, chapter);
            chapter.SetLocalDestination(_writer.PageNumber.ToString(CultureInfo.InvariantCulture));

            Bookmarks.Add(new Bookmark(chapterTitle, _writer.PageNumber));

            _document.Add(paragraph);

            _table = new PdfPTable(4);
            _table.SpacingBefore = 10f;
            _table.WidthPercentage = 100;

            _table.DefaultCell.BorderColor = _headerColor;
            _table.DefaultCell.BorderWidth = 100;
            _table.DefaultCell.Padding = 100;

            _table.SetWidths(new[] { 18f, 35f, 35f, 12f });
            _table.DefaultCell.VerticalAlignment = Element.ALIGN_TOP;

            WriteTableHeader();

            foreach (var grouping in workItems.OrderBy(x => x.Area).GroupBy(x => x.Area))
            {
                foreach (var workItem in grouping.OrderBy(x => x.WorkItemId))
                {
                    WriteTableRow(workItem);
                }
            }

            _document.Add(_table);
        }