mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Metadata reading and writing for TXT/PDF input/output.
This commit is contained in:
parent
c1a37749a6
commit
011e2811d2
@ -10,8 +10,7 @@ import os
|
||||
from calibre.customize.conversion import InputFormatPlugin
|
||||
from calibre.ebooks.pdf.pdftohtml import pdftohtml
|
||||
from calibre.ebooks.metadata.opf import OPFCreator
|
||||
from calibre.ebooks.metadata import MetaInformation
|
||||
#from calibre.ebooks.metadata.meta import metadata_from_formats
|
||||
from calibre.customize.builtins import PDFMetadataReader
|
||||
|
||||
class PDFInput(InputFormatPlugin):
|
||||
|
||||
@ -27,8 +26,7 @@ class PDFInput(InputFormatPlugin):
|
||||
with open('index.html', 'wb') as index:
|
||||
index.write(html)
|
||||
|
||||
#mi = metadata_from_formats([stream.name])
|
||||
mi = MetaInformation(_('Unknown'), _('Unknown'))
|
||||
mi = PDFMetadataReader(None).get_metadata(stream, 'pdf')
|
||||
opf = OPFCreator(os.getcwd(), mi)
|
||||
opf.create_manifest([('index.html', None)])
|
||||
opf.create_spine(['index.html'])
|
||||
|
@ -17,7 +17,7 @@ from calibre.customize.conversion import OutputFormatPlugin, \
|
||||
OptionRecommendation
|
||||
from calibre.ebooks.oeb.output import OEBOutput
|
||||
from calibre.ptempfile import TemporaryDirectory
|
||||
from calibre.ebooks.pdf.writer import PDFWriter
|
||||
from calibre.ebooks.pdf.writer import PDFWriter, PDFMetadata
|
||||
from calibre.ebooks.pdf.pageoptions import UNITS, unit, PAPER_SIZES, \
|
||||
paper_size, ORIENTATIONS, orientation, PageOptions
|
||||
|
||||
@ -88,7 +88,7 @@ class PDFOutput(OutputFormatPlugin):
|
||||
|
||||
out_stream.seek(0)
|
||||
out_stream.truncate()
|
||||
writer.dump(opf, out_stream)
|
||||
writer.dump(opf, out_stream, PDFMetadata(oeb_book.metadata))
|
||||
|
||||
if close:
|
||||
out_stream.close()
|
||||
|
@ -13,6 +13,7 @@ import os, shutil, sys
|
||||
|
||||
from calibre.ptempfile import PersistentTemporaryDirectory
|
||||
from calibre.ebooks.pdf.pageoptions import PageOptions
|
||||
from calibre.ebooks.metadata import authors_to_string
|
||||
from calibre.ebooks.metadata.opf2 import OPF
|
||||
|
||||
from PyQt4 import QtCore
|
||||
@ -22,6 +23,18 @@ from PyQt4.QtWebKit import QWebView
|
||||
|
||||
from pyPdf import PdfFileWriter, PdfFileReader
|
||||
|
||||
class PDFMetadata(object):
|
||||
def __init__(self, oeb_metadata=None):
|
||||
self.title = _('Unknown')
|
||||
self.author = _('Unknown')
|
||||
|
||||
if oeb_metadata != None:
|
||||
if len(oeb_metadata.title) >= 1:
|
||||
self.title = oeb_metadata.title[0].value
|
||||
if len(oeb_metadata.creator) >= 1:
|
||||
self.author = authors_to_string([x.value for x in oeb_metadata.creator])
|
||||
|
||||
|
||||
class PDFWriter(QObject):
|
||||
def __init__(self, log, popts=PageOptions()):
|
||||
if QApplication.instance() is None:
|
||||
@ -38,7 +51,8 @@ class PDFWriter(QObject):
|
||||
self.tmp_path = PersistentTemporaryDirectory('_any2pdf_parts')
|
||||
self.popts = popts
|
||||
|
||||
def dump(self, opfpath, out_stream):
|
||||
def dump(self, opfpath, out_stream, pdf_metadata):
|
||||
self.metadata = pdf_metadata
|
||||
self._delete_tmpdir()
|
||||
|
||||
opf = OPF(opfpath, os.path.dirname(opfpath))
|
||||
@ -88,7 +102,7 @@ class PDFWriter(QObject):
|
||||
self.logger.info('Combining individual PDF parts...')
|
||||
|
||||
try:
|
||||
outPDF = PdfFileWriter()
|
||||
outPDF = PdfFileWriter(title=self.metadata.title, author=self.metadata.author)
|
||||
for item in self.combine_queue:
|
||||
inputPDF = PdfFileReader(file(item, 'rb'))
|
||||
for page in inputPDF.pages:
|
||||
|
@ -10,7 +10,7 @@ import os
|
||||
from calibre.customize.conversion import InputFormatPlugin
|
||||
from calibre.ebooks.markdown import markdown
|
||||
from calibre.ebooks.metadata.opf import OPFCreator
|
||||
#from calibre.ebooks.metadata.meta import metadata_from_formats
|
||||
from calibre.customize.builtins import TXTMetadataReader
|
||||
|
||||
class TXTInput(InputFormatPlugin):
|
||||
|
||||
@ -26,12 +26,11 @@ class TXTInput(InputFormatPlugin):
|
||||
md = markdown.Markdown(
|
||||
extensions=['footnotes', 'tables', 'toc'],
|
||||
safe_mode=False,)
|
||||
html = '<html><body>'+md.convert(txt)+'</body></html>'
|
||||
html = '<html><head><title /></head><body>'+md.convert(txt)+'</body></html>'
|
||||
with open('index.html', 'wb') as index:
|
||||
index.write(html.encode('utf-8'))
|
||||
|
||||
#mi = metadata_from_formats([stream.name])
|
||||
mi = None
|
||||
mi = TXTMetadataReader(None).get_metadata(stream, 'txt')
|
||||
opf = OPFCreator(os.getcwd(), mi)
|
||||
opf.create_manifest([('index.html', None)])
|
||||
opf.create_spine(['index.html'])
|
||||
|
@ -34,7 +34,7 @@ class TXTOutput(OutputFormatPlugin):
|
||||
def convert(self, oeb_book, output_path, input_plugin, opts, log):
|
||||
metadata = TxtMetadata()
|
||||
if opts.prepend_metadata.lower() == 'true':
|
||||
metadata.author = opts.authors if opts.authors else authors_to_string(oeb_book.metadata.authors.value) if oeb_book.metadata.authors != [] else _('Unknown')
|
||||
metadata.author = opts.authors if opts.authors else authors_to_string([x.value for x in oeb_book.metadata.creator]) if oeb_book.metadata.creator != [] else _('Unknown')
|
||||
metadata.title = opts.title if opts.title else oeb_book.metadata.title[0].value if oeb_book.metadata.title != [] else _('Unknown')
|
||||
|
||||
writer = TxtWriter(TxtNewlines(opts.newline).newline, log)
|
||||
|
Loading…
x
Reference in New Issue
Block a user