سؤال

ولدي تطبيق WSGI الذي يولد الفواتير وتخزينها بصيغة PDF.

وحتى الآن أنا لم تحل مشاكل مماثلة مع FPDF (أو ما يعادلها)، توليد PDF من الصفر مثل واجهة المستخدم الرسومية. للأسف هذا يعني أن المنطق كامل التنسيق (رؤوس تحديد المواقع، والهوامش والمحتوى، والتصميم) في التطبيق، حيث أنه حقا لا ينبغي أن يكون.

ووجود القوالب بالفعل في الأشكال مكتب (ODT، DOC، DOCX)، وأنا أفضل أن مجرد استخدام هذه كأساس وملء المحتوى الفعلي. لقد وجدت إطار Appy، والتي لا حد كبير أنه مع ملفات ODT المشروح.

وهذا ما زال يترك المشكلة الأكبر مفتوحة، ثو: تحويل ODT (أو DOC، أو DOCX) إلى PDF. على ملقم. تشغيل لينكس. بدون مكتبات واجهة المستخدم الرسومية. وبالتالي، دون OO.o أو مكتب MS.

هل هذا كان ذلك ممكنا أو أنا أفضل حالا حفظ التصميم في قانون بلدي؟

والمحتوى الفعلي التي من شأنها أن تملأ في الواقع يقتصر جدا: بضع فقرات، وبعضها قد يكون اختياري، عنوانا أو اثنين، ودائما في نفس المكان، وبعض الصفوف من الجدول. في HTML هذا سيكون تافها.

وتحرير: في الأساس، أريد مكتبة التي يمكن أن تولد ملفات ODT من ملفات ODF بوصفها قوالب ومكتبة التي يمكن تحويل النتيجة إلى PDF (والذي هو ربما جوهر)

.
هل كانت مفيدة؟

المحلول

وأنا لا أعرف كيفية التوجه نحو ODT التلقائي -> تحويل PDF، ولكن الطريق بساطة قد يكون لتوليد الفواتير كما HTML وتحويلها إلى PDF باستخدام <لأ href = "HTTP: //www.xhtml2pdf. كوم / "يختلط =" نوفولو noreferrer "> http://www.xhtml2pdf.com/ . لم أحاول المكتبة نفسي، ولكن من المؤكد أنه يبدو واعدا.

نصائح أخرى

ويمكنك استخدام QTextDocument، QTextCursor وQTextDocumentWriter في PyQt4. وهناك مثال بسيط لإظهار كيفية كتابة إلى ملف ODT:

>>>from pyqt4 import QtGui
# Create a document object
>>>doc = QtGui.QTextDocument()
# Create a cursor pointing to the beginning of the document
>>>cursor = QtGui.QTextCursor(doc)
# Insert some text
>>>cursor.insertText('Hello world')
# Create a writer to save the document
>>>writer = QtGui.QTextDocumentWriter()
>>>writer.supportedDocumentFormats()
[PyQt4.QtCore.QByteArray(b'HTML'), PyQt4.QtCore.QByteArray(b'ODF'), PyQt4.QtCore.QByteArray(b'plaintext')]
>>>odf_format = writer.supportedDocumentFormats()[1]
>>>writer.setFormat(odf_format)
>>>writer.setFileName('hello_world.odt')
>>>writer.write(doc) # Return True if successful
True

إذا لم تكن متأكدا من الفرق بين ODT والتمويل الانمائي الرسمي في هذه الحالة. راجعت نوع الملف، وقال انه طلب / vnd.oasis.opendocument.text. لذلك أفترض أنه ODT. يمكنك طباعة إلى ملف PDF باستخدام QPrinter.

لمزيد من المعلومات على العنوان التالي: http://qt-project.org/doc/qt-4.8/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top