def convert_pdf(self, pdf_data): """Converts PDF to PNG images. Returns an array of PNG data.""" asset = conversion.Asset('application/pdf', pdf_data, 'sheet.pdf') conversion_request = conversion.Conversion(asset, 'image/png') result = conversion.convert(conversion_request) if result.assets: return [asset.data for asset in result.assets] else: raise Exception('Conversion failed: %d %s' % (result.error_code, result.error_text))
def post(self): logging.info('processing %s ' % (self.request.url)) content = self.request.get('src') asset = conversion.Asset("text/html", content, "Content.html") conversion_obj = conversion.Conversion(asset, "application/pdf") result = conversion.convert(conversion_obj) if result.assets: for asset in result.assets: self.response.headers['Content-Type'] = "application/pdf" self.response.out.write(asset.data) else: self.response.out.write('Error Code : %s <br/>Error Text : %s' % (result.error_code, result.error_text))
def test_conversion(): from google.appengine.api import conversion asset = conversion.Asset('text/html', u'<html><head><meta charset=\'utf-8\'></head><body>testtest<br/>てすと</body></head></html>'.encode('utf-8'), 'index.html') conversion_obj = conversion.Conversion(asset, 'application/pdf') # async #rpc = conversion.create_rpc() #conversion.make_convert_call(rpc, conversion_obj) #result = rpc.get_result() result = conversion.convert(conversion_obj) if result.assets: return result.assets[0].data else: raise
def convert_html(f, title, entries, output_type='application/pdf'): try: html = render('pdf.html', {'title': title, 'entries': entries}) asset = conversion.Asset('text/html', deunicode(html)) conversion_request = conversion.Conversion(asset, output_type) result = conversion.convert(conversion_request) if result and result.assets: for i in result.assets: f.write(i.data) return None else: logging.error('Conversion error: %s', result.error_text) return result.error_text except Exception, e: logging.error('Conversion exception: %s', e) return str(e)
def convertPdf(data, imageWidth=1000, dstContentType='image/png', fileName='dummyFileName', pageNumber=None): """ Pass in the raw binary PDF data. Returns the raw binary image data result after rasterization. """ asset = conversion.Asset("application/pdf", data, fileName) requestKwargs = {'image_width': imageWidth} if pageNumber is not None: requestKwargs.update({'first_page': pageNumber, 'last_page': pageNumber}) conversionObj = conversion.Conversion(asset, dstContentType, **requestKwargs) result = conversion.convert(conversionObj) if result.assets: return result.assets[0].data else: raise PdfConversionError('%s [code %s]' % (result.error_text, result.error_code))
def convert_html(f, title, entries, output_type='application/pdf'): try: html = render('pdf.html', {'title': title, 'entries': entries}) asset = conversion.Asset('text/html', deunicode(html)) conversion_request = conversion.ConversionRequest(asset, output_type) for entry, content, blobs in entries: for b in blobs: if b.type == models.BLOB_TYPE_IMAGE: data = blobstore.BlobReader(b.blob, buffer_size=1048576).read() conversion_request.add_asset(conversion.Asset(b.blob.content_type, data, str(b.key()))) result = conversion.convert(conversion_request) if result and result.assets: for i in result.assets: f.write(i.data) return None else: logging.error('Conversion error: %s', result.error_text) return result.error_text except Exception, e: logging.error('Conversion exception: %s', e) return str(e)