使用IRONPDF FOR PYTHON

如何在Python中编辑PDF文件

发布 2023年八月24日
分享:

简介

Iron 软件公司推出了 IronPDF Python 库IronPDF Python 是一种解决方案,它彻底改变了在 Python 中执行 PDF 编辑任务的难易程度。无论您是需要插入签名、添加 HTML 页脚、嵌入水印、包含注释还是编辑 PDF 文件,IronPDF Python 都是您的得力工具。该库可确保代码的可读性,支持以编程方式创建 PDF,便于直接调试,并可在所有兼容平台和环境中无缝部署。

在本教程文章中,我们将通过 Python 示例代码和全面的解释来探讨这些广泛的功能。在本指南结束时,您将对如何使用 IronPDF Python 满足您的 PDF 编辑需求有一个扎实的了解。

如何用 Python 编辑 PDF 文件

1.使用 pip Installer 安装 Python PDF 库。

2.应用 Python PDF 库的许可证密钥。

3.加载 PDF 文档以供编辑。

4.使用不同的选项编辑 PDF 文档,如分割、复制页面和其他 PDF 操作。

5.使用 "SaveAs "功能保存修改后的文件。

编辑文档结构

操作页面

IronPDF 简化了在特定位置添加页面、提取特定页面或页面范围以及从任何 PDF 中删除页面的过程。它能为您处理所有复杂的流程,让您轻松高效地执行这些任务。

添加页面

您可以通过指定页面内容、大小和位置为 PDF 文档添加页面。进行所需更改后,您可以使用 "SaveAs "功能保存输出的 PDF 文件。

from ironpdf import *

# Set a log path
Logger.EnableDebugging = True
Logger.LogFilePath = "Custom.log"
Logger.LoggingMode = Logger.LoggingModes.All

pdf = PdfDocument("C:\\Users\\Administrator\\Downloads\\Documents\\sample.pdf")
renderer = ChromePdfRenderer()
coverPagePdf = renderer.RenderHtmlAsPdf("<h1>Cover Page</h1><hr>")
pdf.PrependPdf(coverPagePdf)
pdf.SaveAs("report_with_cover.pdf")
PYTHON

复印页

您可以通过指定页码和目的地,将一个 PDF 文档中的页面复制到另一个现有的 PDF 文件中。此外,您还可以选择从复制的 PDF 页面创建一个新的 PDF 文件。还可以从一个 PDF 文件中选择一页或多页进行复制。

from ironpdf import *

pdf = PdfDocument("C:\\Users\\Administrator\\Downloads\\Documents\\sample.pdf")
# Copy pages 5 to 7 and save them as a new document.
pdf.CopyPages(2, 4).SaveAs("report_highlight.pdf")
PYTHON

删除页面

您可以通过指定页码从输入的 PDF 文件中删除页面。

from ironpdf import *
pdf = PdfDocument("report.pdf")
pdf.RemovePage(pdf.PageCount-1)
pdf.SaveAs("Report-Minus-1.pdf")
PYTHON

合并和拆分 PDF 文件

IronPDF 用户友好的 API 可以轻松地将多个 PDF 合并为一个,或将现有 PDF 分解为单独的文件。

将多个现有 PDF 文件合并为一个 PDF 文档

您可以通过指定输入 PDF 文档和输出 PDF 文档,将多个 PDF 文档合并为一个文档。

from ironpdf import *

html_a = """<p> [PDF_A] </p>
            <p> [PDF_A] 1st Page </p>
            <div style='page-break-after: always;'></div>
            <p> [PDF_A] 2nd Page</p>"""

html_b = """<p> [PDF_B] </p>
            <p> [PDF_B] 1st Page </p>
            <div style='page-break-after: always;'></div>
            <p> [PDF_B] 2nd Page</p>"""

renderer = ChromePdfRenderer()

pdfdoc_a = renderer.RenderHtmlAsPdf(html_a)
pdfdoc_b = renderer.RenderHtmlAsPdf(html_b)
merged = PdfDocument.Merge(pdfdoc_a, pdfdoc_b)

merged.SaveAs("Merged.pdf")
PYTHON

分割 PDF 文件并提取页面

您可以通过指定输入 PDF 文档和输出 PDF 文档或页码,将 PDF 文档分割成多个文档,或从 PDF 文件中提取特定页面。

from ironpdf import *

html = """<p> Hello Iron </p>
          <p> This is 1st Page </p>
          <div style='page-break-after: always;'></div>
          <p> This is 2nd Page</p>
          <div style='page-break-after: always;'></div>
          <p> This is 3rd Page</p>"""

renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(html)

# take the first page
page1doc = pdf.CopyPage(0)
page1doc.SaveAs("Split1.pdf")

# take pages 2 & 3
page23doc = pdf.CopyPages(1, 2)
page23doc.SaveAs("Split2.pdf")
PYTHON

编辑文档属性

添加和使用 PDF 元数据

您可以使用 IronPDF Python 添加和使用 PDF 元数据。这对于添加版权信息、跟踪更改或简单地提高 PDF 文档的可搜索性都很有帮助。

PDF 元数据是存储在 PDF 文档中的数据集合。这些数据可包括 PDF 文档的标题、作者、主题、关键词、创建日期和修改日期。此外,它还可以包括根据要求添加的自定义数据。

from ironpdf import *

# Open an Encrypted File, alternatively create a new PDF from Html
pdf = PdfDocument.FromFile("encrypted.pdf", "password")

# Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto"
pdf.MetaData.Keywords = "SEO, Friendly"
pdf.MetaData.ModifiedDate = Now()
pdf.SaveAs("MetaData-Updated.pdf")
PYTHON

数字签名

IronPDF 允许您使用 .pfx.p12 X509Certificate2 数字证书对新的或现有的 PDF 文件进行数字签名。使用这种方法签署 PDF 时,对文档的任何修改都需要证书验证,从而确保文档的完整性。

有关使用 Adobe Reader 免费生成签名证书的更多指导,请访问 Adobe 网站.

除加密签名外,IronPDF 还支持使用手写签名图像或公司印章图像作为签署文档的替代方式。

from ironpdf import *

# Cryptographically sign an existing PDF in 1 line of code!
PdfSignature(r".\certificates\IronSoftware.p12", "123456").SignPdfFile("any.pdf")

##### Advanced example for more control #####

# Step 1. Create a PDF.
renderer = ChromePdfRenderer()
doc = renderer.RenderHtmlAsPdf("<h1>Testing 2048 bit digital security</h1>")

# Step 2. Create a signature.
# You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.
# Read https://helpx.adobe.com/acrobat/using/digital-ids.html
signature = PdfSignature(r"certificates\IronSoftware.pfx", "123456")

# Step 3. Optional signing options and a handwritten signature graphic.
signature.SigningContact = "support@ironsoftware.com"
signature.SigningLocation = "Chicago, USA"
signature.SigningReason = "To show how to sign a PDF"

# Step 4. Sign the PDF with the PdfSignature. Multiple signing certificates may be used.
doc.Sign(signature)

# Step 5. The PDF is not signed until saved to file, steam or byte array.
doc.SaveAs("signed.pdf")
PYTHON

PDF 附件

IronPDF 可以让您轻松地为 PDF 文档添加附件,并随时将其删除。这意味着您可以在 PDF 文件中添加额外的文件,并在需要时将其删除,而这一切都离不开 IronPDF 的帮助。

from ironpdf import *

# Instantiate the Renderer and create PdfDocument from HTML
renderer = ChromePdfRenderer()
my_pdf = renderer.RenderHtmlFileAsPdf("my-content.html")

# Open PDF document to be attached
pdf = PdfDocument.FromFile("new_sample.pdf")

# Here we can add an attachment with a name and a byte []
attachment1 = my_pdf.Attachments.AddAttachment("attachment_1", pdf.BinaryData)

# And here is an example of removing an attachment
my_pdf.Attachments.RemoveAttachment(attachment1)

my_pdf.SaveAs("my-content.pdf")
PYTHON

压缩 PDF

IronPDF 具有压缩 PDF 的功能,以帮助减小其文件大小。其中一种方法是使用 "CompressImages "方法减小 PDF 文档中嵌入的图像大小。

关于图像质量,对于 JPEG 图像,100% 的质量几乎不会降低图像质量,而 1% 的质量则会产生非常差的输出。一般来说,90% 或以上的图像质量被视为高质量。中等质量的图像介于 80% 和 90% 之间,低质量的图像介于 70% 和 80% 之间。如果低于 70%,图像质量会明显下降,但这有助于大幅减少 PDF 文档的整体文件大小。

建议尝试不同的质量百分比,以找到适合自己需要的质量和文件大小的平衡点。请记住,缩减后质量的明显下降会因处理的图像类型而异,因为有些图像的清晰度下降可能比其他图像严重。

from ironpdf import *

pdf = PdfDocument("document.pdf")

# Quality parameter can be 1-100, where 100 is 100% of original quality
pdf.CompressImages(60)
pdf.SaveAs("document_compressed.pdf")

# Second optional parameter can scale down the image resolution according to its visible size in the PDF document. Note that this may cause distortion with some image configurations
pdf.CompressImages(90, True)
pdf.SaveAs("document_scaled_compressed.pdf")
PYTHON

编辑 PDF 内容

添加页眉和页脚

使用 IronPDF,为 PDF 文档添加页眉和页脚变得简单易行。该软件提供两种不同类型的 "页眉页脚":"文本页眉页脚 "和 "Html页眉页脚"。TextHeaderFooter "是只包含文本的页眉和页脚的理想选择,它可能需要包含合并字段,如"{页码} 的 {总页数}".另一方面,"HtmlHeaderFooter "是一个更高级的选项,它可以处理任何 HTML 内容并将其格式化,因此适用于更复杂的页眉和页脚。

HTML 页眉和页脚

使用 IronPDF Python,您可以使用 "HtmlHeaderFooter "功能从 HTML 为 PDF 文档创建 HTML 页眉或页脚。这意味着您可以使用 HTML 设计页眉或页脚,IronPDF Python 会将其完美转换为适合您的 PDF,确保每个细节都恰到好处。因此,如果您有 HTML 的页眉或页脚设计,IronPDF Python 可以将其精确地应用到您的 PDF 文档中。

from ironpdf import *
import os

# Instantiate Renderer
renderer = ChromePdfRenderer()

# Build a footer using html to style the text
# mergeable fields are
# {page} {total-pages} {url} {date} {time} {html-title} & {pdf-title}
renderer.RenderingOptions.HtmlFooter = HtmlHeaderFooter()
renderer.RenderingOptions.HtmlFooter.MaxHeight = 15  # millimeters
renderer.RenderingOptions.HtmlFooter.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
renderer.RenderingOptions.HtmlFooter.DrawDividerLine = True

# Use sufficient MarginBottom to ensure that the HtmlFooter does not overlap with the main PDF page content.
renderer.RenderingOptions.MarginBottom = 25  # mm

# Build a header using an image asset
# Note the use of BaseUrl to set a relative path to the assets
renderer.RenderingOptions.HtmlHeader = HtmlHeaderFooter()
renderer.RenderingOptions.HtmlHeader.MaxHeight = 20  # millimeters
renderer.RenderingOptions.HtmlHeader.HtmlFragment = "<img src='iron.png'>"
renderer.RenderingOptions.HtmlHeader.BaseUrl = os.path.abspath("C:/Users/lyty1/OneDrive/Documents/IronPdfPythonNew")

# Use sufficient MarginTop to ensure that the HtmlHeader does not overlap with the main PDF page content.
renderer.RenderingOptions.MarginTop = 25  # mm
PYTHON

文本页眉和页脚

from ironpdf import *

# Initiate PDF Renderer
renderer = ChromePdfRenderer()

# Add a header to every page easily
renderer.RenderingOptions.FirstPageNumber = 1  # use 2 if a cover page will be appended
renderer.RenderingOptions.TextHeader.DrawDividerLine = True
renderer.RenderingOptions.TextHeader.CenterText = "{url}"
renderer.RenderingOptions.TextHeader.Font = FontTypes.Helvetica
renderer.RenderingOptions.TextHeader.FontSize = 12
renderer.RenderingOptions.MarginTop = 25  # create 25mm space for header

# Add a footer too
renderer.RenderingOptions.TextFooter.DrawDividerLine = True
renderer.RenderingOptions.TextFooter.Font = FontTypes.Arial
renderer.RenderingOptions.TextFooter.FontSize = 10
renderer.RenderingOptions.TextFooter.LeftText = "{date} {time}"
renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"
renderer.RenderingOptions.MarginBottom = 25  # create 25mm space for footer

# Mergeable fields are
# {page} {total-pages} {url} {date} {time} {html-title} & {pdf-title}
PYTHON

大纲和书签

大纲也称为 "书签",是一种帮助你快速查找 PDF 文档中重要页面的工具。如果您使用的是 Adobe Acrobat Reader,您可以看到这些书签 (可按层级组织) 在应用程序的左侧边栏。

IronPDF Python 库让处理书签变得更加简单。它可以自动从 PDF 文档中引入任何现有书签。此外,您还可以使用 IronPDF 添加更多书签、编辑书签或将书签分组排列。

from ironpdf import *

# Create a new PDF or edit an existing document.
pdf = PdfDocument.FromFile("existing.pdf")

# Add bookmark
pdf.Bookmarks.AddBookMarkAtEnd("Author's Note", 2)
pdf.Bookmarks.AddBookMarkAtEnd("Table of Contents", 3)

# Store new bookmark in a variable to add nested bookmarks to
summaryBookmark = pdf.Bookmarks.AddBookMarkAtEnd("Summary", 17)

# Add a sub-bookmark within the summary
conclusionBookmark = summaryBookmark.Children.AddBookMarkAtStart("Conclusion", 18)

# Add another bookmark to end of highest-level bookmark list
pdf.Bookmarks.AddBookMarkAtEnd("References", 20)

pdf.SaveAs("existing.pdf")
PYTHON

添加和编辑注释

您可以使用 IronPDF Python 为 PDF 文档添加和编辑注释。注释可用于突出显示文本、添加注释或创建链接。您还可以编辑现有注释。

from ironpdf import *

# Load an existing PDF or create a new one
pdf = PdfDocument("existing.pdf")

# Create a TextAnnotation object
annotation = TextAnnotation()
annotation.Title = "This is the major title"
annotation.Subject = "This is a subtitle"
annotation.Contents = "This is the long 'sticky note' comment content..."
annotation.Icon = TextAnnotation.AnnotationIcon.Help
annotation.Opacity = 0.9
annotation.Printable = False
annotation.Hidden = False
annotation.OpenByDefault = True
annotation.ReadOnly = False
annotation.Rotateable = True

# Add the annotation to a specific page and location within the PDF
pdf.AddTextAnnotation(annotation, 1, 150, 250)

# Save the PDF
pdf.SaveAs("existing.pdf")
PYTHON

添加背景和前景

IronPDF Python 可让您为 PDF 文档添加背景和前景。这对于添加水印、创建自定义模板或只是让 PDF 文档看起来更有视觉吸引力都很有用。您可以使用图像、颜色或渐变作为背景或前景。

from ironpdf import *

# Instantiate Renderer
renderer = ChromePdfRenderer()

# Render a PDF from a URL
pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")

# Add a PDF as background
pdf.AddBackgroundPdf("MyBackground.pdf")

# Add a PDF as foreground overlay to the first page
pdf.AddForegroundOverlayPdfToPage(0, "MyForeground.pdf", 0)

# Save the merged PDF
pdf.SaveAs("Complete.pdf")
PYTHON

冲压和水印

IronPDF Python 允许您为 PDF 文档加盖戳记和水印。这对于添加版权信息、防止未经授权的复制或只是让 PDF 文档看起来更专业都很有用。您可以为 PDF 文档添加文本、图像或水印。您还可以控制图章和水印的大小、位置和不透明度。

在 PDF 上应用图章

通过 IronPDF Python,您可以在 PDF 文档中应用图章。这对于在 PDF 文档中添加徽标、签名或其他标识信息非常有用。您可以选择图章类型、位置和大小。您还可以设置图章的不透明度。

from ironpdf import *

# Create an HtmlStamper object to stamp an image onto a PDF
stamper = HtmlStamper("<img src='https://ironpdf.com/img/products/ironpdf-logo-text-dotnet.svg'/>")
stamper.HorizontalAlignment = HorizontalAlignment.Center
stamper.VerticalAlignment = VerticalAlignment.Bottom
stamper.IsStampBehindContent = False
stamper.Opacity = 30

# Load an existing PDF document and apply the stamp to it
pdf = PdfDocument.FromFile("Sample.pdf")
pdf.ApplyStamp(stamper).SaveAs("stampedimage.pdf")
PYTHON

为 PDF 添加水印

IronPDF Python 可让您为 PDF 文档添加水印。这对于防止未经授权的复制或让 PDF 文档看起来更专业都很有用。您可以选择水印文本、字体、大小和颜色。您还可以设置水印的不透明度。

from ironpdf import *

# Instantiate the Renderer and create PdfDocument from URL
renderer = ChromePdfRenderer()
pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")

# Apply watermark
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, VerticalAlignment.Middle, HorizontalAlignment.Center)

# Save your new PDF
pdf.SaveAs("Watermarked.pdf")
PYTHON

在 PDF 中使用表格

您可以使用 IronPDF Python 在 PDF 文档中创建和编辑表格。这对于收集用户数据或使 PDF 文档更具交互性非常有用。您可以添加文本框、复选框和单选按钮等表单域。您还可以从用户那里收集表单数据。

创建和编辑表格

from ironpdf import *

# Step 1.  Creating a PDF with editable forms from HTML using form and input tags
# Radio Button and Checkbox can also be implemented with input type 'radio' and 'checkbox'
form_html = """
<html>
    <body>
        <h2>Editable PDF Form</h2>
        <form>
            First name: <br> <input type='text' name='firstname' value=''> <br>
            Last name: <br> <input type='text' name='lastname' value=''> <br>
            <br>
            <p>Please specify your gender:</p>
            <input type='radio' id='female' name='gender' value= 'Female'>
            <label for='female'>Female</label> <br>
            <br>
            <input type='radio' id='male' name='gender' value='Male'>
            <label for='male'>Male</label> <br>
            <br>
            <input type='radio' id='non-binary/other' name='gender' value='Non-Binary / Other'>
            <label for='non-binary/other'>Non-Binary / Other</label>
            <br>

            <p>Please select all medical conditions that apply:</p>
            <input type='checkbox' id='condition1' name='Hypertension' value='Hypertension'>
            <label for='condition1'> Hypertension</label><br>
            <input type='checkbox' id='condition2' name='Heart Disease' value='Heart Disease'>
            <label for='condition2'> Heart Disease</label><br>
            <input type='checkbox' id='condition3' name='Stoke' value='Stoke'>
            <label for='condition3'> Stoke</label><br>
            <input type='checkbox' id='condition4' name='Diabetes' value='Diabetes'>
            <label for='condition4'> Diabetes</label><br>
            <input type='checkbox' id='condition5' name='Kidney Disease' value='Kidney Disease'>
            <label for='condition5'> Kidney Disease</label><br>
        </form>
    </body>
</html>
"""

# Instantiate Renderer
renderer = ChromePdfRenderer()
renderer.RenderingOptions.CreatePdfFormsFromHtml = True
renderer.RenderHtmlAsPdf(form_html).SaveAs("BasicForm.pdf")

# Step 2. Reading and Writing PDF form values.
form_document = PdfDocument.FromFile("BasicForm.pdf")

# Set and read the value of the "firstname" field
first_name_field = form_document.Form.GetFieldByName("firstname")
first_name_field.Value = "Minnie"
print("FirstNameField value: {}".format(first_name_field.Value))

# Set and read the value of the "lastname" field
last_name_field = form_document.Form.GetFieldByName("lastname")
last_name_field.Value = "Mouse"
print("LastNameField value: {}".format(last_name_field.Value))

form_document.SaveAs("FilledForm.pdf")
PYTHON

结论

IronPDF Python 是一个功能强大的 Python PDF 库,能让您用 Python 创建、操作和编辑 PDF 文档。有了这个库,处理 PDF 文档变得异常简单。它提供了广泛的功能,包括编辑文档结构、处理页面、合并和拆分 PDF、编辑文档属性以及添加和使用 PDF 元数据。

IronPDF Python 用户界面友好,可无缝集成到任何 Python 项目中。对于需要在 Python 中处理 PDF 文档的人来说,它是一款非常有价值的工具。IronPDF Python 许可证从 $749 开始。更多信息请访问 IronPDF 网站.

< 前一页
如何在Python中生成PDF表单
下一步 >
如何在Python中从PDF提取特定文本

准备开始了吗? 版本: 2024.9 刚刚发布

免费 pip 安装 查看许可证 >