您好,为什么用podofo这个库加了水印之后保存的PDF文件大小会比原先的要大几十倍从100k到10M呢,是哪里代码中需要设置一下吗?
void CPODOFOEXEDlg::WatermarkFile(const char* pszInFilename, const char* pszOutFilename, PdfString strWaterMark, PdfString strWaterMarkCS, PdfString URL,bool bLink)
{
printf("Running watermark test\n");
UpdateData(TRUE);
PdfMemDocument doc(pszInFilename, true);
PdfPainter painter;
PdfPage* pPage;
PdfRect rect;
CString strFontSize;
double dx= 2.0;
double dy= 2.0;
const PdfEncoding* pp = PdfEncodingFactory::GlobalIdentityEncodingInstance();
PdfFont* pFont = doc.CreateFont("Arial Unicode MS", false, new PdfIdentityEncoding(0, 0xffff, true));
cboFontSize.GetWindowText(strFontSize);
float fontsize = _wtof(strFontSize);
pFont->SetFontSize(fontsize);
double w, h;
for (int i = 0; i<doc.GetPageCount(); i++)
{
pPage = doc.GetPage(i);
w = pPage->GetPageSize().GetWidth();
h = pPage->GetPageSize().GetHeight();
if (!pPage)
{
PODOFO_RAISE_ERROR(ePdfError_InvalidHandle);
}
painter.SetPage(pPage);
painter.SetFont(pFont);
painter.SetColor(0.0, 0.0, 0.0);
painter.DrawText(3.0, w / 2 - 60.0, strWaterMark);
painter.DrawText(3.0, w / 2 - 30.0, strWaterMarkCS);
if (bLink)
{
painter.DrawText(dx, dy, PdfString(_T("淘宝链接")));
painter.SetColor(1.0, 1.0, 1.0);
painter.DrawText(dx, dy, URL);
}
painter.FinishPage();
}
painter.DrawText(3.0, w / 2 - 60.0, strWaterMark);
printf("writing document back\n");
doc.SetWriteMode(ePdfWriteMode_Compact);
doc.SetPdfVersion(ePdfVersion_1_7);
doc.WriteUpdate(pszOutFilename);
}