دستکاری PDFها با PDF Toolkit (1773 مجموع کلمات موجود در متن) (7503 بار مطالعه شده است)
دستکاری PDF ها بوسیلهی PDF Toolkit
0.مقدمه
اگر پیش
از ایــن با کاغذ کارهای روزمرهی خود
را انجام میدادید، مطمئنا برروی میز
شما چسب، منگنه، پانچ، سوزن، گیره و قیچی
وجود داشته؛ اگر امروز کارهای خود را به
صورت دیجیتالی انجام میدهید یکی از
فرمتهایی که بسیار با آن ســر و کــار
خواهید داشت فرمت PDF
یا
Portable
Document Format خواهد
بود.
فرمتی
از سوی Adobe
که
در اکثر سیستم عامــلها و حتی تجهیزاتی
مانند گوشیهای موبایل و کامپیوترهای
دستی مانند Palm
پشتیبانی
میشود.
اگر
از PDF
استفاده
میکنید pdftk
برای
شما حکم منگنه و چسب و پانج و سوزنن را
دارد.
با
pdftk
میتوانید
فایلهای pdf
خــود
را نطــم بــبخشید، ببرید، بچسبانید،
فایل دیگری به آنها ضمیمه کنید و ....
در
این مقاله قصــد دارم شـــما را با
قابلیتهای اصلی این برنامه هرچند
مختصر آشنا کنم.
برای
کاربری پیشرفته میتونید به مستندات
(مقالات،
راهنماها)
برنامه
در سایت اصلی یا در سایتهای دیگر مراجعه
کنید.
1.تهیهی
برنامه
برنامهی
pdftk
یک
برنــامهی آزاد تحـــت مجوز GNU/GPL
است[۱]
که
بـه صــورت رایگان قابل دریافت است.
برای
دریافت برنامه میتوانید به سایت اصلی
آن در [۲]
مراجعه
کنید.
البته
بسیاری از تــوزیعهای لینوکس مانند
Debian،
Gentoo
و
SuSE
این
برنامه را در مخـــازن یا دیسکهای نصـــب
بـــه هــمــراه دارنــد.
در
بـــخش دانلودها نیز بستههای rpm
برای
SuSE
و
Mandrake!
وجود
دارد.
اگر
همکارتان از لینوکس استفاده
نمیکند،میتـــوانید این برنامه را
به او نیز معرفی کنید چرا که این برنامه
عــلاوه بر سیستم گنو/لینوکس
برای ســـیســتــمعامــلهـای Sun
Solaris و
Mac
OS X و
Microsoft
Windows و
FreeBSD
نـیــز
موجــود است.
بــرای
دریافت فــایــلهای نــصــــب بــاینری
یا دریافت سورسکد میتوانید به بخش
دانلود سایت مراجعه کنید.
جدیدترین
نسخهی این برنامه تا زمان نوشتن این
مقاله ۱.۱۲
است.برنامهی
pdf
toolkit را
باید در کنسول اجرا کنید، در حقیقت
برنامــهای برای خط فرمان است و رابط
گرافیکی نــدارد و همین موضوع کار با آن
را بسیار سادهتر کرده است، کافیست چند
دکمه بفشارید تا PDF
شما
به کل تغییر کند!
ساختار
اصلی فرمانها به صورت زیر است:
pdftk inputfile(s)
operation [options] output outputfile [password] [userpermissions]
2.دریافت
اطلاعات دربارهی سند
قبل از
کار با یک فایل PDF
همیشه
بهتر است اطلاعاتی دربارهی فایل داشته
باشید، این که فایل بر اساس کدام نسخه از
PDF
ایــجاد
شـده، توسط چه برنامهای ایجاد شده و
غیره.
بـــه
ایــن اطــلاعات Meta-Informations
مــیگویــنـد،
ای اطلاعات در حین ایجاد توسط برنامهی
نویسندهی PDF
یا
برنامهی ایجاد کنندهی PDF
در
فایل PDF
ذخیره
میشوند.
برای
دیدن این اطلاعات نیاز به یک فایل متنی
جدید خواهید داشت، به نمونهی زیر توجه
کنید:
~$ pdftk example.pdf
dump_data output info.txt
~$ more info.txt
InfoKey: Creator
InfoValue:
QuarkXPress(tm) 6.5
InfoKey: Title
InfoValue: Layout 1
InfoKey: Producer
InfoValue:
QuarkXPress(tm) 6.5
InfoKey: XPressPrivate
InfoValue:
%%DocumentProcessColors: Cyan Magenta Yellow
Black %%DocumentCustomColors: (PANTONE 485
C) %%RGBCustomColor: .912 .137 .092 (PANTONE 485
C) %%EndComments
InfoKey: CreationDate
InfoValue:
20060306170513
PdfID0:
5e4a1ed16b804656d3e6e104af7e5ae
PdfID1:
5e4a1ed16b804656d3e6e104af7e5ae
NumberOfPages: 2
PageLabelNewIndex: 1
PageLabelStart: 1
PageLabelNumStyle:
DecimalArabicNumerals
~$
در این
نمونه اطلاعات ذخیره شده در فایل Example.pdf
در
فایل info.txt
دخیره
خواهد شد.
نیازی
به ساخت info.txt
از
پیش نیست.
این
فایل را خود برنامه ایجاد خواهد کرد.
با
دستور cat
یا
more
میتوانید
محتویات قایل info.txt
را
ببینید.
این
محتویات بسته به برنامهی ایجاد کنندهی
PDF
و
نیز تنطیمات کاربر میتواند متغییر باشد.
برای
به روز کردن اطلاعات موجود در یک فایل PDF
کافیست
اطلاعاتی را که نیاز به به روز رسانی دارند
را در یک فایل متنی ذخیره کنید و سپس با
استفاده از روش زیر آنها را به روز
کنید.(فقط
فیلدهایی را که میخواهید به روز کنید
در فایل متنی ورودی بنویسید).
در
اینجا ابتدا فایلی با محتویاتی نیاز به
تغییردارند ایجاد میکنم:
InfoKey: Creator
InfoValue: TeX
InfoKey: Title
InfoValue: My Project
Review
InfoKey: Producer
InfoValue:
QuarkXPress(tm) 6.5
پس از
ایجاد فایل با محتویاتی که قرار است تغییر
کنند، ه روش زیر اطلاعات را به روز میکنیم:
~$ pdftk Example.pdf
update_info update.txt output updated.pdf
~$pdftk updated.pdf
dumpdata output newinfo.txt
~$ more newinfo.txt
InfoKey: Creator
InfoValue: TeX
InfoKey: Title
InfoValue: My Project
Review
InfoKey: Producer
InfoValue:
QuarkXPress(tm) 6.5
InfoKey: XPressPrivate
InfoValue:
%%DocumentProcessColors: Cyan Magenta Yellow
Black %%DocumentCustomColors: (PANTONE 485
C) %%RGBCustomColor: .912 .137 .092 (PANTONE 485
C) %%EndComments
InfoKey: CreationDate
InfoValue:
20060306170513
NumberOfPages: 2
PageLabelNewIndex: 1
PageLabelStart: 1
PageLabelNumStyle:
DecimalArabicNumerals
~$
برای
دیدن اطلاعات فایلهای PDF
میتوانید
از برنامــهی pdfinfo
نیز
کمک بگیرید.
این
برنامه نیز یک برنامهی آزاد تحت مــجوز
GNU
GPL اســت
و در بـسیاری از توزیعهــای لــینوکسی
مشهـور مــاننــد Debian
و
Gentoo
یا
Fedora
Core به
صورت پیشفــرض نصــب شــده است.
برای
Update
کردن
این اطالعات نمیتوانید از pdfinfo
استفاده
کنید و باید از روش یادشدهی بالا یا
برنامههای دیگر کمک بگیرید.(برای
دریافت اطلاعات بیشتر دبربارهی این
برنامه به صفحات Manual
آن
مراجعه کنید،کافیست در کنسول بزنید:
man pdfinfo)
3.جدا
کردن و چسباندن صفحات
بسیار
خوب، به بخض اصلی یعنی چسباندن و جدا کردن
صفحات PDF
رسیدیم،
با pdftk
مانند
یک صحاف میتوانید کتاب الکترونیکی خود
را لف و نشر کنید و سپس صفحاتی را که نیاز
ندارید برداشته یا صفحات جدید را به آن
اضافه کنید و در نهایت دوباره فایل PDF
خود
را سرهم کنید.
بسیار
خوب کار خود را با جدا کردن صفحــــــات
Pdf
خود
شروع میکینم،برای جدا کردن صفحات فایل
Example.pdf
به
صورت زیر عمل میکنیم:
$ pdftk Example.pdf
burst output Page%03d.pdf
بدین
ترتیـب فایـل Example.pdf
بــه
فایــلهای Page001.pdf
و
Page002.pdf
و
...
تبدیــل
میشود.
همانطور
که حتما خودتان حدس زدهاید 03d%
به
برنامه میگوید تا شمارهی صفحات مندرج
پس از اسامی فایلهای جدا شده دارای سه
رقــم بـاشند.(برای
نمونه 001،
اگر این مقدار را به 06d%
تبدیل
کنید ارقام بعد از اسامی مانند 000001
خـواهند
بود.)
در
صورتی که میخواهید تمام صفحات در یک
دایرکتوری به صورت مرتب جدا شده باشند
میتوانید دستور را به صورت زیر استفاده
کنید:
~$mkdir splitted
~$ pdftk Example.pdf
burst output splitted/Page%03d.pdf
~$ ls splitted/
Page001.pdf Page002.pdf
حال پس
از جدا کردن صفحات صفحات جدید خود را اضافه
کنید و یا صفحاتی که دیگر نیازی نیست را
جدا کنید،پس از ایـن مرحلــهی چــسباندن
صفــحات اســت، مهم نیست که حتما تمام
فایلها یک صفحهای باشند، بـرای نمونه
ممکن است شما بخواهید تمام فایلهای PDF
دانـلود
شده از مجلهی IranTUX
را
به یکدیگر بچسبانید تا یکپارچه شوند،
در این صورت فایلهای PDF
شما
هر کدام چند صفحهای هستند، برای چسباندن
صفحات به صورت زیر عمل کنید:
$pdftk Page001.pdf
Page002.pdf Page4.pdf cat output New.pdf
بسیار
خوب فایل New.pdf
حاوی
صفحات ۱ و ۲ و۴ است، اگر بجای فایل
Page001.pdf
فایل
pdftk.pdf
و
بجای فایلهای بعدی سایــر فــایلهای
PDF
همــین
شماره از مجــله را قرار دهید،فایل
نهایی یعنی New.pdf
فایلی
یکپارچه خواهد بود شامل تمام مقالات این
شماره از مجلهی ایرانتاکس خواهد بود.
یک
سناریوی دیگر، فرض کنیم شما فردی بسیار
فعال و ماهر در شغل خود هستید و رزومهی
کاریتان ۱۰۰ صفحه است، حال میخواهید
صفحات ۶۰ تا ۸۵ و ۹۰ تا ۹۷ آن را برای مدیر
خود بفرستید، به علاوه میخواهید درپایان
آن نامهای که در فایل mail.pdf
دارید
را نیز اضافه کنید، اگر بخواهید مانند
بالا رفتار کنید باید تمام صفحات را جدا
کنید، سپس صفحات ۶۰ و ۶۱ و ...
و
۸۵ و نیز ۹۰ و ۹۱ و ..و
۹۷ و در نهایت فایل mail.pdf
را
در دستور خود ذکر کنید و نتیجه را به فایل
نهایی منتقل کنید،این کار زمان بسیار
زیادی را هدر خواهد داد، مسلمــا Sid
Steward نویسندهی
برنامه برای این سناریو راه حلی دارد:
~$pdftk A=myresume.pdf
B=mail.pdf cat A60-85 A90-97 B output forboss.pdf
نتیجه
فایل forboss.pdf
است
که شامل صفحات ۶۰تا۸۵ و ۹۰تا۹۷ فـایل
رزومه و نیز تمام فایل mail.pdf
است.
با
کمی دقت و تفکر میتوانید روشهای سادهتر
و کارامدتری برای کارهایتان بیابید.
4.پسورد
و مجوزهای کاربر
یکی از
ویژگیهای فایلهای PDF
توانایی
رمزگذاری است، شما میتوانید با تعریف
یک عدد رمز برای فایــل PDF
جلوی
دسترسی افراد غیر مجاز به فایلتان را
بگیرید.
برای
این کار کافیست به روش زیر عمل کنید:
$pdftk resume.pdf output
sec_resume.pdf owner_pw 12345 user_pw 1234567890
فایل
خروجی یعنی sec_resume.pdf
یک
فایل رمزگذاری شده است، باز کردن این فایل
با هر برنامهای نیاز به وارد کردن کلمهی
عبور خواهد داشت.
امـا
دو رمز عبـور برای چه؟ یــکی Owner
یا
صاحـب فایل و دیگری برای User
یــا
کاربر فایل اســت.
صــاحب
فایــل میتوانید مجوزهای دیگری کــه
در قسمت بعد خواهیم گفت را تغیردهد،اما
کاربر فقط میتوانید اعمالی را که به اون
اجازه داده شدهآند را انجام دهد.
هر فایل
PDF
از
سوی نویسنده یا ایجاد کنندهی فایل
میتواند تعدادی مجوز دریافت کند، برای
نمونه مجوز کپی محتوا یا CopyContent
که
به شما اجازهی کپی تصاویر و متن داخل
PDF
را
میدهد.
مجوز
چاپ یا Printing
که
مجوز چاپ است نیز مجــوز DegradedPrinting
که
مــجوز چــاپ با کیفیت پــایین است.
صاحب
یـا Owner
میتواند
یک یا هر کدام از این مجوزها و نیز مجوزهای
دیگر را تغییر دهد.
به
نمونهی زیر توجه کنید:
pdftk resume.pdf output
New.pdf owner_pw 12345 user_pw 1234567890 allow printing
CopyContects
فایل
New.pdf
قابل
چاپ است و ومحتوای داخل آن را میتوانید
کپی کنید.
در
صورتی که میخواهید دو فایلی که دارای
پسورد هستند را با یکدیگر ترکیب کنید
میتواند از روش زیر بهره بگیرید:
$pdftk A=firs.pdf
B=second.pdf input_pw A=12345 cat output firstandsecond.pdf user_pw
1234567890
در
نمونهی بالا فایل fisrt.pdf
یک
فایل رمزگذاری شده با پسورد 12345
است
که کا با فایل second.pdfترکیبش
نمودیم و در نهایت فایل firstandsecond.pdf
را
با رمز 1234567890
ایجاد
کردیم.
5.سخن
نهایی
برنامه
های بسیاری رد سیستم عاملهای مختلف برای
کار با PDF
ها
وجود دارند، برنامههایی مانند Acrobat
Reader یا
TeX
(بخوانید
تخ).
یادگیری
و استفاده از برنامههای غیر آزادی مانند
Adobe
Acrobat چندان
سخت نیست اما اگر برای کارهای خود به
برنامــهای آزاد و همه فن حریف نیاز
دارید میتوانید TeX
را
آغاز کنید، این زبان بیشتر شبیه به یک
زبان برنامه نویسـی برای ایجاد فایــلهای
PDF
است
و نــتایج فوقالعادهای به ارمغان
میآورد.
اما
اگر فرصتی برای یادگیری ندارید و یا
نمیخواهید خود را درگیر مسائل پیچیده
کنید، PDFTK
یــکی
از ابزارهای ساده و کم حجم است که کارهای
اصلی را برای شما انجام میدهد.
مسلما
با این ابزار نمیتوانید محتویات فایلهای
PDF
را
ایجاد و یا ویرایش کنید، کاری که با TeX
به
ظرافت و با قدرت بسیاری قابل انجام است.
نویسنده:
نوید
عبدی <Navid
~ GNUIran.org>
پی نوشت:
[۱].http://www.gnu.org/licenses/gpl.html
[۲].
آدرس
سـایت اصـلی:
http://www.accesspdf.com/pdftk
بـرای
دریـافت برنامه میتوانید به اینجا
مراجعه کنید:
http://www.accesspdf.com/article.php/20041130153545577
http://en.wikipedia.org/wiki/Image:Schreibtisch.2.JPG
PDF Version |