Как выровнять чертёж в PDF, чтобы можно было распечатать без обрезания?
Привет. Есть код, который создаёт чертёж и выводит в печать в PDF. Вот он
Проблема в том, что в PDF чертёж получается неровной. Хотелось бы изменить, чтобы можно было распечатать документ без какой-либо обрезки.
Vindicar, тут не настройку полей надо искать, а код делать так, чтобы формировал страницу без полей, и тогда уже на печать выводить уже с настройкой без полей. Все нужные поля предусмотрены форматкой, если она сделана нормально. Все остальные манипуляции должны быть без полей, иначе будет не соответствовать масштаб. Код тоже не качал, для кода тег специальный есть.
Внешняя рамка - края листа, на печать не выводится
N T, а ты добавь в вопрос, какой библиотекой PDF делаешь. Ну или выкинь генерацию всего, кроме внешней рамки, если этого достаточно, чтобы показать пробелму.
if __name__ == '__main__':
ex = Perechen1()
# Create an instance of PDFExporter and export the scene to a PDF file
exporter = PDFExporter(ex)
exporter.export_to_pdf("output.pdf")
def export_to_pdf(self, filename):
printer = QPrinter(QPrinter.PrinterMode.ScreenResolution)
printer.setOutputFormat(QPrinter.OutputFormat.PdfFormat)
printer.setOutputFileName(filename)
printer.setPageOrientation(QPageLayout.Orientation.Landscape)
painter = QPainter(printer)
# Get the width and height of the scene
scene_width = self.scene.width()
scene_height = self.scene.height()
# Get the width and height of the printer's page
page_width = printer.pageLayout().fullRect(QPageLayout.Unit.Point).width()
page_height = printer.pageLayout().fullRect(QPageLayout.Unit.Point).height()
# Calculate the scale factor
scale_factor = max(page_width / scene_width, page_height / scene_height)
# Calculate the translation to center the scene
x_translation = (page_width - scene_width * scale_factor) / 2
y_translation = (page_height - scene_height * scale_factor) / 2
# Apply the scaling and translation
painter.translate(x_translation, y_translation)
#painter.scale(scale_factor, scale_factor)
# Render the scene
self.scene.render(painter)
painter.end()
print(f"Exported to {filename}")