Записать содержимое из простого текста в файл PDF - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть образец содержимого в ссылке здесь . это простой текст. Как решения для преобразования этого текстового содержимого в оригинальный файл PDF? ( Этот контент я получил от сервиса MTOM )

Я так далеко от этого источника multipart/mixed, который содержит json и двоичное содержимое в виде текста.

--uuid:dba94a0e-2d99-4675-9781-2a736995bdc8
Content-Type: application/json;charset=UTF-8
Content-Transfer-Encoding: binary
Content-ID: <jsonInfos>

{"messages":[{"id":"0","type":"INFOS","messageContent":"La requête a été traitée avec succès","replacementValues":[]}]}
--uuid:dba94a0e-2d99-4675-9781-2a736995bdc8
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
Content-ID: <label>

%PDF-1.3
%����
12 0 obj
<<
/BitsPerComponent 8
/ColorSpace /DeviceRGB
/Filter [/FlateDecode /DCTDecode]
/Height 80
/Length 2486
/Name /Obj0
/Subtype /Image
/Type /XObject
/Width 119
>>
stream
x���{<��ǟ1f��$1rY�{�QY  �a�Les�-jܧ��Qm��R4!wi&׉�Y�$32��h�1�f�Sg�9�:����y^�?���|���|�5�lr���`0p@:�N)�@"d�H�Bʡ7����h���6��lݪ�������a5t���j��k`h��Hg�  �K}��S
....
....
....
startxref
101943
%%EOF

--uuid:dba94a0e-2d99-4675-9781-2a736995bdc8--

Я пробовал в python:

with open('tmp.txt', 'r') as tmp:
     with open('sample.pdf', 'wb') as sample:
          sample.write(tmp.read().encode('utf-8'))

Ответы [ 3 ]

1 голос
/ 25 февраля 2020

Вы не можете писать в PDF-файлы, как вы пишете в обычные текстовые файлы. В python есть библиотеки для записи PDF-файлов. вы можете попробовать pdfrw .

данные, которые вы собираетесь записать в pds, могут иметь атрибуты (кроме текста, сохраняемого в текстовых файлах), следуя samples для делай то, что тебе действительно нужно:

from pdfrw import PdfWriter
y = PdfWriter()
y.addpage(data)
y.write('result.pdf')
0 голосов
/ 25 февраля 2020

Вы можете использовать FPDF для создания PDF-файла. PFB образец кода.

from fpdf import FPDF

with open('tmp.txt', 'r') as tmp:
    wpdf = FPDF()
    wpdf.set_font('arial', '', 12)
    wpdf.add_page()
    wpdf.set_xy(10, 5)
    for line in tmp:
        wpdf.cell(50, 5, txt=line, ln=1, align="L")
    wpdf.output('sample.pdf', 'F')`enter code here`


Пожалуйста, обратитесь к ссылке ниже для получения дополнительной информации. https://pyfpdf.readthedocs.io/en/latest/Tutorial/index.html

0 голосов
/ 25 февраля 2020

Вы не можете вернуть свои исходные pdf файлы только из простых текстовых файлов. Потому что при экспорте в txt конвертер отбирает много информации, такой как кодировка цвета, структура, данные шрифта и т. Д. c. Однако, если вы просто хотите создать pdf из txt, вы можете использовать wkhtmltopdf и pdfkit для этого.

  • Установить wkhtmltopdf через apt-get install wkhtmltopdf

  • Установить pdfkit через pip install pdfkit.

Теперь вы можете просто сделать это:

import pdfkit

pdfkit.from_file("tmp.txt", "sample.pdf")

Это вернет:

libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: known incorrect sRGB profile
Loading page (1/2)
Printing pages (2/2)                                               
Done                                                           
True

PDF-файл должен выглядеть следующим образом:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...