用程序自动替换PDF文件中的图像

简介:
要使用Java代码,应该调用iText库。
要使用C#代码,应该调用iTextSharp库。


Here's the code to replace images in PDFs, in Java and C#. It will replace the first image in the first page.

Java代码

PdfReader pdf =  new PdfReader( "in.pdf");
PdfStamper stp =  new PdfStamper(pdf,  new FileOutputStream( "c:\\out.pdf"));
PdfWriter writer = stp.getWriter();
Image img = Image.getInstance( "image.png");
PdfDictionary pg = pdf.getPageN(1);
PdfDictionary res =
    (PdfDictionary)PdfReader.getPdfObject(pg.get(PdfName.RESOURCES));
PdfDictionary xobj =
    (PdfDictionary)PdfReader.getPdfObject(res.get(PdfName.XOBJECT));
if (xobj !=  null) {
     for (Iterator it = xobj.getKeys().iterator(); it.hasNext(); ) {
        PdfObject obj = xobj.get((PdfName)it.next());
         if (obj.isIndirect()) {
            PdfDictionary tg = (PdfDictionary)PdfReader.getPdfObject(obj);
            PdfName type =
                (PdfName)PdfReader.getPdfObject(tg.get(PdfName.SUBTYPE));
             if (PdfName.IMAGE.equals(type)) {
                PdfReader.killIndirect(obj);
                Image maskImage = img.getImageMask();
                 if (maskImage !=  null)
                    writer.addDirectImageSimple(maskImage);
                writer.addDirectImageSimple(img, (PRIndirectReference)obj);
                 break;
            }
        }
    }
}
stp.close();




C#代码:
InBlock.gifPdfReader pdf =  new PdfReader( "in.pdf");
InBlock.gifPdfStamper stp =  new PdfStamper(pdf,  new FileStream( "out.pdf",
InBlock.gifFileMode.Create));
InBlock.gifPdfWriter writer = stp.Writer;
InBlock.gifImage img = Image.GetInstance( "image.png");
InBlock.gifPdfDictionary pg = pdf.GetPageN(1);
InBlock.gifPdfDictionary res =
InBlock.gif    (PdfDictionary)PdfReader.GetPdfObject(pg.Get(PdfName.RESOURCES));
InBlock.gifPdfDictionary xobj =
InBlock.gif    (PdfDictionary)PdfReader.GetPdfObject(res.Get(PdfName.XOBJECT));
InBlock.gif if (xobj !=  null) {
InBlock.gif     foreach (PdfName name  in xobj.Keys) {
InBlock.gif        PdfObject obj = xobj.Get(name);
InBlock.gif         if (obj.IsIndirect()) {
InBlock.gif            PdfDictionary tg = (PdfDictionary)PdfReader.GetPdfObject(obj);
InBlock.gif            PdfName type =
InBlock.gif                (PdfName)PdfReader.GetPdfObject(tg.Get(PdfName.SUBTYPE));
InBlock.gif             if (PdfName.IMAGE.Equals(type)) {
InBlock.gif            PdfReader.KillIndirect(obj);
InBlock.gif            Image maskImage = img.ImageMask;
InBlock.gif             if (maskImage !=  null)
InBlock.gif                writer.AddDirectImageSimple(maskImage);
InBlock.gif                writer.AddDirectImageSimple(img, PRIndirectReference)obj);
InBlock.gif                 break;
InBlock.gif            }
InBlock.gif        }
InBlock.gif    }
InBlock.gif}
InBlock.gifstp.Close();









本文转自 h2appy  51CTO博客,原文链接:http://blog.51cto.com/h2appy/149127,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
Web App开发 Windows
【Windows】 chrome 如何下载网站在线预览PDF文件,保存到本地
【Windows】 chrome 如何下载网站在线预览PDF文件,保存到本地
301 0
|
2月前
|
JSON 关系型数据库 数据库
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】
|
29天前
|
IDE Java 编译器
使用Java分割PDF文件
使用Java分割PDF文件
29 1
|
9天前
|
JavaScript Java
Java 将Markdown文件转换为Word和PDF文档
【7月更文挑战第5天】Java中使用`Spire.Doc for Java`库可方便地将Markdown转换为Word或PDF。基本步骤包括导入模块,创建`Document`对象,加载Markdown文件,然后保存为目标格式(`.docx`或`.pdf`)。若遇到`Invalid UTF-8 stream`错误,需确保Markdown文件是UTF-8无BOM编码。页面设置可通过`PageSetup`类调整。注意,实际应用会依据具体需求和环境有所调整。
|
1月前
|
XML Java 数据格式
Java用xpdf库获取pdf文件的指定范围文本内容
Java用xpdf库获取pdf文件的指定范围文本内容
30 1
|
13天前
|
前端开发 Python
我们从`reportlab.pdfgen`模块中导入了`canvas`。这个模块提供了创建PDF文件所需的基本功能。
我们从`reportlab.pdfgen`模块中导入了`canvas`。这个模块提供了创建PDF文件所需的基本功能。
|
1月前
|
文字识别 开发工具 数据安全/隐私保护
印刷文字识别产品使用合集之可以识别一张电子发票有多页(多张图片,或者一个PDF文件)的这种发票吗
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
1月前
|
编解码 文字识别
印刷文字识别操作报错合集之在尝试将PDF文件转换为图片时出现了问题,具体的错误代码是415,该怎么处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
29天前
|
移动开发 JavaScript 前端开发
必知的技术知识:JqueryMedia插件使用,解决在线预览及打开PDF文件
必知的技术知识:JqueryMedia插件使用,解决在线预览及打开PDF文件
|
1月前
在线免费压缩pdf文件
在线免费压缩pdf文件
26 0

相关实验场景

更多