어리석은 질문이라면 유감입니다. 나는 GCP에 아주 새로운 있습니다.Google Cloud Storage에 저장된 이미지의 PDF를 만드는 방법은 무엇입니까?
웹 앱의 경우 Cloud Storage에 저장된 이미지에서 PDF를 만들어야합니다.
먼저, 파이썬 패키지 fpdf
을 Cloud Storage에 저장된 파일과 함께 사용하려고 시도했으며 이것이 가능한지 확인했습니다. 이미지가 온라인에 저장되므로 urllib2
을 사용하여 이미지를 가져옵니다.
코드 :
from fpdf import FPDF
import urllib2
import os
imagelist = ["https://storage.googleapis.com/seventh-terrain-179700.appspot.com/excuses.jpg", "https://storage.googleapis.com/seventh-terrain-179700.appspot.com/excuses2.jpg"]
pdf = FPDF()
i = 0
for image in imagelist:
image = urllib2.urlopen(image)
# writing image files in current folder
with open('image'+str(i)+'.jpg','wb') as output:
output.write(image.read())
pdf.add_page()
pdf.image('image'+str(i)+'.jpg', 10, 10, 100, 100) # pdf.image(image,x,y,w,h)
# removing images
os.remove('image'+str(i)+'.jpg')
i += 1
# Creating PDF in current folder
pdf.output("yourfile.pdf", "F")
이 말을 잘. 나는 오류가 발생하고,
import webapp2
from fpdf import FPDF
import urllib2
import os
pdf = FPDF()
class MainPage(webapp2.RequestHandler):
def get(self):
imagelist = ["https://storage.googleapis.com/seventh-terrain-179700.appspot.com/excuses.jpg", "https://storage.googleapis.com/seventh-terrain-179700.appspot.com/excuses2.jpg"]
pdf = FPDF()
i = 0
for image in imagelist:
image = urllib2.urlopen(image)
with open('image'+str(i)+'.jpg','wb') as output:
output.write(image.read())
pdf.add_page()
pdf.image('image'+str(i)+'.jpg', 10, 10, 100, 100) # pdf.image(image,x,y,w,h)
os.remove('image'+str(i)+'.jpg')
i += 1
pdf.output("yourfile.pdf", "F")
application = webapp2.WSGIApplication([('/', MainPage)],
debug=True)
을 :하지만
는 그럼 난 로컬 서버에서 동일한 코드를 배포하려WARNING 2017-12-08 19:21:56,184 sandbox.py:1082] The module _winreg is whitelisted for local dev only. If your application relies on _winreg, it is likely that it will not function properly in production.
WARNING 2017-12-08 14:21:56,190 urlfetch_stub.py:551] Stripped prohibited headers from URLFetch request: ['Host']
ERROR 2017-12-08 19:21:57,332 webapp2.py:1528] [Errno 30] Read-only file system: 'image0.jpg'
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1511, in __call__
rv = self.handle_exception(request, response, e)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1505, in __call__
rv = self.router.dispatch(request, response)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1253, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1077, in __call__
return handler.dispatch()
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 547, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 545, in dispatch
return method(*args, **kwargs)
File "C:\MyMiniGCPProjects\FPDF\main.py", line 23, in get
with open('image'+str(i)+'.jpg','wb') as output:
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\python\runtime\stubs.py", line 278, in __init__
raise IOError(errno.EROFS, 'Read-only file system', filename)
IOError: [Errno 30] Read-only file system: 'image0.jpg'
ERROR 2017-12-08 19:21:57,339 wsgi.py:279]
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 267, in Handle
result = handler(dict(self._environ), self._StartResponse)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1519, in __call__
response = self._internal_error(e)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1511, in __call__
rv = self.handle_exception(request, response, e)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1505, in __call__
rv = self.router.dispatch(request, response)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1253, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1077, in __call__
return handler.dispatch()
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 547, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 545, in dispatch
return method(*args, **kwargs)
File "C:\MyMiniGCPProjects\FPDF\main.py", line 23, in get
with open('image'+str(i)+'.jpg','wb') as output:
File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\python\runtime\stubs.py", line 278, in __init__
raise IOError(errno.EROFS, 'Read-only file system', filename)
IOError: [Errno 30] Read-only file system: 'image0.jpg'
I 작동 모든 솔루션을 찾을 수 없습니다입니다. Cloud Storage에서 직접 파일을 사용하고 Cloud Storage에 PDF를 저장하는 방법이 있습니까?
감사합니다. 'imagelist'의 이미지는 Google Cloud Storage에 저장됩니다. 이미지를 로컬에 저장해야하기 때문에'FPDF(). image()'에서 직접 사용자를 지정할 수 없습니다. 그래서, 이미지 파일의 객체를 생성하는'urllib2.urlopen (image)'를 사용하고 있습니다. 그러나 FPDF(). image()는 이미지를 로컬에 저장해야하기 때문에 출력으로'open ('image'+ str (i) + '. jpg', 'wb')를 사용하고 있습니다. 위의 오류를 만듭니다. Google Cloud Storage에 저장 하시겠지만 이미지는 이미 Google Cloud Storage에 저장되어 있습니다. 이 문제를 해결하는 방법을 알려주세요. – Beginner
doc은 'file' 매개 변수가 URL 일 수도 있음을 나타냅니다.'이미지의 경로 또는 URL ': http://www.fpdf.org/en/doc/image.htm –
예, 그렇습니다. 내가 사용하고있을 때 : 'pdf.image ("https://storage.googleapis.com/seventh-terrain-179700.appspot.com/excuses.jpg", 10, 10, 100, 100)' 오류가 발생한다. :'RuntimeError : FPDF 오류 : 이미지 파일이 없거나 잘못되었습니다. https://storage.googleapis.com/seventh-terrain-179700.appspot.com/excuses.jpg. 오류 : [Errno 22] 잘못된 모드 ('rb') 또는 파일 이름 : 'https://storage.googleapis.com/seventh-terrain-179700.appspot.com/excuses.jpg' ' – Beginner