Cok tesekkür ederim. Tam istenen sekilde calisiyor. Kodun kullanilir hale gelmesi 2 sorunu ortaya cikardi. Biri sizin icin cok kolay. Digeri belki mümkün degil.
-
Kodu bir formdan bir push button ile cagiriyorum.
Sizin kapattiginiz os.startfile(“C:/Users/Anwender/new-tuto2.pdf”) komutu üretilen PDF’i ekranda görüntülüyor. Kullanici PDF’i hemen ekrandan printere gönderebiliyor.
PDF ekranda görüntülendigi anda kodu cagirdigim form hemen kapaniyor. Bu formun baska PDF islemleri icin acik kalmasi lazim.
Bunu nasil yapabiiriz ?
-
Türkce harfler kullanildiginda fpdf2’nin icindeki 3 yazi tipi bunlari desteklemedigi icin program cöküyor. Onun icin add.font ile bir ttf tipi harf ailesi yüklüyorum. Calisiyor.
Ancak header ve footer bölümlerinde bu yeni ttf cagrilamiyor, dolayisiyla Türkce harfler kullanilamiyor.
TTF tipi harfleri header ve footer’e nasil yükleyebiiriz? Belki de bu mümkün olmayacak.
Form dahil komple kodu asagida veriyorum. Sadece “Daire sakinleri” adli button aktif.
Selamlar, saygilar
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'PrintDaireler.ui'
#
# Created by: PyQt5 UI code generator 5.15.10
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
from fpdf import FPDF
import os
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(640, 480)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pbOturan = QtWidgets.QPushButton(self.centralwidget)
self.pbOturan.setGeometry(QtCore.QRect(40, 30, 241, 71))
font = QtGui.QFont()
font.setPointSize(19)
self.pbOturan.setFont(font)
self.pbOturan.setObjectName("pbOturan")
self.pbSahip = QtWidgets.QPushButton(self.centralwidget)
self.pbSahip.setGeometry(QtCore.QRect(40, 210, 241, 71))
font = QtGui.QFont()
font.setPointSize(19)
self.pbSahip.setFont(font)
self.pbSahip.setObjectName("pbSahip")
self.pbBos = QtWidgets.QPushButton(self.centralwidget)
self.pbBos.setGeometry(QtCore.QRect(40, 300, 241, 71))
font = QtGui.QFont()
font.setPointSize(19)
self.pbBos.setFont(font)
self.pbBos.setObjectName("pbBos")
self.pbKiraci = QtWidgets.QPushButton(self.centralwidget)
self.pbKiraci.setGeometry(QtCore.QRect(40, 120, 241, 71))
font = QtGui.QFont()
font.setPointSize(19)
self.pbKiraci.setFont(font)
self.pbKiraci.setObjectName("pbKiraci")
self.pbSatilik = QtWidgets.QPushButton(self.centralwidget)
self.pbSatilik.setGeometry(QtCore.QRect(320, 30, 241, 71))
font = QtGui.QFont()
font.setPointSize(19)
self.pbSatilik.setFont(font)
self.pbSatilik.setObjectName("pbSatilik")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 640, 31))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pbOturan.setText(_translate("MainWindow", "Daire sakinleri"))
self.pbSahip.setText(_translate("MainWindow", "Kat malikleri"))
self.pbBos.setText(_translate("MainWindow", "Bos/kiralik daireler"))
self.pbKiraci.setText(_translate("MainWindow", "Kiracilar"))
self.pbSatilik.setText(_translate("MainWindow", "Satilik daireler"))
########################### KÖDLAR ##########################
self.pbOturan.clicked.connect(self.fn)
def fn(self):
#from fpdf import FPDF
#import os
class PDF(FPDF):
def header(self):
# Setting font: helvetica bold 15
self.set_font("helvetica", "B", 15)
# Moving cursor to the right:
self.cell(80)
# Printing title:
self.cell(30, 10, "Title", border=1, align="C")
# Performing a line break:
self.ln(20)
def footer(self):
# Position cursor at 1.5 cm from bottom:
self.set_y(-15)
# Setting font: helvetica italic 8
self.set_font("helvetica", "I", 8)
# Printing page number:
self.cell(0, 10, f"Page {self.page_no()}/{{nb}}", align="C")
# Instantiation of inherited class
pdf = PDF()
pdf.add_page()
pdf.add_font("OpenSans-Regular", style="", fname=r"C:\\Users\\Anwender\\AppData\\Local\\Microsoft\\Windows\\Fonts\\OpenSans-Regular.ttf")
pdf.set_font("OpenSans-Regular", size=12)
for i in range(1, 41):
pdf.cell(0, 10, f"Printing Akış {i}", new_x="LMARGIN", new_y="NEXT")
pdf.output("new-tuto2.pdf")
os.startfile("C:/Users/Anwender/new-tuto2.pdf")
self.fn()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())