用程序自动替换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月前
|
XML 缓存 JSON
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
为什么浏览器中有些图片、PDF等文件点击后有些是预览,有些是下载
189 0
|
5天前
|
索引 Python
PDF文件页面提取操作小指南
PDF文件页面提取操作小指南
22 4
|
5天前
|
Python
Python对PDF文件页面的旋转和切割
Python对PDF文件页面的旋转和切割
19 3
|
4天前
|
计算机视觉 Python
Python操作PDF文件
Python操作PDF文件
13 1
|
6天前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
18 2
|
6天前
|
人工智能 计算机视觉 Python
ChatGPT编程省钱、方便小示例——实现PDF转成PNG文件
ChatGPT编程省钱、方便小示例——实现PDF转成PNG文件
16 1
|
7天前
|
存储 安全 网络安全
Python编程--使用PyPDF解析PDF文件中的元数据
Python编程--使用PyPDF解析PDF文件中的元数据
13 1
|
8天前
|
IDE 开发工具 数据安全/隐私保护
Python编程实现批量md5加密pdf文件
Python编程实现批量md5加密pdf文件
17 0
|
19天前
|
Python
Python办公自动化:提取pdf文件中的图片
Python办公自动化:提取pdf文件中的图片
15 0
|
2月前
|
Linux Python Windows
Python PDF文件转Word格式,只需要3秒(附打包)
Python PDF文件转Word格式,只需要3秒(附打包)
69 3
Python PDF文件转Word格式,只需要3秒(附打包)

热门文章

最新文章

相关实验场景

更多