Set Metadata in iTextSharp

后端 未结 3 1580
说谎
说谎 2020-12-18 03:28

I am developing an application and i use the iTextSharp library.

I am also reading the iText in action from Manning so i can get references.

In Chapter 12 it

3条回答
  •  别那么骄傲
    2020-12-18 03:49

    Conversion from Java to C# is usually pretty straightforward. By convention, Java properties use get and set prefixes so to convert to C# you just need to drop the prefix and turn it into a .Net getter/setter call. getInfo() becomes Info and setMoreInfo(info) becomes MoreInfo = info. Then you just need to convert the native Java types to their equivalent C# types. In this case the Java FileOutputStream becomes a .Net FileStream and the HashMap becomes a Dictionary.

    Lastly, I've updated the code to reflect recent changes to iTextSharp that now (as of 5.1.1.0) implement IDisposable now.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.IO;
    using iTextSharp.text;
    using iTextSharp.text.pdf;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                string workingFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                string inputFile = Path.Combine(workingFolder, "Input.pdf");
                string outputFile = Path.Combine(workingFolder, "Output.pdf");
    
                PdfReader reader = new PdfReader(inputFile);
                using(FileStream fs = new FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.None)){
                    using (PdfStamper stamper = new PdfStamper(reader, fs))
                    {
                        Dictionary info = reader.Info;
                        info.Add("Title", "Hello World stamped");
                        info.Add("Subject", "Hello World with changed metadata");
                        info.Add("Keywords", "iText in Action, PdfStamper");
                        info.Add("Creator", "Silly standalone example");
                        info.Add("Author", "Also Bruno Lowagie");
                        stamper.MoreInfo = info;
                        stamper.Close();
                    }
                }
    
                this.Close();
            }
        }
    }
    

提交回复
热议问题