使用iTextSharp在acroform中更改图像DPI

时间:2015-05-22 14:22:00

标签: c# asp.net itextsharp

我正在编写一个ASP.NET(C#)应用程序,该应用程序使用iTextSharp将图像(更具体的签名)嵌入到AcroForm中。我获得了一个不错的结果,从外部媒体(USB Wacom平板电脑)收集图像并调整其大小以适应acroform签名占位符(这是从平板电脑拍摄的图片的一半)。 我对结果并不完全满意,因为这款平板电脑以高分辨率(我认为不超过75 dpi)收集签名,因此调整它(即使使用最保守的算法)也会给出一点模糊/粗糙的图像...它完全可读,但在我看来并不好看。 我很难,也许,对图像的DPI进行处理而不是改变它的大小将保留所有原始定义,从而在PDF内部渲染时提供更好的结果。 我怎样才能达到这个效果?我的意思是有一种简单的方法使用iTextSharp插入图像并设置它的DPI,或者我必须预先处理图像并在嵌入之前更改DPI? 是否有可能定义一个AcroForm字段来保存图像而不是文本?

@BrunoLowagie当然可以,那就是代码::

            using (Stream _sInputPdfStream = new FileStream(_sTempNomeFile, FileMode.Open, FileAccess.Read, FileShare.Read))
            using (Stream _sInputImageStream = new FileStream(sImagePath, FileMode.Open, FileAccess.Read, FileShare.Read))
            using (Stream _sOutputPdfStream = new FileStream(_sOutputNomeFile, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                var _rReader = new PdfReader(_sInputPdfStream);
                var _sStamper = new PdfStamper(_rReader, _sOutputPdfStream);
                var _cContent = _sStamper.GetOverContent(1);

                iTextSharp.text.Image _iImage = iTextSharp.text.Image.GetInstance(_sInputImageStream);
                _iImage.SetAbsolutePosition(400, 0);
                _cContent.AddImage(_iImage);
                _sStamper.Close();
            }

当然,sImagePath值是我刚刚上传到“附加”到PDF的图像的路径。

最诚挚的问候,  Weirdgyn

0 个答案:

没有答案