【问题标题】:Is it possible to make a pdf with different page size in Qt?是否可以在 Qt 中制作具有不同页面大小的 pdf?
【发布时间】:2023-03-07 13:13:02
【问题描述】:

如果页面大小相同,那么没问题,但我需要页面大小应该是Image的大小(可变),

void DgJpgToPdf::convertToPdf( const QStringList& theImagePathList, const QString& theOutputFileName )
{
    QPrinter printer;
    printer.setOrientation(QPrinter::Portrait);
    printer.setOutputFormat( QPrinter::PdfFormat );
    printer.setOutputFileName( theOutputFileName );
    QPainter painter;    
    painter.begin( &printer );
    //printer.newPage();
    foreach( QString  fileName, theImagePathList ){
        QImage imgObj( fileName );    
        printer.setPaperSize( QSizeF(imgObj.width(), imgObj.height()), QPrinter::DevicePixel );        
        painter.drawImage( 0, 0, imgObj );
        printer.newPage();
    }
    painter.end();
}

【问题讨论】:

    标签: c++ qt pdf


    【解决方案1】:

    您可能希望使用QPdfWriter 而不是QPrinter。您必须为图像选择 PPI,但如果您想以 96 PPI 保存,您可以执行类似的操作

    QPdfWriter pdfWriter(theOutputFileName);
    pdfWriter.setTitle(theDocumentTitle);
    pdfWriter.setCreater(yourApplicationName);
    
    const qreal horizontalMarginMM = 2.0;     // 2mm margin on each side
    const qreal verticalMarginMM = 2.0;
    QPagedDevice::Margins margins;
    margins.left = margins.right = horizontalMarginMM;
    margins.top = margins.bottom = verticalMarginMM;
    pdfWriter.setMargins(margins);
    
    bool newPage = false;
    QPainter painter;
    painter.begin(&pdfWriter);
    
    foreach (const QString& fileName, theImagePathList) {
      QImage imageObj(fileName);
    
      if (newPage)
        pdfWriter.newPage();
      newPage = true;
      qreal pageWidthMM = imgObj.width() / 96.0 * 25.4 + 2*horizontalMarginMM;
      qreal pageHeightMM = imgObj.height() / 96.0 * 25.4 + 2*verticalMarginMM;
    
      imgObj.setDotsPerMeterX(96.0 / 25.4 * 1000.0);
      imgObj.setDotsPerMeterY(96.0 / 25.4 * 1000.0);
    
      pdfWriter.setPageSizeMM(QSizeF(pageWidthMM, pageHeightMM));
      painter.drawImage(0, 0, imageObj);
    }
    painter.end();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多