标签: itextsharp

如何使用iTextSharp压缩已填写的PDF表单

我正在使用iTextSharp将多个pdf文件合并到一个文件中.

我正在使用iTextSharp官方教程中描述的方法,特别是在这里,它通过PdfWriter和PdfImportedPage逐页合并文件.

原来我需要合并的一些文件是填写PDF表单并使用这种合并表单数据的方法丢失了.

我看到几个使用PdfStamper填写表单并展平它们的例子.

我找不到的,是一种压缩已填写的PDF表格的方法,希望将其与其他文件合并,而不保存它首先展平版本.

谢谢

c# pdf itextsharp

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

创建可在C#中打印的内容

只是想知道是否有人能告诉我一个简单的方法来创建打印文件?目前我只是编写HTML脚本,但我想知道是否有一些更简单的方法可以让我更好地控制它的打印内容?Access打印输出或Excel打印输出的东西 - 在那里我可以决定如何布局,并且几乎通过编程"邮件合并"细节.

基本上,我想创建一些可以包含表格的打印件,并且根据外键的数量,每个记录可以更长或更短(例如,一个工作人员今天可以有10个工作,或者只是3.我想要创建一个将生成并打印的文档).

任何想法/建议/意见?谢谢!

编辑:哇,谢谢所有的回复!对于这个特殊的任务,FlowDocuments似乎是最接近我实际上的,所以我会玩它.无论哪种方式,我现在有几个非常好的选择.

编辑2:经过一段时间的游戏,iTextSharp已成为我的选择.对于任何想知道未来的人来说,这里有一个很棒的简单教程的链接:http://www.mikesdotnetting.com/Category/20

再次感谢!

c# printing pdf pdf-generation itextsharp

11
推荐指数
1
解决办法
5862
查看次数

使用itextsharp在pdf文件中绘制一条线的问题

我正在使用itextsharp在asp.net c#中生成一个pdf文件.我无法绘制水平线/垂直线/虚线.

我尝试使用以下代码绘制一条线,我没有得到任何错误,但该行也没有显示在pdf文件中

    PdfContentByte cb = wri.DirectContent;
    cb.SetLineWidth(2.0f);   // Make a bit thicker than 1.0 default
    cb.MoveTo(20, pdfDocument.Top - 40f);
    cb.LineTo(400, pdfDocument.Top - 40f);
    cb.Stroke();
Run Code Online (Sandbox Code Playgroud)

代码中的问题是什么.是因为xy坐标的位置?我曾使用粗略点来了解pdf中的大致位置,但该行在pdf文件中从未出现过.

我期待的输出如下图所示.在此输入图像描述

c# asp.net pdf-generation itextsharp

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

如何在pdf文档的所有页面上插入背景图像?

我需要C#中的示例代码,以在完成的pdf文档的所有页面上插入背景图像.我正在使用iTextSharp库.

c# pdf-generation itextsharp sharepoint-2010

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

使用itextsharp从PDF中提取图像

我试图使用itextsharp从pdf中提取所有图像,但似乎无法克服这一个障碍.

错误发生在System.Drawing.Image ImgPDF = System.Drawing.Image.FromStream(MS);"参数无效" 的行上发生错误.

我认为它适用于图像是位图而不是任何其他格式的图像.

我有以下代码 - 抱歉长度;

    private void Form1_Load(object sender, EventArgs e)
    {
        FileStream fs = File.OpenRead(@"reader.pdf");
        byte[] data = new byte[fs.Length];
        fs.Read(data, 0, (int)fs.Length);

        List<System.Drawing.Image> ImgList = new List<System.Drawing.Image>();

        iTextSharp.text.pdf.RandomAccessFileOrArray RAFObj = null;
        iTextSharp.text.pdf.PdfReader PDFReaderObj = null;
        iTextSharp.text.pdf.PdfObject PDFObj = null;
        iTextSharp.text.pdf.PdfStream PDFStremObj = null;

        try
        {
            RAFObj = new iTextSharp.text.pdf.RandomAccessFileOrArray(data);
            PDFReaderObj = new iTextSharp.text.pdf.PdfReader(RAFObj, null);

            for (int i = 0; i <= PDFReaderObj.XrefSize - 1; i++)
            {
                PDFObj = PDFReaderObj.GetPdfObject(i);

                if ((PDFObj …
Run Code Online (Sandbox Code Playgroud)

c# pdf image itextsharp

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

如何在Itextsharp中以PDF格式在页脚中添加页码

我在ASP.NET代码中使用iTextSharp DLL.我正在将数据提取到数据集中并将数据集添加到PDF表中.

如果我的数据集有100行,那么将在PDF表格中添加100行,并在PDF文件中创建3或4页.

如何在每个页面中添加页脚?

itext itextsharp

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

使用文档哈希将签名的PDF与未签名的PDF进行比较

经过广泛的谷歌搜索,我开始怀疑我是否在某种程度上错过了数字签名的重点.

这基本上是我认为我原则上应该能够做到的,我希望iTextSharp能够允许我:

我正在用C#和.NET编写,并使用iTextSharp来解析PDF文件.我有一个未签名的PDF文件,也​​是同一文件的签名版本.

我知道数字签名从根本上对PDF数据进行哈希处理,使用私钥对其进行加密,然后部分验证过程是使用公钥对其进行解密,并确保在再次进行哈希处理时结果与PDF数据匹配.

除此之外,我想获得这个解密的文档哈希,并将其与我的未签名PDF生成的文档哈希进行比较.这是因为我不仅要验证签名的PDF是否真实,而且还要记录我记录的相同的无签名PDF.我想我也可以通过将PDF数据(没有签名)与记录中的PDF数据进行比较来做到这一点.

我目前还没有弄清楚如何做到这一点!即:

  1. 如何从签名的PDF中提取PDF数据,不包括签名?
  2. 或者,如何从未签名的PDF生成哈希?
  3. 与2.一起,如何从PDF签名中提取解密的哈希?

希望这很清楚,我没有错过任何地方的观点!

c# pdf itextsharp

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

使用Itextsharp搜索PDF格式的特定单词

这是我在StackOverflow中的第一篇文章.

我的系统驱动器中有一个PDF文件...我想在C#中编写一个程序,使用Itextsharp.dll引用来搜索该PDF中的特定单词...说我要搜索"StackOverFlow"...如果PDF包含Word"StackOverFlow",它应该返回true.

否则它应该返回false.

我已经看了很多文章,但直到现在才得到解决方案.. :-(

我到现在为止尝试的是:

public string ReadPdfFile(string fileName)
        {
            StringBuilder text = new StringBuilder();

            if (File.Exists(fileName))
            {
                PdfReader pdfReader = new PdfReader(fileName);

                for (int page = 1; page <= pdfReader.NumberOfPages; page++)
                {
                    ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
                    string currentText = "2154/MUM/2012 A";// PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);

                    currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
                    text.Append(currentText);
                }
                pdfReader.Close();
            }
            return text.ToString();
        }
Run Code Online (Sandbox Code Playgroud)

在此先感谢,Sabya Dev

c# pdf itextsharp

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

使用itextsharp检查pdf复选框

我尝试了很多不同的方法,但我无法检查复选框!这是我尝试过的:

var reader = new iTextSharp.text.pdf.PdfReader(originalFormLocation);
using (var stamper = new iTextSharp.text.pdf.PdfStamper(reader,ms)) {
    var formFields = stamper.AcroFields;
    formFields.SetField("IsNo", "1");
    formFields.SetField("IsNo", "true");
    formFields.SetField("IsNo", "On");
}
Run Code Online (Sandbox Code Playgroud)

他们都没有工作.有任何想法吗?

pdf checkbox itextsharp

11
推荐指数
1
解决办法
8172
查看次数

PDF hostContainer回调

按照此SO解决方案在此处通知客户PDF文档中的单击事件,如何在客户端使用this.myPDF.submitForm("localhost/Handler.ashx?r = 2"提交PDF时通知客户端)功能?

PDF文件在用户控件内创建,然后呈现为HTML对象:

string container = ("<object data='/myfile.pdf' type='application/pdf'></object>");
Run Code Online (Sandbox Code Playgroud)

附加到PDF的JS文件是这样完成的:

 var webClient = new WebClient();
 string htmlContent = webClient.DownloadString(fileurl + "pdf_script.js");
 PdfAction action = PdfAction.JavaScript(htmlContnent, pdfstamper.Writer);
 pdfstamper.Writer.SetOpenAction(action);
Run Code Online (Sandbox Code Playgroud)

和js文件的内容:

this.disclosed = true;
if (this.external && this.hostContainer) {

function onMessageFunc(stringArray) {
     try {
          this.myPDF.submitForm("http://localhost/Handler.ashx?EmpNo=12345" + "#FDF", false);

        }
        catch (e) {

        }
    }
    function onErrorFunc(e) {
        console.show();
        console.println(e.toString());
    }
    try {
        if (!this.hostContainer.messageHandler);
        this.hostContainer.messageHandler = new Object();
        this.hostContainer.messageHandler.myPDF = this;
        this.hostContainer.messageHandler.onMessage = onMessageFunc;
        this.hostContainer.messageHandler.onError = onErrorFunc;
        this.hostContainer.messageHandler.onDisclose = function …
Run Code Online (Sandbox Code Playgroud)

javascript pdf adobe itextsharp acrofields

10
推荐指数
1
解决办法
7291
查看次数