MyException - 我的异常网
当前位置:我的异常网» VC/MFC » 怎么往pdf中插入图片

怎么往pdf中插入图片

www.MyException.Cn  网友分享于:2013-02-20  浏览:150次
如何往pdf中插入图片
我要往Pdf文件中插入一张bmp格式的图片,有没有办法在不用任何编码(比如flatedecode)的情况下直接往pdf文件中插入图片的?直接说一下符合要求的pdf的标记长什么样子就行
pdf 图片

------解决方案--------------------
bmp格式的图片, 与 flatedecode 可以是两个不同层次的

下面的代码是我把一张图片(jpg)作为背景方式写入到pdf, 其中/DCT表示jpg方式, 用bmp也可以
我在后面的 page处理时, 可以对整个page进行压缩, (flatedecode)
具体的细节可能需要自己找 pdf的手册才会清楚



BOOL CPdfElement::GetSaveDatBkImage(ByteMem &ElmDat)
{
CHAR szBuffer[4096];
int nImgW, nImgH;
int nViewX, nViewY, nViewW, nViewH; //坐标系, 左下为原点
ByteMem JpgDat;
double dK;
BOOL bRetVal;

m_pImage->GetSize(nImgW, nImgH);
nViewW = nImgW;
nViewH = nImgH;
bRetVal = NGdi::CalcuImgPlaceSize(PDF_PageW, PDF_PageH, nViewW, nViewH, dK);
if(bRetVal == FALSE)
{
nViewW = PDF_PageW;
nViewH = PDF_PageH;
}
nViewX = 0;
nViewY = PDF_PageH - nViewH;

sprintf(szBuffer, 
STR_LINE("q")
STR_LINE("%d 0 0 %d %d %d cm") //nViewW, nViewH, nViewX, nViewY
STR_LINE("BI")
STR_LINE("/W %d") //nImgW
STR_LINE("/H %d") //nImgH
STR_LINE("/CS /RGB")
STR_LINE("/BPC 8")
STR_LINE("/I true")
STR_LINE("/F /DCT")
STR_LINE("ID"),
nViewW, nViewH, nViewX, nViewY, nImgW, nImgH);
ElmDat.append(szBuffer);

m_pImage->GetJpgDat(JpgDat, m_pDoc->m_nJpgQuality);
ElmDat.append(JpgDat);

sprintf(szBuffer, 
STR_LINE("")
STR_LINE("EI")
STR_LINE("Q")
);
ElmDat.append(szBuffer);
return TRUE;
}


压缩

CPdfPage::SavetoFile(CPdfDoc *pDoc, HANDLE hFile)
{
        ...
bCompress = pDoc->IsCompress();
if(bCompress)
{
strcpy(szFilter, "/FlateDecode");
pDoc->CompresDat(ElmsDat, CompresDat);
pFinDat = &CompresDat;
}
else
{
strcpy(szFilter, " [ ]");
pFinDat = &ElmsDat;
}
...


------解决方案--------------------
引用:
引用:引用:引用:bmp格式的图片, 与 flatedecode 可以是两个不同层次的

下面的代码是我把一张图片(jpg)作为背景方式写入到pdf, 其中/DCT表示jpg方式, 用bmp也可以
我在后面的 page处理时, 可以对整个page进行压缩, (fl……


去adobe的安装目录搜 "*.tlb"

tlb文件不多,貌似就几个而已

每个人的安装不一样,这是我的
C:\Program Files\Adobe\Acrobat 10.0\Acrobat\acrobat.tlb

C:\Program Files\Adobe\Acrobat 10.0\PDFMaker\Common\AdobePDFMakerX.tlb

C:\Program Files\Adobe\Acrobat 10.0\PDFMaker\Office\AcrobatPDFMakerForOffice.tlb

C:\Program Files\Adobe\Acrobat 10.0\PDFMaker\Common\PDFMakerAPI.tlb



就这4个,然后,用import指令加载,产生 tlh文件,自动会产生的, 去这个tll里搜 

PdfElement、PdfDoc

应该可以搜搜类似的, 找到后,则去类型库里用包装类产生。


文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有