از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
ایجاد فرم در یک سند PDF در پایتون با Borb
سرفصلهای مطلب
این فرمت سند قابل حمل (PDF) یک نیست WYSIWYG (آنچه می بینید همان چیزی است که به دست می آورید) قالب این برای پلتفرم-آگنوستیک، مستقل از سیستم عامل اصلی و موتورهای رندر توسعه داده شد.
برای دستیابی به این هدف، PDF ساخته شد تا از طریق چیزی بیشتر شبیه به یک زبان برنامه نویسی و متکی با آن تعامل داشته باشد. روی مجموعه ای از دستورالعمل ها و عملیات برای رسیدن به نتیجه. در واقع PDF است مستقر روی یک زبان برنامه نویسی – پست اسکریپتکه اولین دستگاه مستقل بود زبان توضیحات صفحه.
در این راهنما، ما استفاده خواهیم کرد بورب – یک کتابخانه پایتون که به خواندن، دستکاری و تولید اسناد PDF اختصاص یافته است. هم یک مدل سطح پایین (که به شما امکان میدهد به مختصات و طرحبندی دقیق در صورت استفاده از آنها دسترسی داشته باشید) و هم یک مدل سطح بالا (که در آن میتوانید محاسبات دقیق حاشیهها، موقعیتها و غیره را به یک مدیر طرحبندی واگذار کنید) ارائه میدهد. .
در این راهنما ، ما نگاهی به روش تولید PDF با فرم پر کننده خواهیم داشت.
در حال نصب بورب
بورب را می توان از منبع دانلود کرد روی GitHub، یا نصب شده از طریق pip
:
$ pip install borb
ایجاد یک سند PDF با borb
حالا که borb
نصب شده است، ما می توانیم import بلوک های ساختمان و ساخت یک PDF ساده page:
from borb.pdf.document import Document
from borb.pdf.page.page import Page
from borb.pdf.pdf import PDF
from borb.pdf.canvas.layout.page_layout.multi_column_layout import SingleColumnLayout
from borb.pdf.canvas.layout.page_layout.page_layout import PageLayout
کد زیر مراحل اولیه را نشان می دهد روی ایجاد یک سند PDF با استفاده از borb
:
- ایجاد یک سند خالی
- ایجاد یک صفحه خالی
- الحاق صفحه به سند
- ایجاد یک صفحه بندی که وظیفه رسیدگی به جریان محتوا را بر عهده دارد (در اینجا ما از SingleColumnLayout استفاده خواهیم کرد)
- افزودن محتوا به صفحهبندی
- ماندگاری سند روی دیسک
با این گفته ، بیایید پیش برویم و ایجاد کنیم Document
:
pdf = Document()
page = Page()
pdf.append_page(page)
layout: PageLayout = SingleColumnLayout(page)
با استفاده از مراحل اولیه از راه – می توانیم محتوا را اضافه کنیم. در این مثال ، این یک فرم پر قابل استفاده خواهد بود. ما قصد داریم با برخی از سؤالات اساسی اطلاعات کاربر ، مانند نام ، نام خانوادگی و غیره ، فرم ایجاد کنیم:
- نام
- نام خانوادگی
- جنسیت
- محل اقامت
- ملیت
برای اطمینان از درست کردن همه چیز ، ما می خواهیم این محتوا را به یک اضافه کنیم Table
. ستون سمت چپ شامل نام فیلد (به عنوان مثال “نام”، “نام خانوادگی”)، ستون سمت راست شامل فیلدهایی است که باید پر شوند.
ما علاوه بر این یکی دیگر را اضافه خواهیم کرد Paragraph
درست بالای فرم برای حاشیه نویسی آن:
from borb.pdf.canvas.layout.table.fixed_column_width_table import FixedColumnWidthTable
from borb.pdf.canvas.layout.text.paragraph import Paragraph
from borb.pdf.canvas.layout.forms.text_field import TextField
from borb.pdf.canvas.color.color import HexColor
from decimal import Decimal
from borb.pdf.canvas.layout.layout_element import Alignment
from borb.pdf.canvas.layout.forms.drop_down_list import DropDownList
layout.add(Paragraph("Patient Information:", font="Helvetica-Bold"))
table: FixedColumnWidthTable = FixedColumnWidthTable(number_of_rows=5, number_of_columns=2)
table.add(Paragraph("Name : ", horizontal_alignment=Alignment.RIGHT, font_color=HexColor("56cbf9")))
table.add(TextField(value="Doe", font_color=HexColor("56cbf9"), font_size=Decimal(20)))
table.add(Paragraph("Surname : ", horizontal_alignment=Alignment.RIGHT, font_color=HexColor("56cbf9")))
table.add(TextField(value="John", font_color=HexColor("56cbf9"), font_size=Decimal(20)))
این فیلدهای ورودی هستند TextField
s، که رشته ای را می پذیرند که به آنها منتقل شده است. ما می خواهیم مدل سازی کنیم جنسیت فیلد به عنوان یک لیست کشویی، که خواننده می تواند یکی از چهار گزینه را انتخاب کند:
- مونث
- نر
- دیگر
- ترجیح می دهند فاش نشود
بیایید ببینیم چگونه ترجمه می شود borb
:
table.add(Paragraph("Gender : ", horizontal_alignment=Alignment.RIGHT))
table.add(DropDownList(
possible_values=(
"Female",
"Male",
"Other",
"Prefer not to disclose",
)
))
ما می توانیم یک کار مشابه را برای کشور اقامت و ملیت انجام دهیم ، اما این شامل یافتن لیستی از همه کشورهای جهان و انتقال آن به سازنده افراد است DropDownList
.
این مخفف است هر لیست به اندازه کافی طولانی
از آنجا که این زمینه خاص (فهرستی از همه کشورها) یک الزام رایج است، borb
همراه با کلاس از قبل بارگذاری شده است CountryDropDownList
:
from borb.pdf.canvas.layout.forms.country_drop_down_list import CountryDropDownList
table.add(Paragraph("Country of Residence : ", horizontal_alignment=Alignment.RIGHT))
table.add(CountryDropDownList(value="Belgium"))
table.add(Paragraph("Nationality : ", horizontal_alignment=Alignment.RIGHT))
table.add(CountryDropDownList(value="Belgium"))
حالا ما در نهایت می توانیم اضافه کنیم Table
به ما PageLayout
:
table.set_padding_on_all_cells(Decimal(5), Decimal(5), Decimal(5), Decimal(5))
table.no_borders()
layout.add(table)
حالا بیایید یک خط مشی حفاظت از داده (بی معنی) اضافه کنیم:
layout.add(Paragraph("Data Protection Policy",
font="Helvetica-Bold"))
layout.add(Paragraph(
"""
** Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
""",
font="Helvetica-Oblique"
))
بیایید با اضافه کردن پاورقی همه چیز را جمع بندی کنیم. در حال حاضر، ما فقط یک مستطیل پر شده با رنگ تاکیدی، در پایین قسمت اضافه می کنیم page. هیچ چیز خیلی فانتزی نیست.
import typing
from borb.pdf.canvas.geometry.rectangle import Rectangle
from borb.pdf.page.page_size import PageSize
from borb.pdf.canvas.line_art.line_art_factory import LineArtFactory
from borb.pdf.canvas.layout.image.shape import Shape
ps: typing.Tuple(Decimal, Decimal) = PageSize.A4_PORTRAIT.value
r: Rectangle = Rectangle(Decimal(0), Decimal(32), ps(0), Decimal(8))
Shape(points=LineArtFactory.rectangle(r), stroke_color=HexColor("56cbf9"), fill_color=HexColor("56cbf9")).layout(page, r)
در نهایت، ما می توانیم ذخیره کنید Document
ما با استفاده از PDF
کلاس:
from borb.pdf.pdf import PDF
with open("output.pdf", "wb") as out_file_handle:
PDF.dumps(out_file_handle, pdf)
این در نهایت چگونه به نظر می رسد؟ وقتی کد را اجرا می کنیم و فایل PDF را تولید می کنیم – چند فیلد خالی خواهد داشت:
با انتخاب این فیلدها، می توانید از صفحه کلید خود برای وارد کردن جزئیات در موارد زیر استفاده کنید:
نتیجه
در این راهنما شما یاد گرفته اید که چگونه عناصر فرم را در PDF خود بگنجانید تا خواننده بتواند با PDF تعامل داشته باشد.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-08 05:13:04