Tag: itextsharp

使用用户输入文件名保存pdf文件(iTextSharp)

我想允许用户输入自己的文件名,就像保存文件对话框和流一样(例如: Stream s = File.Open(sfdPdf.FileName, FileMode.CreateNew) 这是我的代码: private void btnSave_Click(object sender, EventArgs e) { System.Drawing.Rectangle bounds = this.Bounds; using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height)) { using (Graphics graphics = Graphics.FromImage(bitmap)) { graphics.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size); } bitmap.Save(“Image.jpeg”, ImageFormat.Jpeg); } Document doc = new Document(PageSize.LETTER, bounds.Left, bounds.Right, bounds.Top, bounds.Bottom); PdfWriter wri = PdfWriter.GetInstance(doc, new […]

iTextSharp for PDF – 如何添加文件附件?

我正在使用iTextSharp在C#中创建PDF文档。 我想将另一个文件附加到PDF。 我试图这样做有很多麻烦。 这里的例子显示了一些注释,显然是附件。 这就是我尝试过的: writer.AddAnnotation(its.pdf.PdfAnnotation.CreateFileAttachment(writer, new iTextSharp.text.Rectangle(100,100,100,100), “File Attachment”, its.pdf.PdfFileSpecification.FileExtern(writer, “C:\\test.xml”))); 那么,会发生什么呢?它会在PDF上添加注释(显示为一个小评论语音气球),这是我不想要的。 test.xml显示在Adobe Reader的附件窗格中,但无法读取或保存,并且其文件大小未知,因此可能永远不会正确附加。 有什么建议?

使用iTextSharp从PDF中提取其他元数据

我已经看到使用iTextSharp提取基本元数据(即作者,标题),它通常看起来像这样: var pdfReader = new PdfReader(pdfData); var author = pdfReader.Info[“author”] 但是,在我的情况下,我正在追求更奇特的东西,文档可能包含的额外“高级”元数据。 请原谅油漆亮点,但这里是Adobe Acrobat中的屏幕截图,显示了有问题的数据: 在这种情况下,通过Info字典似乎无法获得此数据。 使用不同的库(TallComponents的PDFKit)公开了这些数据,但我想知道是否有任何办法使用iItext获取它 由于许可限制,我目前正在使用iText 4.1.6,但如果增加所需的function,我不会反对购买5.0.6的商业许可。

使用iTextSharp将数据写入PDF效果很好,但Acrobat Reader在关闭文件时询问“是否要保存更改”

我正在使用iTextSharp 5.3.2.0将信息添加到包含W-2表单的现有PDF文件中。 一切都运行良好,PDF文件在写入浏览器的响应流时看起来很棒; 但是,当用户完成查看PDF时,系统会询问他“在关闭之前是否要将更改保存到’W2.pdf’?” 每次他从网页上查看文档。 在试图缩小问题范围时,我实际上已经删除了所有修改但问题仍在继续。 这是我的代码的简单版本,我的数据写入调用已注释掉: PdfReader pdfReader = new PdfReader(dataSource.ReportTemplate); using(MemoryStream outputStream = new MemoryStream()) using (PdfStamper pdfStamper = new PdfStamper(pdfReader, outputStream)) { //dataSource.DrawDataFields(pdfStamper); pdfStamper.FormFlattening = true; return outputStream; } 在这种情况下,“空”PDF被写入浏览器并且看起来很好,但是当我关闭Acrobat窗口时,我仍然会被问到“你想保存吗”。 此时我认为源PDF文件有问题。 但是,当我将PDF文件的原始字节发送回浏览器时,在使用下面的代码时,我不会被问到“你想保存”的问题。 byte[] bytes = File.ReadAllBytes(dataSource.ReportTemplate); using (MemoryStream outputStream = new MemoryStream()) { outputStream.Write(bytes, 0, bytes.Length); return outputStream; } 我的结论是iTextSharp在打开它并将字节写入流中的过程中对PDF做了一些“坏事”,但我是iTextSharp的新手,很容易丢失一些东西。 FWIW,这是我们正在讨论的Acobat Reader […]

仅从PDF文档中获取字数

我希望以编程方式从pdf文档中获取单词count。 我看过PDFSharp,但它对于我想要做的事情来说是一个非常笨重的。 我无法访问服务器,所以我无法安装acrobat来访问他们的api或任何东西。 我愿意在iTextSharp或其他工具中做到这一点。

itextsharp修剪pdf文档的页面

我有一个pdf文档,其中包含我用c#以编程方式填写的表单字段。 根据三个条件,我需要修剪(删除)该文档中的一些页面。 这可能吗? 条件1:我需要保留第1-4页,但删除第5和第6页 对于条件2:我需要保留1-4页但删除5并保持6 条件3:我需要保留1-5页但删除6

iTextSharp打印gridview

我使用iTextSharp打印网格视图但我遇到了一些问题: 根本没有阿拉伯字符出现。 方向是LTR,而不是RTL。 gridview中的一些列是templatefields(label,imagebutton,…),我无法处理这种情况。 我不会显示所有这些(如删除按钮,…) 代码 : protected void ExportToPDF(GridView gvReport, bool LandScape) { int noOfColumns = 0, noOfRows = 0; DataTable tbl = null; if (gvReport.AutoGenerateColumns) { tbl = gvReport.DataSource as DataTable; // Gets the DataSource of the GridView Control. noOfColumns = tbl.Columns.Count; noOfRows = tbl.Rows.Count; } else { noOfColumns = gvReport.Columns.Count; noOfRows = […]

使用iTextSharp在系统中使用字体

我想用iTextSharp写一些文字。 我正在使用这种方法: var font = BaseFont.CreateFont(BaseFont.TIMES_BOLD, BaseFont.WINANSI, BaseFont.EMBEDDED); 我的问题是:iTextSharp支持系统字体目录中的所有字体吗? 假设我在字体选择器对话框中选择了一个名为“mycoolfont”的字体。 我可以创建一个类似这样的新iTextSharp字体吗? var font = BaseFont.CreateFont(“mycoolfont”, BaseFont.WINANSI, BaseFont.EMBEDDED); overContent.SetFontAndSize(font, fontSize); 更新: 我试过var font = BaseFont.CreateFont(“Verdana”, BaseFont.WINANSI, BaseFont.EMBEDDED); 但得到错误“Verdana”不被itextsharp识别

iTextSharp从字节数组列表中创建pdf

我有一个byte []列表,我希望将其连接成一个字节[],这将是最终的PDf。 在“page = copy.GetImportedPage(new PdfReader(p),i);”我得到一个“对象引用未设置为实例错误。 我不知道发生了什么,我已经检查了每个对象,并且没有空。 关于这个的任何想法,或另一段可以成功的代码?! 我有这个方法: 编辑 public static byte[] concatAndAddContent(List pdf) { byte [] todos; using(MemoryStream ms = new MemoryStream()) { Document doc = new Document(); doc.Open(); PdfCopy copy = new PdfCopy(doc, ms); PdfCopyFields copy2 = new PdfCopyFields(ms); PdfReader reader; foreach (byte[] p in pdf) { reader = new PdfReader(p); int […]

iTextSharp HTMLWorker ParseHTML Tablestyle和PDFStamper

您好我已成功使用HTMLWorker使用asp.NET / C#转换gridview。 (1)我已经对结果表应用了一些有限的样式,但是无法看到如何将tablestyle应用于实例网格线或应用其他格式样式,例如特定列的大列宽。 (2)我实际上想把这个文本放到一个包含徽标等的预先存在的模板上。我之前使用过PDF Stamper但是看不出我如何同时使用PDFStamper和HTMLWorker。 HTMLWorker需要一个实现iDocListener的Document ……但这似乎与使用PDFStamper兼容。 我想我正在寻找的是一种创建PDFStamper,写标题等的方法,然后从网格中添加解析的HTML。 另一个问题是解析的内容不与页面上的其他内容交互。 例如,下面我向页面添加一个标题块。 而不是从它下面开始,解析的HTML写在顶部。 如何将解析的HTML内容与PDF文档中的其余内容进行放置/交互? 在此先感谢Rob 这是我已经拥有的代码 Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 30f, 0f); HTMLWorker htmlWorker = new HTMLWorker(pdfDoc); StyleSheet styles = new StyleSheet(); styles.LoadTagStyle(“th”, “size”, “12px”); styles.LoadTagStyle(“th”, “face”, “helvetica”); styles.LoadTagStyle(“span”, “size”, “10px”); styles.LoadTagStyle(“span”, “face”, “helvetica”); styles.LoadTagStyle(“td”, “size”, “10px”); styles.LoadTagStyle(“td”, “face”, “helvetica”); htmlWorker.SetStyleSheet(styles); PdfWriter.GetInstance(pdfDoc, HttpContext.Current.Response.OutputStream); […]