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<String, String>
becomes a Dictionary<String, String>
.
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<String, String> 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();
}
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…