天天看點

Qt 生成word、pdf文檔

??姹?锛?灏?杞?浠跺?????缁???淇?瀛?涓轟?涓??ュ????妗o???妗d腑????琛ㄦ?箋???劇??????瀛?锛??煎?涓?ord??.doc??.pdf??????word??涓轟?渚誇??ㄦ?風?杈???

寮?????澧?锛?qt4.8.4+vs2010

??t??瀹?缃?涓?瀵逛?pdf????浣?浠?缁?濡?涓?锛?http://qt-project.org/wiki/Handling_PDF????抽??杩?QPrinter绫繪?ュ??寤?df锛?杩?????杩?绗?涓??瑰?PoDoFo??Hummus??????涓昏?浠?缁???????Printer绫繪?ュ??寤?df??

??t??瀹?缃?涓?瀵逛?word????浣?浠?缁?濡?涓?锛?http://qt-project.org/wiki/Handling_Microsoft_Word_file_format????抽??杩?Word??韬?COM缁?浠剁??褰㈠?锛?Qt??ActiveX妗??舵?ュ???幫?杩?????杩?xml?ュ???般??????涓昏?浠?缁?Qt ActiveX??html?煎?????word??妗c??

涓???婦渚?璇??璇存??pdf??word??妗g??????锛?

1.pdf??????

pdf??妗i??瑕?姹???琛ㄦ?箋???劇??????瀛?锛???????瀹??http://blog.sina.com.cn/s/blog_a6fb6cc90101gvnx.html?????㈡??浠?缁???瀛????劇????琛ㄦ?煎?????????烽??杩?QPrinter绫繪?ュ???扮????浣??????頒?涓?楹葷??氨?????鋒??杩?涓?绉??煎???涓?瑗挎?懼?ㄤ?璧瘋??涓?????濂藉????ㄤ?杩闆??瀹㈤?????規?灏?璇?涔???锛???缁?纭?瀹?浣跨?ㄧ??涓?绉?????琛ㄦ?鹼?html?煎?锛????瑰??ュ??幫?

QPrinter printer_text;
printer_text.setOutputFormat(QPrinter::PdfFormat);
printer_text.setOutputFileName(pdfname);//pdfname涓鴻?淇?瀛???pdf??浠跺??

QTextDocument text_document;
QString html = GeneratePicWord();//??瀹?涔????芥?幫??ㄦ?ョ????html浠g??

text_document.setHtml(html);
text_document.print(&printer_text);
QTextBlock it = text_document.end();
           

GeneratePicWord()?芥?扮????瀹瑰ぇ?村?涓?锛?

QString html;
//??瀛??ㄥ??
QDateTime current_date_time = QDateTime::currentDateTime();
QString current_date = current_date_time.toString("yyyy-MM-dd hh:mm:ss ddd");
html += "<h2 align=\"center\">?茬?绠$??妯″??</h2>";
html += "<h4 align=\"center\">" + current_date + "</h2><br>";
//?劇???ㄥ??
html += "<img align=\"middle\" src = \"" + imagepath + "\"  width=\"600\" height=\""+QString::number(showHeight) + "\"/><br>" ;
//琛ㄦ?奸?ㄥ??
html +=  "<table align=\"center\" 0.2\" cellspacing=\"0\" cellpadding=\"0\"  style=\"width: 100%; height: 100%;\">";
html +="<tr>";  
QString fieldname;
for ( int i = 0; i < fieldCount; ++i)
{
fieldname = fields[i].name();
html +="<td bgcolor=\"Silver\">" + fieldname + "</td>";
}
html +="</tr></table>";
           

????缁???寰??扮??pdf濡??撅?

Qt 生成word、pdf文檔

2.word??????

word????????浠ョ??ActiveX?ュ???般????瀹??http://www.360doc.com/content/14/0227/16/7918060_356177077.shtml??璇寸??姣?杈?璇??浜???棣????闆緩涓?涓?妯℃?挎??浠?d.dot锛??ㄦā?挎??浠朵腑浜????????モ??-????涔??鋸??锛?濡?涓??炬??绀猴?

Qt 生成word、pdf文檔

涔??句富瑕??ㄨ〃?肩??绗?涓?琛???涓ゅ??锛???????code,ndvi??琛ㄦ?間??㈡??涓や釜涔??撅???????pic锛?pic2???ㄤ唬?????ラ??瑕?????瀛????劇??锛?

QAxWidget *word = new QAxWidget("Word.Application",this, Qt::MSWindowsOwnDC);
	word->setProperty("Visible", true);
	//get all documents
	QAxObject *documents = word->querySubObject("Documents");
	//build a tempetate with .dot file
	documents->dynamicCall("Add(QString)", QString::fromLocal8Bit("F:/Id.dot"));
	//get the current actived document
	QAxObject *document = word->querySubObject("ActiveDocument");

	QString code = "code";
	QAxObject *bookmark_code = document->querySubObject("Bookmarks(QVariant)", "code");
	if ( !bookmark_code->isNull())
	{
		bookmark_code->dynamicCall("Select(void)");
		bookmark_code->querySubObject("Range")->setProperty("Text", "textg");
	}
	QAxObject *bookmark_ndvi = document->querySubObject("Bookmarks(QVariant)", "ndvi");
	if ( !bookmark_ndvi->isNull())
	{
		bookmark_ndvi->dynamicCall("Select(void)");
		bookmark_ndvi->querySubObject("Range")->setProperty("Text", "ndvi");
	}

	QAxObject *bookmark_ndvi2 = document->querySubObject("Bookmarks(QVariant)", "ndvi");
	if ( !bookmark_ndvi2->isNull())
	{
		bookmark_ndvi2->dynamicCall("Select(void)");
		bookmark_ndvi2->querySubObject("Range")->setProperty("Text", "ndvi2");
	}

	QAxObject *bookmark_pic = document->querySubObject("Bookmarks(QVariant)", "pic");
	if ( !bookmark_pic->isNull())
	{
		bookmark_pic->dynamicCall("Select(void)");
		QAxObject *shapes = document->querySubObject("InlineShapes");
		shapes->dynamicCall("AddPicture(Const QString&)", "F:\\CND.jpg");
		
	}
	document->dynamicCall("SaveAs (const QString&)", QString("F:/testword.doc"));
	document->dynamicCall("Close(boolean)", false);
	word->dynamicCall("Quit()");
           

寰??扮??缁???灏變?璐翠???瀛??ㄦ??涓や釜??棰?锛?1.?ㄧ??????word???劇????澶у???甯稿?锛???瑕?浜轟負??瀹???澶ф????寰??幫?2.琛ㄦ?兼?版????浼????ュ?扮??涓?琛?宸茬?棰?璁懼ソ涔??劇??浣?缃???瀵逛???澶??℃?版??锛?杩?涓??ラ?????峰??????寤?涔??炬?ユ???ユ?版?????ㄧ?涓??句?浜?璧???锛????藉?濂界????杩?妯℃?誇功绛劇???瑰??ヨВ?寵?涓や釜??棰???

?d??抽??杩?涓??㈢????pdf?剁??html?戒??界?存?ヤ?瀛?涓?doc??浠跺???绛?妗????斤???涓???绾??寰?澶??堕?達?????涓?娆$?????哄???煎???html锛?灏卞??浠ヤ?瀛?涓?df??doc??浠訛?澶?濂界??浜?????锛?涓轟?涔?瑕???t ActiveX????

褰??朵??界?存?ユ??????pdf????浠跺???規??doc灏辮?浜?锛?杩???瑕???涓????涓?浜???锛?

QString html;
html += "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:w=\"urn:schemas-microsoft-com:office:word\" xmlns=\"http://www.w3.org/TR/REC-html40\"><head><meta http-equiv=Content-Type  content=\"text/html; charset=gb2312\" >"; //杩??ュ??????涓?????涓昏?????涓烘????ord????doc????涓?tml??浠跺??锛????版??杩?涔?涓?澶存??绛撅??辨?ゆ?沖?扮?存?ュ?html??妗d?瀛?涓?oc??浠躲??
html =GeneratePicWord();//璇ュ?芥?闆????浜?df??妗g??涓???
QFile outFile(docname);
outFile.open(QIODevice::WriteOnly | QIODevice::Append );
QTextStream ts(&outFile);
ts<<html<<endl;
           

涓昏??ㄥ???㈤??琛?锛?灏?html杈??哄??oc??浠朵腑?彙??

寰??扮??缁???濡??撅?

Qt 生成word、pdf文檔

pdf??word??????灏卞????浜?锛??蜂?寰??扮??缁??????芥?煎?涓?杩???瑕?璋??達?html瀵逛?璋??煎?杩???寰??逛究????

娉??杞?杞借?鋒敞???哄?

http://blog.csdn.net/tszhangjunqiao/article/details/22681351