16,239
社区成员
发帖
与我相关
我的任务
分享
//articleNameList需要下载的列表
foreach(QString aName,articleNameList)
{
downLoadThread *thread=new downLoadThread;
//articleMap为QMap类型,key名 value:url
thread->initArticle(aName,articleMap[aName],"C:\\Users\\Administrator\\Desktop\\blog\\");
connect(thread,SIGNAL(finished()),this,SLOT(deleteThread()));
thread->start();
}
//设置 名,url,保存目录
void downLoadThread::initArticle(const QString &name, const QString &url,const QString& saveDir)
{
articleName=name;
articleUrl=url;
savePathDir=saveDir;
}
void downLoadThread::run()
{
QNetworkAccessManager manager;
connect(&manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(requestFinished(QNetworkReply*)));
manager.get(QNetworkRequest(QUrl(articleUrl)));
exec();
}
//下载,打印pdf
void downLoadThread::requestFinished(QNetworkReply *reply)
{
QString htmlText=QString::fromUtf8(reply->readAll());
QRegExp reg(tr("class=\"article_content\">(.*)</div>"));
reg.setMinimal(true);
if(htmlText.indexOf(reg)!=-1)
{
QTextDocument textDocument;
textDocument.setHtml(reg.cap(1));
QPrinter printer(QPrinter::ScreenResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setOutputFileName(savePathDir+articleName+".pdf");
printer.setPageSize(QPrinter::Custom);
printer.setPageMargins(4,1,6,1,QPrinter::Millimeter);
printer.setOrientation(QPrinter::Portrait);
textDocument.print(&printer);
}
exit();
}