Для обрезки полей в Linux есть утилита pdfcrop. Эта утилита является частью пакета texlive-extra-utils:
# apt-get install texlive-extra-utils $ pdfcrop --clip --margin 5 исходный_файл.pdf целевой_файл.pdf
Автор: Roman Brovko
Для обрезки полей в Linux есть утилита pdfcrop. Эта утилита является частью пакета texlive-extra-utils:
# apt-get install texlive-extra-utils $ pdfcrop --clip --margin 5 исходный_файл.pdf целевой_файл.pdf
Автор: Roman Brovko
Вот список некоторых возможностей xhtml2pdf:
Выглядит, в общем, полезной штукой.
xhtml2pdf: конвертер HTML/CSS в PDF на Python
Согласно сайту, xhtml2pdf бесплатен для коммерческого и некоммерческого использования.
Автор: Ishayahu Lastov
Автор: Ishayahu Lastov
import pyfpdf
pdf = pyfpdf.FPDF(format='letter')
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="Welcome to Python!", align="C")
pdf.output("tutorial.pdf")import pyfpdf
pdf = pyfpdf.FPDF(format='letter')
pdf.add_page()
pdf.set_font("Arial", size=12)
pdf.cell(200, 10, txt="Welcome to Python!", ln=1, align="C")
pdf.cell(200,10,'Powered by FPDF',0,1,'C')
pdf.output("tutorial.pdf")import pyfpdf
########################################################################
class MyPDF(pyfpdf.FPDF):
""""""
#----------------------------------------------------------------------
def header(self):
"""
Заголовок на каждой странице
"""
# добавляем логотип
self.image("logo.png", x=10, y=8, w=23)
# располагаем логотип справа
self.cell(w=80)
# устанавливаем шрифт для заголовка, B=Bold
self.set_font("Arial", style="B", size=15)
# заголовок страницы
self.cell(40,10, "Python Rules!", border=1, ln=0, align="C")
# вставляем разрыв строки в 20 pixels
self.ln(20)
#----------------------------------------------------------------------
def footer(self):
"""
Нижний колонтитул на каждой странице
"""
# располагаем footer в 15mm от конца страницы
self.set_y(-15)
# устанавливаем шрифт, I=italic
self.set_font("Arial", style="I", size=8)
# отображаем номер страницы по центру
pageNum = "Page %s/{nb}" % self.page_no()
self.cell(0, 10, pageNum, align="C")
#----------------------------------------------------------------------
if __name__ == "__main__":
pdf = MyPDF()
pdf.alias_nb_pages()
pdf.add_page()
pdf.set_font("Times", size=12)
# добавляем несколько строк на страницу
for i in range(1, 50):
pdf.cell(0, 10, "Line number %s" % i, border=0, ln=1)
pdf.output("tutorial2.pdf")
Автор: Ishayahu Lastov
from pdfrw import PdfReader, PdfWriter
pages = PdfReader(r'C:UsersmdriscollDesktop1.pdf', decompress=False).pages
other_pages = PdfReader(r'C:UsersmdriscollDesktop2.pdf', decompress=False).pages
writer = PdfWriter()
writer.addpages(pages)
writer.addpages(other_pages)
writer.write(r'C:UsersmdriscollDesktopout.pdf')
writer.trailer.Info = IndirectPdfDict(
Title = 'My Awesome PDF',
Author = 'Mike',
Subject = 'Python Rules!',
Creator = 'myscript.py',
)
# http://code.google.com/p/pdfrw/source/browse/trunk/examples/rl1/subset.py
import sys
import os
from reportlab.pdfgen.canvas import Canvas
import find_pdfrw
from pdfrw import PdfReader
from pdfrw.buildxobj import pagexobj
from pdfrw.toreportlab import makerl
def go(inpfn, firstpage, lastpage):
firstpage, lastpage = int(firstpage), int(lastpage)
outfn = 'subset_%s_to_%s.%s' % (firstpage, lastpage, os.path.basename(inpfn))
pages = PdfReader(inpfn, decompress=False).pages
pages = [pagexobj(x) for x in pages[firstpage-1:lastpage]]
canvas = Canvas(outfn)
for page in pages:
canvas.setPageSize(tuple(page.BBox[2:]))
canvas.doForm(makerl(canvas, page))
canvas.showPage()
canvas.save()
if __name__ == '__main__':
inpfn, firstpage, lastpage = sys.argv[1:]
go(inpfn, firstpage, lastpage)
Автор: Ishayahu Lastov