标签: itextsharp

iTextSharp并将一些数据移动到下一页

我正在使用iTextSharp创建发票.这显示很好,但有时,当发票项目的数量较大时,汇总部分(显示小计,税,​​折扣,总计等)将被拆分.一些显示在当前页面中,一些显示在下一页.我想将整个摘要部分移到下一页,如果剩下的当前高度还不够.

但是,要做到这一点,我需要知道剩余多少页面高度(在我当前的页面内容渲染之后).我想知道是否有人知道如何计算页面的当前左高度?或者,如果pdfPTable中有一个属性,可能会强制表格作为一个整体打印出来,不要让它分割成多个页面!我想如果第二个选项可用,那将很容易.

总之,我需要知道是否可以计算剩余页面高度,以及是否可以强制表格不分割在多个页面上.

谢谢.Sameers

itextsharp pdfptable

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

使用证书存储中的证书对PDF进行签名

我想在证书库中签署带有证书的PDF.

我使用iTextSharp和iSafePDF来播放PDF,当我使用存储为.p12文件的证书进行签名时,它可以正常工作.但我不知道如何使用库来签署从证书存储区获得的证书.我有一个System.Security.Cryptography.X509Certificate2的实例,但该库使用不同的对象表示,我无法使其工作.有人可以帮忙吗?

pdf signing itextsharp

3
推荐指数
1
解决办法
5595
查看次数

使用PDF itextSharp可以在创建pdf文档时将图像放在文本顶部

我尝试了几种方法来做到这一点,但仍然无法得到它.似乎iTextSharp需要2遍情况,以便图像出现在文本的顶部.所以我试图使用内存流来做到这一点,但我一直在收到错误.

    Public Function createDoc(ByRef reqResponse As HttpResponse) As Boolean

        Dim m As System.IO.MemoryStream = New System.IO.MemoryStream()
        Dim document As Document = New Document()
        Dim writer As PdfWriter = iTextSharp.text.pdf.PdfWriter.GetInstance(document, m)
        document.Open()
        document.Add(New Paragraph(DateTime.Now.ToString()))
        document.Add(New Paragraph(DateTime.Now.ToString()))
        document.Add(New Paragraph(DateTime.Now.ToString()))
        document.Add(New Paragraph(DateTime.Now.ToString()))
        document.Add(New Paragraph(DateTime.Now.ToString()))
        document.Add(New Paragraph(DateTime.Now.ToString()))
        document.Add(New Paragraph(DateTime.Now.ToString()))
        document.Close()
        writer.Flush()
        writer.Flush()
        'yes; I get the pdf if this is the last statement
        'reqResponse.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length)

        'this statment does not work it says the stream is closed
        'm.Position = 0
        Dim Reader As PdfReader …
Run Code Online (Sandbox Code Playgroud)

memorystream response itextsharp

3
推荐指数
1
解决办法
9708
查看次数

iTextSharp - acroform字段编码

我正在尝试使用iTextSharp填写AcroForm的文本字段.Acroform文本字段也是由iTextSharp通过这段代码创建的:

TextField Field = new TextField(OutputWriter, FieldPos, "MyField");
OutputWriter.AddAnnotation(Field.GetTextField()); // OutputWriter is writing to form.pdf
Run Code Online (Sandbox Code Playgroud)

我使用以下代码填写表单:

PdfReader reader = new PdfReader("form.pdf");
PdfStamper filledOutForm = new PdfStamper(reader, new FileStream("filled_form.pdf", FileMode.Create));

AcroFields form = filledOutForm.AcroFields;
form.SetField("MyField", "some unicode data");
Run Code Online (Sandbox Code Playgroud)

但是,当我在Acrobat Reader中打开filled_form.pdf时,除非我手动编辑字段(例如,我手工将字符附加到字段),否则unicode字符不可见.

我也尝试通过以下方式设置字段的字体:

BaseFont fieldFontRoman = BaseFont.CreateFont(@"C:\Windows\Fonts\times.ttf",
                                BaseFont.IDENTITY_H,
                                BaseFont.EMBEDDED);
form.SetFieldProperty("MyField", "textfont", fieldFontRoman, null);
Run Code Online (Sandbox Code Playgroud)

然后,当我在Acrobat Reader中打开filled_form.pdf时,除非我手动编辑该字段,否则一切看起来都很好.之后,非unicode字符消失(它们变为空格).他们在这里是因为如果我通过CTRL + C复制字段的整个内容并将其粘贴到记事本,我可以看到所有字符.

请指教.我希望看到该字段中的所有字符,而无需手动编辑字段,当然在手动编辑后我希望没有字符消失.

谢谢

encoding itextsharp

3
推荐指数
1
解决办法
4032
查看次数

iTextSharp生成PDF并直接在浏览器上显示

如何在ASP.Net上使用iTextSharp创建后打开PDF文件?我不想将其保存在服务器上,但是直接在生成新PDF时,它会在浏览器上显示.有可能吗?

这是我的意思的例子:点击这里.但是在这个例子中,文件直接下载.

我怎样才能做到这一点?

    Dim doc1 = New Document()

    'use a variable to let my code fit across the page...
    Dim path As String = Server.MapPath("PDFs")
    PdfWriter.GetInstance(doc1, New FileStream(path & "/Doc1.pdf", FileMode.Create))

    doc1.Open()
    doc1.Add(New Paragraph("My first PDF"))
    doc1.Close()
Run Code Online (Sandbox Code Playgroud)

上面的代码确实将PDF保存到服务器.

非常感谢你提前!:)

asp.net pdf-generation itextsharp

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

MVC3将多个pdfs作为zip文件返回

我有一个视图,它返回一个包含多个页面的pdf(使用iTextSharp),但现在我必须更改它,以便每个页面都是一个单独的pdf(带有它自己的唯一标题)并返回一个zip文件.

我的原始代码如下所示:

public FileStreamResult DownloadPDF()
{
    MemoryStream workStream = new MemoryStream();
    Document document = new Document();
    PdfWriter.GetInstance(document, workStream).CloseStream = false;
    document.Open();

    // Populate pdf items

    document.Close();

    byte[] byteInfo = workStream.ToArray();
    workStream.Write(byteInfo, 0, byteInfo.Length);
    workStream.Position = 0;

    FileStreamResult fileResult = new FileStreamResult(workStream, "application/pdf");
    fileResult.FileDownloadName = "fileName";

    return fileResult;
}
Run Code Online (Sandbox Code Playgroud)

使用gzip压缩文件看起来很简单,但我不知道如何gzip多个文件并将其作为一个zip文件返回.或者我应该使用gzip以外的东西,比如dotnetzip或sharpzip?

提前致谢!

c# zip file itextsharp asp.net-mvc-3

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

如何在使用iTextSharp创建的pdf文件中显示汉字

我有包含一些英文字符和一些中文字符的字符串数据。我正在使用iTextSharp使用此数据创建pdf文件。创建pdf文件后,当我打开它时,pdf仅包含英文字符。它没有显示汉字。您能告诉我如何在pdf文件中显示汉字吗?请注意,即时通讯写入pdf的字符串数据包含动态语言字符,例如,有时是英语,有些是中文,有时是日语等。

c# itextsharp

3
推荐指数
1
解决办法
4536
查看次数

itextsharp将1页模板添加到所有页面

我正在ASP.Net应用程序中动态创建PDF文件.数据可以从跨页1页到超过10页不等.我正在使用PdpfTables和Cells来对齐完美运行的数据.IT正在创建需要新页面的页面.唯一的问题是我无法将它添加到所有页面,只有第一页.

我的模板是一个1页的PDF文件.要将它添加到第一页,我使用以下代码

PdfContentByte cb = writer.DirectContent;
cb.AddTemplate(page, 0, 0);
Run Code Online (Sandbox Code Playgroud)

正如我所说,这适用于第一页很好,但之后没有任何页面.所以我尝试在关闭所有流之前添加以下代码,但它什么也没做

for (var i = 2; i <= writer.CurrentPageNumber; i++)
{
    var y = (writer.PageSize.Height * (i - 1));
    cb.AddTemplate(page, 0, y);
}
Run Code Online (Sandbox Code Playgroud)

我确实没有在网上找到任何与我的问题完全相关的内容,但那些相似的问题并没有帮助.

任何建议都会很棒,谢谢.

asp.net pdf-generation itextsharp asp.net-mvc-4

3
推荐指数
1
解决办法
3312
查看次数

使用CID字体从PDF中提取文本

我正在编写一个Web应用程序,它在PDF的每个页面的顶部提取一行.PDF来自产品的不同版本,可以通过许多PDF打印机,也可以使用不同的版本和不同的设置.

到目前为止,使用PDFSharp和iTextSharp我已经设法让它适用于所有版本的PDF.我的挂机是带有CID字体的文件(Identity-H).

我编写了一个部分解析器来查找字体表引用和文本块,但将这些转换为可读文本正在打败我.

有没有人有: - 一个解决CID字体的解析器(像这一个/sf/answers/121258581/); 或 - 一些示例代码,用于解析页面资源字典以查找页面字体并获取其ToUnicode流以帮助完成此示例(/sf/answers/283382991/)

我们必须使用iTextSharp 4.1来保留免费使用许可.

这是我的部分解析器.

public string ExtractTextFromCIDPDFBytes(byte[] input)
{
    if (input == null || input.Length == 0) return "";

    try
    {
        // Holds the final result to be returned
        string resultString = "";
        // Are we in a block of text or not
        bool blnInText = false;
        // Holds each line of text before written to resultString
        string phrase = "";
        // Holds the 4-character hex codes as …
Run Code Online (Sandbox Code Playgroud)

pdf fonts itextsharp pdf-extraction

3
推荐指数
1
解决办法
4896
查看次数

c#如何使用iTextsharp从pdf返回一个字节数组

所有,

我创建了以下方法来获取具有多个tiff页面文档的tiff字节数组

我需要将其转换为pdf,然后返回一个pdf字节数组

我有这个代码1的 2个问题 - 我想返回一个字节[].2 - 生成的pdf重复页面.

    public void convertImage(byte[] documentContent)
    {
        Document document = new Document(PageSize.LETTER, 0, 0, 0, 0);

        PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(@"C:\Data\Output.pdf", FileMode.Create)); --for testing purposes



        Bitmap oldImage;

        using (var ms = new MemoryStream(documentContent))
        {
            oldImage = new Bitmap(ms);
        }


        Size newSize = new Size(1024, 737);


        using (Bitmap bmp1 = new Bitmap(oldImage, newSize))
        {
            int total = oldImage.GetFrameCount(FrameDimension.Page);

            document.Open();

            PdfContentByte cb = writer.DirectContent;

            for (int k = 0; k < total; ++k) …
Run Code Online (Sandbox Code Playgroud)

c# pdf tiff itextsharp

3
推荐指数
1
解决办法
5555
查看次数