标签: itextsharp

使用iTextsharp检查pdf中的复选框字段的常用方法是什么?

我正在使用iTextsharp填充可填写pdf的数据.pdf表单中有n个复选框.我已使用"是"或"否"设置复选框的值.这很好用.但是有些复选框不能以这种方式工作; 相反,我需要使用1或0来使其工作.那么任何人都可以帮助我使用iTextSharp检查/取消选中pdf复选框的常用方法是什么?

提前致谢,

白雪公主

c# pdf itextsharp

7
推荐指数
2
解决办法
2万
查看次数

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")));
Run Code Online (Sandbox Code Playgroud)

那么,会发生什么呢?它会在PDF上添加注释(显示为一个小注释语音气球),这是我不想要的.test.xml显示在Adobe Reader的附件窗格中,但无法读取或保存,并且其文件大小未知,因此可能永远不会正确附加.

有什么建议?

c# pdf pdf-generation itext itextsharp

6
推荐指数
1
解决办法
1万
查看次数

使用itextsharp从Pdf文件中提取文本和文本矩形坐标

我正在尝试从PDF文件中获取所有单词及其位置坐标.我成功使用了Acrobat API .NET.现在,我正在尝试使用免费API获得相同的结果,例如iTextSharp(.NET版本).我可以得到文本(逐行)PRTokeniser,但我不知道如何获取行的坐标,更不用说每个单词了.

.net pdf itextsharp

6
推荐指数
2
解决办法
2万
查看次数

iTextSharp正在生成一个损坏的PDF

下面的代码片段返回一个损坏的PDF文档,但是如果我返回mergedDocument,它总是返回一个有效的PDF.mergedDocument基于我使用Word创建的PDF文件,而完成的文档完全以编程方式生成.代码"有效",因为它不会抛出异常.为什么iTextSharp会创建一个损坏的PDF?

byte[] completedDocument = null;            
using (MemoryStream streamCompleted = new MemoryStream())
{
    using (Document document = new Document())
    {                    
        PdfCopy copy = new PdfCopy(document, streamCompleted);
        document.Open();
        copy.Open();                    

        foreach (var item in eventItems)
        {
            byte[] mergedDocument = null;
            PdfReader reader = new PdfReader(pdfTemplates[item.DataTokens[NotifyTokenType.OrganisationID]]);
            using (MemoryStream streamTemplate = new MemoryStream())
            {
                using (PdfStamper stamper = new PdfStamper(reader, streamTemplate))
                {
                    foreach (var token in item.DataTokens)
                    {
                        if (stamper.AcroFields.Fields.Any(fld => fld.Key == token.Key.ToString()))
                        {
                            stamper.AcroFields.SetField(token.Key.ToString(), token.Value);
                        }
                    }
                    stamper.FormFlattening = true;
                    stamper.Writer.CloseStream = false; …
Run Code Online (Sandbox Code Playgroud)

.net c# itext itextsharp

6
推荐指数
1
解决办法
6957
查看次数

itextsharp:如果没有设置行的边框底部,如何显示具有属性HeaderRows = 1的表的底线?

我使用了最后一个版本的itextsharp.

我使用属性HeaderRows = 1,这样如果有一个分页符,标题行将再次出现在下一页.

然后我们有内容的行,边框样式没有底线,如下所示:

 PdfPCell cell1 = null;
 cell1 = new PdfPCell(new Phrase(string.Format("{0}", c1), fn));
 cell1.Border = Rectangle.RIGHT_BORDER | Rectangle.LEFT_BORDER;
Run Code Online (Sandbox Code Playgroud)

如果存在分页,则不会显示表格的行底部,这不符合逻辑.即使内容行没有底部/顶部边框,PdfPTable本身也应该有边框(事实上它在代码中没有).

有任何想法吗?谢谢.

.net c# itextsharp

6
推荐指数
1
解决办法
3521
查看次数

iTextSharp生成PDF:如何将pdf发送到客户端并添加提示?

我使用iTextSharp生成了一个pdf,当它创建时,它会自动保存在我的代码中提供的位置,而不是在客户端的服务器上,当然也没有告诉用户任何东西.

我需要将它发送给客户端,我需要提示一个对话框询问用户他想要保存他的pdf的位置.

我该怎么办?

这是我的pdf代码:

using (MemoryStream myMemoryStream = new MemoryStream())
{
    Document document = new Document();
    PdfWriter PDFWriter = PdfWriter.GetInstance(document, myMemoryStream);

    document.AddHeader("header1", "HEADER1");


    document.Open();

      //..........

    document.Close();

    byte[] content = myMemoryStream.ToArray();

    // Write out PDF from memory stream.
    using (FileStream fs =      File.Create(HttpContext.Current.Server.MapPath("~\\report.pdf")))
    {
        fs.Write(content, 0, (int)content.Length);
    }
Run Code Online (Sandbox Code Playgroud)

编辑

这是我想要http://examples.extjs.eu/?ex=download的结果示例

感谢您的回复,我修改了我的代码:

HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.AppendHeader( "Content-Disposition", "attachment; filename=test.pdf");


using (MemoryStream myMemoryStream = new MemoryStream())
{    
Document document = new Document();    
PdfWriter PDFWriter = PdfWriter.GetInstance(document, myMemoryStream);

document.AddHeader("Content-Disposition", "attachment; filename=wissalReport.pdf");

document.Open(); …
Run Code Online (Sandbox Code Playgroud)

c# pdf extjs prompt itextsharp

6
推荐指数
2
解决办法
3万
查看次数

使用iTextSharp文本的合理性如何?

有一段代码如下:

 var workStream = new MemoryStream();
 var doc = new Document(PageSize.LETTER, 10, 10, 42, 35);
 PdfWriter.GetInstance(doc, workStream).CloseStream = false;
 doc.Open();

 var builder = new StringBuilder();
 builder.Append("MY LONG HTML TEXT");
 var parsedHtmlElements = HTMLWorker.ParseToList(new StringReader(builder.ToString()), null);

 foreach (var htmlElement in parsedHtmlElements)
       doc.Add(htmlElement);

doc.Close();

byte[] byteInfo = workStream.ToArray();
workStream.Write(byteInfo, 0, byteInfo.Length);
workStream.Position = 0;
return new FileStreamResult(workStream, "application/pdf")
Run Code Online (Sandbox Code Playgroud)

并且有一个问题 - 如何使pdf合理化?有什么方法可以快速做到吗?

c# itextsharp

6
推荐指数
1
解决办法
1万
查看次数

使用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;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,"空"PDF被写入浏览器并且看起来不错,但是当我关闭Acrobat窗口时,我仍然会被问到"你想保存吗".

在这一点上,我认为源PDF文件有问题.但是,当我将PDF文件的原始字节发送回浏览器时,在使用下面的代码时,我不会被问到"你想保存"的问题.

byte[] bytes = File.ReadAllBytes(dataSource.ReportTemplate);

using (MemoryStream outputStream = new MemoryStream())
{
    outputStream.Write(bytes, 0, bytes.Length);
    return outputStream;
}
Run Code Online (Sandbox Code Playgroud)

我的结论是iTextSharp在打开它并将字节写入流中的过程中对PDF做了一些"坏事",但我是iTextSharp的新手,很容易丢失一些东西.

FWIW,这是我们正在讨论的Acobat Reader 10.1.4.

编辑:用作模板的原始PDF大小约为80K.如果我查看通过浏览器流式传输的临时文件,iTextSharp编写的PDF文件大约为150K.但是,当我对Acrobat Reader提出的"保存更改"问题回答"是"时,生成的文件再次大约为80K.iTextSharp肯定会对这个文件做一些意想不到的事情.

c# pdf-generation itextsharp

6
推荐指数
1
解决办法
6064
查看次数

用unicode字符填写pdf表单

我试图用c#插入一些unicode字符(阿拉伯语)到PDF格式我使用iTextSharp库但是当我插入字符并在PDF文件中保存字符时,unicode字符不会显示,直到我双击字符的位置应该出现.

string pdfTemplate = @"c:\po.pdf";
string newFile = @"g:\test\completed_fw4.pdf";
PdfReader pdfReader = new PdfReader(pdfTemplate);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create));
AcroFields pdfFormFields = pdfStamper.AcroFields;
pdfFormFields.SetField("position", TextBox1.Text);
pdfStamper.FormFlattening = false;
// close the pdf
pdfStamper.Close(); 
Run Code Online (Sandbox Code Playgroud)

c# unicode itextsharp

6
推荐指数
1
解决办法
5352
查看次数

无法访问pdf生成中的封闭流

当我尝试使用具有多个表的iTextSharp构建PDF文件时,我收到以下错误消息:

无法访问封闭的Stream.

这是我的代码:

//Create a byte array that will eventually hold our final PDF
Byte[] bytes;

List<TableObject> myTables = getTables();
TableObject currentTable = new TableObject();

//Boilerplate iTextSharp setup here
//Create a stream that we can write to, in this case a MemoryStream
using (MemoryStream ms = new MemoryStream())
{
    //Create an iTextSharp Document which is an abstraction of a PDF but **NOT** a PDF
    using (Document doc = new Document(PageSize.A4, 10f, 10f, 10f, 0f))
    {
        foreach (TableObject to in myTables) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net itextsharp

6
推荐指数
2
解决办法
7071
查看次数

标签 统计

itextsharp ×10

c# ×9

pdf ×4

.net ×3

itext ×2

pdf-generation ×2

asp.net ×1

extjs ×1

prompt ×1

unicode ×1