#1468 closed enhancement (duplicate)
User-defined alternate formats [export] [wiki]
Reported by: | shad | Owned by: | Jonas Borgström |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | wiki system | Version: | 0.8.1 |
Severity: | normal | Keywords: | |
Cc: | m@…, tapted@…, danarmak@…, trac@… | Branch: | |
Release Notes: | |||
API Changes: | |||
Internal Changes: |
Description
It would be very usefull to allow user to create a plugin that shows page (Wiki-page for example) in different format.
For example, I would like to create an alternate format that allows to download a Wiki-page in OpenOffice format, or in PDF-format.
Another example, it would be nice to show timeline or roadmap in alternate formats as an image generated on the fly based on tickets states.
Attachments (2)
Change History (23)
comment:1 by , 20 years ago
Summary: | User-defined alternate formats → User-defined alternate formats [export] [wiki] |
---|
comment:2 by , 19 years ago
Question, how did these guys do this with trac? http://smartpm.python-hosting.com/?format=pdf
It renders their trac wiki as a pdf file.
comment:3 by , 19 years ago
At Python-Hosting.com we just hacked Wiki.py to add the "HTML - no header/footer" and the "PDF" formats. Here is the "HTML - no header/footer" code:
def display_html(self): self.req.send_response(200) self.req.send_header('Content-Type', 'text/html;charset=utf-8') self.req.end_headers() out = StringIO.StringIO() Formatter(self.req.hdf, self.env,self.db).format(self.page.text, out) self.req.write("<html><body>") self.req.write(out.getvalue()) self.req.write("</body></html>")
And here is the PDF code: it just makes a system call to the "HTMLDoc" tool (see http://www.htmldoc.org), which easily converts HTML documents to PDF.
def display_pdf(self): out = StringIO.StringIO() Formatter(self.req.hdf, self.env,self.db).format(self.page.text, out) html = StringIO.StringIO() html.write("<html><body>") html.write(out.getvalue()) html.write("</body></html>") # Write html content to random file i = random.randint(0,1000000) htmlF = '/tmp/trac-%s.html' % i pdfF = htmlF.replace('.html', '.pdf') f = open(htmlF, 'wb') f.write(html.getvalue()) f.close() os.system('export HTMLDOC_NOCGI="yes"; htmldoc --webpage %s -f %s' % (htmlF, pdfF)) self.req.send_response(200) self.req.send_header('Content-Type', 'application/pdf') self.req.end_headers() f = open(pdfF, 'rb') self.req.write(f.read()) f.close() os.remove(htmlF) os.remove(pdfF)
Hope this helps … And thanks again for a great tool !
comment:4 by , 19 years ago
I've attached a patch against [2737] which adds an !IWikiFormatExporter extension point. It currently exports the original 'txt' format in addition to a raw HTML format (because it was an easy example). Thus it should be trivial to create a PDF export plugin.
by , 19 years ago
Attachment: | wiki-exporter.diff added |
---|
by , 19 years ago
Attachment: | wiki-exporter-2.diff added |
---|
comment:6 by , 19 years ago
Matt suggested creating a generic MIME type converter rather than
having a specific Wiki exporter. This made sense to me and I have
implemented a patch, available [http://swapoff.org/files/mime-system.diff
here].
I also added an IMimeRegistry extension point which could be used to
perform "real" lookups against the [http://www.freedesktop.org/Standards
/shared-mime-info-spec shared-mime-info] database. At the moment it just
implements some basic types used by Trac, including trac/x-trac-wiki
.
comment:7 by , 19 years ago
wow - just what I've been looking for. Would anyone care to explain to me how I can get the .diff files merged into the wiki?
I looked everywhere, but couldn't find a Wiki.py file - I'm using the latest stable though.
Please help me!
comment:8 by , 19 years ago
There is no "Wiki.py" file in the diff file.
Please ask support and "howto" questions on the ML or on IRC, not in the bug tracking DB. You need the "patch" tool or TortoiseSVN for example to apply a patch file (.diff) onto the current code.
comment:9 by , 19 years ago
I have updated the patch a bit, and implemented a PDF export on top of the interface provided. Patch is here, PDF export plugin is here. It uses HTMLDOC, pretty much in the same manner as Python Hosting do.
comment:10 by , 19 years ago
James: the modifications above with Wiki.py
by done by Python-Hosting.com on Trac 0.8. Now those methods would be in source:/trunk/trac/wiki/web_ui.py.
comment:12 by , 19 years ago
Excellent patch, is it due to make its way into future releases?
I've written a little python script that uses this to pull down an entire wiki. The script is available at http://www.chris-read.net/files/trac-html-scraper.py
comment:13 by , 19 years ago
Cc: | added |
---|
comment:14 by , 19 years ago
Cc: | added |
---|
comment:15 by , 19 years ago
Cc: | added |
---|
See also ticket #2296 (export to LaTeX + pdflatex = much nicer PDF)
comment:16 by , 19 years ago
Cc: | added |
---|
comment:17 by , 19 years ago
Cc: | added |
---|---|
Type: | defect → enhancement |
I edited Chris Read's script. http://ragnarok.2y.net/trac-html-scraper.py
I added reports and tickets, authentication, and a few other tweaks.
I also put together a quick script (there may be transcription errors) that gets run in cron.daily. To use it, you add to the top level of the subversion directory 'trac_html' and also check in the '/trac' directory from htdocs (includes the CSS and PNG). This has worked well for us where we had a customer that had svn but not trac but wanted to see all our progress reports, etc, that we had in trac.
http://ragnarok.2y.net/trac_html.sh
Both of these were hand copied from printouts (but the python one was somewhat tested) so if you see any blatant errors, please email me. Also note I'm not a python programmer so I faked it a lot.
comment:18 by , 19 years ago
More updates and a cleaner patch at #2296. Will hopefully merge this into trunk soon.
comment:19 by , 18 years ago
TracHacks now has a PageToPdf plugin available that uses the IContentConverter
API to create a user-defined Wiki export format.
Also, #3332 discusses some of the work remaining for IContentConverter
.
comment:20 by , 18 years ago
Resolution: | → duplicate |
---|---|
Status: | new → closed |
Yes, let's close this one as dup of #3332, which implements this feature.
comment:21 by , 18 years ago
Cc: | removed |
---|
This would be a very needed feature here, too. I love to use Trac and its Wiki for all project-documentation. However, when I need something to pass on (i.e. as a final result), I'd like to be able to export all Wiki-Pages to a printable form or at least html.
I understand there's a dump-feature, but I have not yet tried it out, also it only supports html (which won't keep images I suppose?) and is not available from the admin-page.