i’m working on a task that i want to convert text file into PDF one using conversion API that is in GAE , i tried as: https://developers.google.com/appengine/docs/python/conversion/overview
This is the code that i used:
from __future__ import with_statement
from google.appengine.api import files
import cgi, cgitb ; cgitb.enable()
import StringIO
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
import mimetypes
from google.appengine.ext import blobstore
from mimetypes import guess_type
from google.appengine.api import conversion
def mime_type(filename):
return guess_type(filename)[0]
class get(webapp.RequestHandler):
def post(self):
form = cgi.FieldStorage()
file_upload = form['file']
name=file_upload.filename
m=mimetypes.guess_type(name)[0]
data=file_upload.file.read()
buf = StringIO.StringIO()
asset = conversion.Asset("text/plain", data, file_upload.filename)
conversion_obj = conversion.ConversionRequest(asset, "application/pdf")
result = conversion.convert(conversion_obj)
if result.assets:
for asset in result.assets:
buf.write(asset.data)
else:
print "ERROR"
u_file = files.blobstore.create(mime_type="application/pdf",_blobinfo_uploaded_filename="test.pdf")
data=buf.getvalue()
with files.open(u_file, 'a') as f:
f.write(data)
files.finalize(u_file)
blob_key = files.blobstore.get_blob_key(u_file)
blob_info = blobstore.get(blob_key)
name2 = blob_info.filename
self.response.out.write("""<html><br><body style="background-color:#CC9999"><b><font size="5" face="Batang" ><center> <li ><a href="download.py?blob_key=%s" style="color:black">%s
</center></font><hr></body></html>
""" % (str(blob_key),str(name2)))
def main():
application = webapp.WSGIApplication( [(r'/get.py', get)], debug=True)
run_wsgi_app(application)
if __name__ == "__main__":
main()
download.py:
from __future__ import with_statement
from google.appengine.ext import blobstore
from google.appengine.ext import webapp
from google.appengine.ext.webapp import blobstore_handlers
from google.appengine.ext.webapp.util import run_wsgi_app
from mimetypes import guess_type
def mime_type(filename):
return guess_type(filename)[0]
class Thumbnailer(blobstore_handlers.BlobstoreDownloadHandler):
def get(self):
blob_key = self.request.get("blob_key")
if blob_key:
blob_info = blobstore.get(blob_key)
if blob_info:
save_as1 = blob_info.filename
type2=mime_type(blob_info.filename)
self.send_blob(blob_info,content_type=type2,save_as=save_as1)
return
def main():
application = webapp.WSGIApplication([
(r'/download.*', Thumbnailer),
], debug=True)
run_wsgi_app(application)
if __name__ == '__main__':
main()
EDIT:i edited the code, and when i try to print buf.getvalue(),i get :failed to load pdf document.
But when i try to open this PDF,i can’t open it and the adobe reader gives error immediately that it can’t open the file. Sorry i’m still beginner,any help please? Any suggestions are welcome.
Here is my working code sample(it’s for Python2.7 runtime though). Good luck!