Я загрузил PDF-файл этого типа. Как читать pdf из типа InMemoryUploadedFile.
views.py
class TextUploadAPI(APIView):
parser_classes = (MultiPartParser,)
permission_classes = [IsAuthenticated & IsProjectAdmin]
def post(self, request, *args, **kwargs):
if 'file' not in request.data:
raise ParseError('Empty content')
self.save_file(
user=request.user,
file=request.data['file'],
file_format=request.data['format'],
project_id=kwargs['project_id'],
)
return Response(status=status.HTTP_201_CREATED)
@classmethod
def save_file(cls, user, file, file_format, project_id):
project = get_object_or_404(Project, pk=project_id)
parser = cls.select_parser(file_format)
if file_format == 'pdf':
file = file.read()
file = io.BytesIO(file)
with pdfpluber.load(file) as pdf:
pages = pdf.pages
print(pages)
data = parser.parse(file)
storage = project.get_storage(data)
storage.save(user)
Сначала я преобразовал тип InMemoryLoadedFile в байты, потому что я получил ошибку при попытке открыть файл с открытой функцией expected only str,bytes or None type not InMemoryLoadedFile type
. После того, как я попробовал https://github.com/jsvine/pdfplumber/issues/173 это решение, но не работает. Пожалуйста, помогите мне.