首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用pikepdf将文本/字符串添加到PDF中

用pikepdf将文本/字符串添加到PDF中
EN

Stack Overflow用户
提问于 2022-06-29 07:28:08
回答 1查看 327关注 0票数 0

在"PDF/A-1b“标准中,我想在每个页面上添加一个特定位置的文本/字符串到现有的PDF(多个页面)。

我已经阅读了这些文档,但是我无法解决它(到目前为止我可能还不太了解它),如何使用流和如何创建XObject。

有一个如何添加新字符串的小示例吗?

它可以是一个覆盖,也可以是另一个内容元素。

由于我刚刚创建了一个pikepdf字符串对象,没有XObject,所以这个方法无法工作,这将导致:

TypeError:其他对象不是我们可以转换成XObject的东西

代码语言:javascript
复制
    import pikepdf

    file_name ="example.pdf"
    print(f"Current file: {file_name}")
    
    pdf = pikepdf.Pdf.open(file_dict[each_pdf]["path"])
    print("Number of pages:", len(pdf.pages))
    some_text = pikepdf.objects.String('Some date like 20220629')

    destination_page = pikepdf.Page(pdf.pages[0])
    
    destination_page.add_overlay(some_text, pikepdf.Rectangle(0, 0, 300, 300))
    pdf.save("example_with_text.pdf")
    pdf.close()
EN

回答 1

Stack Overflow用户

发布于 2022-06-29 14:31:15

好了,明白了。我读到过一种将同一对象“盖章”到所有页面的方法--再也找不到了。

这个解决方案符合我的问题:

代码语言:javascript
复制
from io import BytesIO
import pikepdf
from reportlab.pdfgen import canvas

def generate_stamp(msg, xy):
    x, y = xy
    buf = BytesIO()
    c = canvas.Canvas(buf, bottomup=0)
    c.setFontSize(16)
    c.setFillColorCMYK(0, 0, 0, 0, alpha=0.7)
    c.rect(194, 5, 117, 17, stroke=1, fill=1)
    c.setFillColorCMYK(0, 0, 0, 100, alpha=0.7)
    c.drawString(x, y, msg)
    c.save()
    buf.seek(0)
    return buf

stamp = generate_stamp('SOME TEXT', (200, 20))

with pikepdf.open('[Path to in]/in.pdf') as pdf_orig, pikepdf.open(stamp) as pdf_text:
    formx_text = pdf_orig.copy_foreign(pdf_text.pages[0].as_form_xobject())
    
    for i in range(len(pdf_orig.pages)):
        formx_page = pdf_orig.pages[i]
        formx_name = formx_page.add_resource(formx_text, pikepdf.Name.XObject)    
        stamp_text = pdf_orig.make_stream(b'q 1 0 0 1 0 0 cm %s Do Q' % formx_name)
        
        pdf_orig.pages[i].contents_add(stamp_text)

    pdf_orig.save('[Path to out]/out.pdf')

虽然不是我,但这只是一个来自jbarlow83本人的例子的小改编。

如果有改进的方法,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72797406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档