标签: itextsharp

iTextSharp自定义纸张尺寸

我正在使用iTextsharp库来创建PDF文件.我可以像这样声明A4风景纸:

 Dim pdfTable As New PdfPTable(9)
pdfTable.WidthPercentage = 100
Dim pdfDoc As New Document(PageSize.A4.Rotate())
Run Code Online (Sandbox Code Playgroud)

我想知道如何手动设置pdfTable或A4高度的高度.因为底部留下了更多的边距,我需要在该边缘放置一些文字.现在,我在底部放了一行文字,这条线被推到了新的页面.

Q1:如何覆盖iTextsharp提供的A4纸的高度?

Q2:如何创建自定义尺寸纸张,例如宽度= 29厘米,高度= 22厘米?

谢谢.

vb.net itextsharp

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

放置生成的pdf文件而不将其保存在服务器上

我有代码(在.ashx文件中),从PDF模板生成PDF文件.生成的pdf通过名称和代码进行个性化.我使用iTextSharp来做到这一点.

这是代码:

using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
    using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
    {
        var pdfReader = new PdfReader(existingFileStream);
        var stamper = new PdfStamper(pdfReader, newFileStream);

        var form = stamper.AcroFields;
        var fieldKeys = form.Fields.Keys;

        form.SetField("Name", name);
        form.SetField("Code", code);

        stamper.FormFlattening = true;

        stamper.Close();
        pdfReader.Close();
    }

context.Response.AppendHeader("content-disposition", "inline; filename=zenith_coupon.pdf");
context.Response.TransmitFile(fileNameNew);
context.Response.ContentType = "application/pdf";
Run Code Online (Sandbox Code Playgroud)

这有效,但它将文件保存在服务器上.我不想这样做,因为会有很多人下载PDF文件,服务器很快就会满了.

所以我的问题是,如何使用iTextSharp生成PDF而不保存并将其发送给用户?

c# asp.net pdf-generation itextsharp

2
推荐指数
1
解决办法
3038
查看次数

如何使用iTextSharp创建pdfformfields?

我正在使用iTextSharp和CSharp来创建pdf.我需要添加无法编辑的复选框,单选按钮和下拉列表等表单字段.

我用过这个..

FileStream pdffile = new FileStream(path + "/Pdf/tes.pdf",FileMode.Create);
PdfWriter writer = PdfWriter.GetInstance(doc, pdffile);
doc.Open(); 
Rectangle rect = new Rectangle(100, 100, 100, 100);
RadioCheckField checkbox = new RadioCheckField(writer, rect, "bhjabsdf", "on");
checkbox.CheckType = RadioCheckField.TYPE_CHECK;
PdfFormField field = checkbox.CheckField;
writer.AddAnnotation(field);
doc.Close();
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我也读过PdfStamper.但我正在创建一个新的pdf,而不是改变现有的.所以我不知道我是否可以使用PdfStamper

谢谢..

编辑:

private void CreateRadioButton(PdfWriter writer, PdfContentByte cb,Font font)
    {
        Rectangle rect;
        PdfFormField field;
        PdfFormField radiogroup = PdfFormField.CreateRadioButton(writer, true);
        radiogroup.FieldName = "language";
        RadioCheckField radio;
        int x = 20;
        for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

c# asp.net itextsharp

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

如何在itextSharp中检测表启动?

我想将pdf转换为csv文件.pdf文件具有表格格式的数据,第一行作为标题.我已达到可以从单元格中提取文本的级别,比较表格中的文本基线并检测换行符,但我需要比较表格边框以检测表格的开始.我不知道如何检测和比较PDF中的行.谁能帮我?

谢谢!!!

csv pdf itextsharp pdf-parsing pdf-reader

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

右键将部分块与iTextSharp对齐

我是iTextSharp的新手,我正在尝试创建PDF.只是一个简单的例子.如果我做这样的事情:

Paragraph p = new Paragraph();

p.Add(new Chunk("789456|Test", f5));
newDocument.Add(p);
p.Add(new Chunk("456|Test", f5));
newDocument.Add(p);
p.Add(new Chunk("12345|Test", f5));
newDocument.Add(p);
Run Code Online (Sandbox Code Playgroud)

我得到这个结果:

789456|Test
456|Test
12345|Test
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能正确对齐我的块中的部分文本.像这样:

789456|Test
   456|Test
 12345|Test
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c# itextsharp

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

PdfPCell NoWrap = true溢出PdfPTable的宽度

当我设置PdfPCell的属性时NoWrap = true,如果单元格内的文本比表格宽,它会溢出表格的宽度.我有一个36f的保证金,我设置了table.WidthPercentage = 100f,这工作正常.但是如果我在一个单元格中放入一长串文本NoWrap = true,它会一直到文档的边缘.有没有办法让单元格中的文本超出表格的宽度?

这是我的代码:

customFont = FontFactory.GetFont(defaultFontName, 22, Font.BOLD);
string vehicleName = vehicle.Name;
Phrase vName = new Phrase(vehicleName, customFont);
vName.Leading = 22f;
table = new PdfPTable(1);
table.SpacingAfter = 10f;
table.WidthPercentage = 100f;
cell = new PdfPCell(vName);
cell.Border = 1;
cell.HorizontalAlignment = 1;
cell.NoWrap = true;
cell.Padding = 0;
table.AddCell(cell);
document.Add(table);
Run Code Online (Sandbox Code Playgroud)

当这显示在文档上时,它看起来像这样:

在此输入图像描述

如您所见,文本溢出了单元格的边框.我想我只是假设如果单元格是NoWrap,它会填满单元格,然后在它无法再显示时停止.也许那是不可能的.

或者关于如何制作一个永不包裹到更多线条的单行标题的任何其他想法?

c# itextsharp

2
推荐指数
1
解决办法
9519
查看次数

如何在iTextSharp中显示单元格的底部和顶部边框?

我是iTextSharp(用于C#的iText移植)的新手,我对跟随情况感到疯狂.

在我正在处理的应用程序中,我有一个以这种方式定义的表:

table = new PdfPTable(2);
table.SetWidths(new int[] { 100, 500 });
//table.WidthPercentage = 95;

table.AddCell(new PdfPCell(new Phrase("Description:")) { Border = PdfPCell.BOTTOM_BORDER, Padding = 5, MinimumHeight = 50, PaddingTop = 15 });

table.AddCell(new PdfPCell(new Phrase(currentVuln.ShortSummary)) { Border = PdfPCell.BOTTOM_BORDER, Padding = 5, MinimumHeight = 50, PaddingTop = 15 });
_document.Add(table);
Run Code Online (Sandbox Code Playgroud)

你可以看到一个新的单元格被添加到表格中,创建它将传递给它的字符串传递给它,并在传递一些格式设置之后.

例如:

table.AddCell(new PdfPCell(new Phrase("Description:")) { Border = PdfPCell.BOTTOM_BORDER, Padding = 5, MinimumHeight = 50, PaddingTop = 15 });
Run Code Online (Sandbox Code Playgroud)

它添加一个新单元格,显示字符串描述,并应用{...}块中的图形设置.

我的第一个疑问是:这个语法究竟是什么?它是一个C#语法还是与iTextSharp相关的东西?

我正在疯狂地了解在应用此设置时究竟发生了什么,特别是在评估此部分时:Border = PdfPCell.BOTTOM_BORDER

1)Border是一个进入 …

.net c# asp.net itext itextsharp

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

从PdfWriter获取字节数组,写入iTextSharp中的内存流

我有一个方法,它具有以下内容:

  • 字节数组,这是一个PDF文件
  • 一个"从"大小
  • 一个"到"的大小

这个想法是它将具有特定大小的PDF文件转换为另一个大小.我想返回一个字节数组,并希望将整个内容保留在内存中.

我在构造函数(outPDF)中使用memorystream创建PdfWriter ,然后进行转换.之后,我想说outBytes = outPDF.ToArray();.

我尝试将此代码放在三个位置,请参阅代码中的A,B和C位置.在位置A,内存流的长度仅为255,这不起作用.我的猜测是doc.Close()必须先跑.在B和C位置,流被关闭,无法访问.

我的问题是:如何从PdfWriter获取字节数组,在iTextSharp中写入内存流

我的代码:

public static byte[] ConvertPdfSize(byte[] inPDF, LetterSize fromSize, LetterSize toSize)
        {
            if (fromSize != LetterSize.A4 || toSize != LetterSize.Letter)
            {
                throw new ArgumentException("Function only supports from size A4 to size letter");
            }

            MemoryStream outPDF = new MemoryStream();
            byte[] outBytes;
            using (PdfReader pdfr = new PdfReader(inPDF))
            {
                using (Document doc = new Document(PageSize.LETTER))
                {
                    Document.Compress = true;

                    PdfWriter writer = PdfWriter.GetInstance(doc, outPDF);
                    doc.Open(); …
Run Code Online (Sandbox Code Playgroud)

c# bytearray stream itextsharp c#-4.0

2
推荐指数
1
解决办法
8464
查看次数

如何在C#中从签名的PDF获取签名值?

如何从签名的PDF文件中获取签名值?我可以从签名中获取除其值以外的所有其他数据。有什么办法可以在C#中获得它吗?

PdfPKCS7 pk;
PdfReader reader = new PdfReader(PdfFilename);
AcroFields af = reader.AcroFields;

var names = af.GetSignatureNames();
foreach (string name in names)
{
    pk = af.VerifySignature(name);

    var CN_signer = iTextSharp.text.pdf.security.CertificateInfo.GetSubjectFields(pk.SigningCertificate).GetField("CN");
    var C_signer = iTextSharp.text.pdf.security.CertificateInfo.GetSubjectFields(pk.SigningCertificate).GetField("C");
    var CN_issuer = iTextSharp.text.pdf.security.CertificateInfo.GetIssuerFields(pk.SigningCertificate).GetField("CN");
    var OU_issuer = iTextSharp.text.pdf.security.CertificateInfo.GetIssuerFields(pk.SigningCertificate).GetField("OU");
    var O_issuer= iTextSharp.text.pdf.security.CertificateInfo.GetIssuerFields(pk.SigningCertificate).GetField("O");
    var C_issuer = iTextSharp.text.pdf.security.CertificateInfo.GetIssuerFields(pk.SigningCertificate).GetField("C");
    var nr_serial = pk.SigningCertificate.SerialNumber;
    var date = pk.SignDate.ToString();
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

c# pdf itextsharp digital-signature

2
推荐指数
1
解决办法
3118
查看次数

如何在C#中获取itextSharp表格单元格的高度?

我想获得跟随细胞的高度.

cell_logo

cell_title

cell_version

cell_dateTime

cell_appVersion

但是cell_name.Height返回0.我怎样才能得到这些细胞的实际高度?

PdfPTable table = new PdfPTable(1);
        table.TotalWidth = doc.PageSize.Width - doc.LeftMargin - doc.RightMargin;            
        table.LockedWidth = true;        

        PdfPCell cell_logo = new PdfPCell(imgLog);
        cell_logo.HorizontalAlignment = 1;
        cell_logo.BackgroundColor = new BaseColor(System.Drawing.Color.White);
        cell_logo.PaddingBottom = 20;
        cell_logo.PaddingTop = 50;

        PdfPCell cell_title = new PdfPCell(docName);
        cell_title.HorizontalAlignment = 1;
        cell_title.BackgroundColor = new BaseColor(System.Drawing.Color.White);
        cell_title.PaddingBottom = 50;

        PdfPCell cell_versions = new PdfPCell(ssVersions);
        cell_versions.BackgroundColor = new BaseColor(System.Drawing.Color.White);            
        cell_versions.PaddingTop = 5;
        cell_versions.PaddingBottom = 5;

        PdfPCell cell_dateTime = new PdfPCell(time);
        cell_dateTime.BackgroundColor …
Run Code Online (Sandbox Code Playgroud)

c# pdf height cell itextsharp

2
推荐指数
1
解决办法
3142
查看次数