Index: 0.11/wikitopdf/formats.py
===================================================================
--- 0.11/wikitopdf/formats.py (revision 6156)
+++ 0.11/wikitopdf/formats.py (working copy)
@@ -65,7 +65,7 @@
# Clean up
if titlefile: os.unlink(titlefile)
for f in files: os.unlink(f)
-
+
# Send the output
req.send_response(200)
req.send_header('Content-Type', {'pdf':'application/pdf', 'ps':'application/postscript', 'html':'text/html'}[format])
Index: 0.11/wikitopdf/wikitopdf.py
===================================================================
--- 0.11/wikitopdf/wikitopdf.py (revision 6156)
+++ 0.11/wikitopdf/wikitopdf.py (working copy)
@@ -7,6 +7,8 @@
from trac.util import escape
from trac.mimeview.api import IContentConverter
from trac.wiki.formatter import wiki_to_html
+from trac.web.href import Href
+from api import IWikiToPdfFormat
import tempfile
from tempfile import mkstemp
import os
@@ -16,6 +18,7 @@
import xml.sax.saxutils
EXCLUDE_RES = [
re.compile(r'\[\[PageOutline([^]]*)\]\]'),
+ re.compile(r'\[\[TracNav([^]]*)\]\]'),
re.compile(r'\[\[TracGuideToc([^]]*)\]\]'),
re.compile(r'\[\[TOC([^]]*)\]\]'),
re.compile(r'----(\r)?$\n^Back up: \[\[ParentWiki\]\]', re.M|re.I)
@@ -47,8 +50,6 @@
for r in EXCLUDE_RES:
text = r.sub('', text)
- env.log.debug('WikiToPdf => Wiki intput for WikiToPdf: %r' % text)
-
page = wiki_to_html(text, env, req)
page = page.replace('', '
'
+ page = page.replace('', '
'
+ '')
- page = page.replace(' ', ' |
')
+ page = page.replace('', '
')
page = page.replace('', '')
tracuri = env.config.get('wikitopdf', 'trac_uri')
tmp_dir = env.config.get('wikitopdf', 'tmp_dir')
@@ -91,7 +92,10 @@
#download
theimg = xml.sax.saxutils.unescape(theimg)
theimg = theimg.replace(" ","%20")
- urlretrieve(theimg, newimg)
+ try:
+ urlretrieve(theimg, newimg)
+ except:
+ env.log.error("Failed to retrieve image: %s" % (theimg))
IMG_CACHE[theimg] = newimg
env.log.debug("ISLAM the image is %s new image is %s" % ( theimg, newimg))
imgcounter += 1
@@ -211,10 +215,12 @@
"""Convert Wiki pages to PDF using HTMLDOC (http://www.htmldoc.org/)."""
implements(IContentConverter)
+ formats = ExtensionPoint(IWikiToPdfFormat)
+
# IContentConverter methods
def get_supported_conversions(self):
- yield ('pdf', 'WikiToPdf', 'pdf', 'text/x-trac-wiki', 'application/pdf', 7)
+ yield ('pdf', 'Pdf', 'pdf', 'text/x-trac-wiki', 'application/pdf', 7)
def convert_content(self, req, input_type, text, output_type):
@@ -224,9 +230,48 @@
page = wiki_to_pdf(text, self.env, req, base_dir, codepage)
hfile, hfilename = mkstemp('wikitopdf')
- os.write(hfile, page)
+ os.write(hfile, page)
os.close(hfile)
+ mo = None
+ if text.startswith('----'):
+ mo = re.match(r'\-+\r\n([^\-].*?)\r\n\-\-\-\-+\r\n([^\-].*?)\r\n\-\-\-\-+\r\n(.*)', text, re.DOTALL | re.MULTILINE)
+
+ if mo:
+ bookname = 'WikiToPdf'
+ title = 'WikiToPdf'
+ subject = 'WikiToPdf'
+ title = mo.group(2)
+ bn = re.match(r'.*?bookname\=(.*?)\r\n', mo.group(1), re.DOTALL | re.MULTILINE)
+ if bn:
+ bookname = bn.group(1)
+ bn = re.match(r'.*?title\=(.*?)\r\n', mo.group(1), re.DOTALL | re.MULTILINE)
+ if bn:
+ title = bn.group(1)
+ bn = re.match(r'.*?subject\=(.*?)\r\n', mo.group(1), re.DOTALL | re.MULTILINE)
+ if bn:
+ subject = bn.group(1)
+ pages = [p for p in re.findall(r'\[wiki:([^\] ]+)', mo.group(3))]
+ title_page = mo.group(1)
+
+ formats = {}
+ for provider in self.formats:
+ for format, name in provider.wikitopdf_formats(req):
+ formats[format] = {
+ 'name': name,
+ 'provider': provider,
+ }
+ self.env.log.error('TEST => Name: %s' % (name))
+
+ date = '2008-01-01'
+ version = '1.0'
+ format = 'pdf'
+
+ if not format or format not in formats:
+ raise TracError('Bad format given for WikiToPdf output.')
+
+ return formats[format]['provider'].process_wikitopdf(req, format, title, subject, pages, date, version, bookname)
+
htmldoc_args = { 'webpage': '', 'format': 'pdf14', 'charset': codepage }
htmldoc_args.update(dict(self.env.config.options('wikitopdf-page')))