ספריית Python בקוד פתוח לעיבוד קבצי PDF
API חינם של Python מאפשר ליניאריזציה של קובצי PDF וגישה לקובצי PDF מוצפנים. הוא תומך ביצירת PDF מאפס, העתקת דפים מ-PDF אחד לאחר, פיצול או מיזוג קובצי PDF ועוד רבים נוספים.
PikePDF היא ספריית Python PDF פשוטה מאוד המאפשרת למפתחי תוכנה לעבוד עם קבצי PDF בתוך יישומי Python. הוא מבוסס על QPDF, ספריית מניפולציה ותיקון PDF רבת עוצמה. PikePDF היא ספריית שינוי תוכן PDF ומספקת גישה ברמה נמוכה לקבצי PDF. משמעות הדבר היא שמשתמשים זקוקים לידע של PDF פנימיים ולהיכרות עם מפרטי PDF. הספרייה היא קוד פתוח וזמינה תחת רישיון MIT לשימוש ציבורי. הספרייה היא בקוד פתוח וזמינה תחת רישיון MPL-2.0.
PikePDF מספק תמיכה ללינאריות של קובצי PDF וגישה לקובצי PDF מוצפנים. הוא כלל קבוצה חזקה מאוד של תכונות הקשורות לניהול PDF כגון יצירת PDF מאפס, העתקת דפים מ-PDF אחד לאחר, פיצול או מיזוג קובצי PDF, חילוץ תמונה או טקסט מ-PDF, החלפת תוכן ב-PDF, תמיכה בתיקון PDF, עמוד תמיכה בהגדרות, ניהול מטא נתונים של PDF, עבודה עם מוגן סיסמה, עריכת מטא נתונים של PDF XMP, שינוי קובצי PDF קיימים ועוד.
.
תחילת העבודה עם PikePDF
PikePDF דורש Python 3.6 ומעלה. אתה יכול להתקין את PikePDF באמצעות pip. אנא השתמש בפקודה הבאה כדי להתקין אותו.
התקן את PikePDF באמצעות pip
pip install pikepdf
העתק דפים מ-PDF אחד לאחר באמצעות Python
ספריית הקוד הפתוח PikePDF מספקת את היכולת המאפשרת למפתחי תוכנה להעתיק דף מ-PDF אחד לאחר עם כמה שורות של קוד Python. העתקת עמודים בין אובייקטי PDF תיצור עותק רדוד של דף המקור בתוך קובץ ה-PDF היעד, ולכן שינוי העמודים לא ישפיע על מסמכי ה-PDF המקוריים. אפשר גם להחליף דפים ספציפיים בתוכן מותאם אישית. אפשר גם להעתיק דפים בתוך PDF מסוים.
פתח ופעל מסמכי PDF באמצעות Python
# PDF Documents Manipulation
from pikepdf import Pdf
new_pdf = Pdf.new()
with Pdf.open('sample.pdf') as pdf:
pdf.save('output.pdf')
# Copying pages from other PDFs
pdf = Pdf.open('../tests/resources/fourpages.pdf')
appendix = Pdf.open('../tests/resources/sandwich.pdf')
pdf.pages.extend(appendix.pages)
פיצול ומיזוג PDF באמצעות Python
ספריית PDF PikePDF מעניקה למפתחי תוכנה את הכוח לגשת לקבצי PDF קיימים ולפצל אותם למספר קובצי PDF בקלות. בזמן פיצול PDF כל מה שאנחנו דורשים הוא שקובצי ה-PDF החדשים חייבים להחזיק את דפי היעד. הספרייה גם דואגת להעביר נתונים הקשורים לכל עמוד, כך שכל עמוד עומד בפני עצמו. הספרייה כללה גם תמיכה למיזוג או שרשור של מסמכי PDF מרובים לאחד. אפשר גם להפוך את הסדר של דפי PDF רק עם כמה שורות קוד.
פיצול ומיזוג מסמכי PDF באמצעות Python
# PDF Splitting
pdf = Pdf.open('../tests/resources/fourpages.pdf')
for n, page in enumerate(pdf.pages):
dst = Pdf.new()
dst.pages.append(page)
dst.save(f'{n:02d}.pdf')
# Combine Multiple PDF pages into a single One
from glob import glob
pdf = Pdf.new()
for file in glob('*.pdf'):
src = Pdf.open(file)
pdf.pages.extend(src.pages)
pdf.save('merged.pdf')
נהל תמונות בתוך מסמך PDF באמצעות Python
ספריית PDF PikePDF מקלה על מפתחי תוכנה לטפל בתמונות בתוך קובץ PDF באמצעות פקודות Python. הספרייה כללה מספר פונקציות חשובות הקשורות לטיפול בתמונה כגון העתקת תמונות בתוך דף PDF, פתיחה והצגה של PDF, שינוי גודל תמונות, מניפולציה של תמונות ב-PDF, חילוץ תמונות מ-PDF, החלפת תמונות, מחיקת תמונה מ-PDF ועוד רבים נוספים. .
חלץ תמונה והחלף אותה ב-PDF באמצעות Python
# Extract Image & Replace PDF Images
import zlib
rawimage = pdfimage.obj
pillowimage = pdfimage.as_pil_image()
greyscale = pillowimage.convert('L')
greyscale = greyscale.resize((32, 32))
rawimage.write(zlib.compress(greyscale.tobytes()), filter=Name("/FlateDecode"))
rawimage.ColorSpace = Name("/DeviceGray")
rawimage.Width, rawimage.Height = 32, 32
טיפול במטא נתונים של PDF באמצעות Python
מטא נתונים של PDF כוללים מידע שימושי מאוד על מסמך PDF כגון שם המחבר, תאריך יצירה ושינוי, מילות מפתח, מידע על זכויות יוצרים וכן הלאה. ספריית PDF PikePDF כללה פונקציונליות מלאה לגישה ולקריאת מטא נתונים, חילוץ מטא נתונים, מחיקת ערכי מטא נתונים ממסמכי PDF. דוגמא הקוד הבאה מראה כיצד לחלץ מטא נתונים ממסמכי PDF.
כיצד לחלץ מטא נתונים של PDF באמצעות Python
# Extract PDF Metadata
import pikepdf
import sys
# get the target pdf file from the command-line arguments
pdf_filename = sys.argv[1]
# read the pdf file
pdf = pikepdf.Pdf.open(pdf_filename)
docinfo = pdf.docinfo
for key, value in docinfo.items():
print(key, ":", value)