<div dir="ltr"><div><div><div>Estoy intentando imprimir documentos tipo graficos en la impresora, siempre busque la informacion a este respecto, pero<br></div>solo lo he conseguido en Conclase, es por esto que no comprendo muy bien el manejo y lo he copiado directamente en mi codigo y tratado de adaptarlo, mi problema es:<br></div>1.-Cuando imprimo el documento sale muy pequeño (tanto en impresora como en archivo PDF), adjunto captura, solo se aprecia al 800% como si fuera 100%. Agradesco de antemano la ayuda valiosa que me puedan dar.<br></div><div>2.-Porque cuando imprimo me aparece como nombre del archivo Prueba.PDF<br></div><div>3.-Antes de realizar la impresion me aparece un dialog con los siguientes datos:<br></div><div>Impresora: PDF995<br></div><div>Dimensiones: 2100x2970mm<br></div><div>Tipo: Color<br></div><div>Res: 600x600<br></div><div>Desde: 1<br></div><div>Hasta: 2<br></div><div>Copias:1<br></div><div>Intercalar: no<br></div><div><br></div><div>/******************************************funciones previas definidas antes de main()****************************************/<br></div><br><div><div><div><div><br>void ImprimirDocumento(PRINTDLG *pd) {<br>    DOCINFO di;<br>    int pagina;<br>    int copia;<br>    int nCopias;<br>    int repetirPagina;<br><br>    di.cbSize = sizeof(DOCINFO);<br>    di.lpszDocName = "Prueba";<br>    di.lpszOutput = NULL;<br>    di.lpszDatatype = NULL;<br>    di.fwType = 0;<br><br>    if(pd->Flags & PD_COLLATE) {<br>        // Intercalar las copias, imprimimos nCopies documentos:<br>        nCopias = pd->nCopies;<br>        repetirPagina = 1;<br>    } else {<br>        // No intercalar las copias, un documento con nCopies de cada página:<br>        nCopias = 1;<br>        repetirPagina = pd->nCopies;<br>    }<br>    for(copia=0; copia < nCopias; copia++) {<br>        pagina=1;<br><br>        StartDoc(pd->hDC, &di);<br>        if(pagina >= pd->nFromPage && pagina <= pd->nToPage) ImprimirPagina(pd->hDC, 1, repetirPagina);<br>        pagina++;<br>      //  if(pagina >= pd->nFromPage && pagina <= pd->nToPage) ImprimirPagina(pd->hDC, 2, repetirPagina);<br>        EndDoc(pd->hDC);<br>    }<br>}<br><br><br>void ImprimirPagina(HDC hDC, int npag, int ncopias)<br>{<br><br>    HDC memDC;<br>    int ancho, alto;<br>    int i,j;<br>HPEN hpen;POINT pts[5];<br><br>    ancho = GetDeviceCaps(hDC, HORZRES);<br>    alto = GetDeviceCaps(hDC, VERTRES);<br><br>    for(i = 0; i < ncopias; i++) {<br>        StartPage(hDC);<br>        switch(npag) {<br>            case 1:<br>SetGraphicsMode(hDC, GM_ADVANCED);<br>SetViewportOrgEx(hDC,oriGx , oriGy, NULL); //primero tuberias asi los numeros d tub pueden superponerse<br>for(i=0;i<numero_de_objetos;i++){DrawObjeto(i,Objetos[i].tipo,Objetos[i].x,Objetos[i].y,Objetos[i].tx,Objetos[i].ty,Objetos[i].Sel,hDC, NULL);}<br>if(colorpipeG){hpen=CreatePen(PS_SOLID,0,RGB(0,255,5));SelectObject(hDC,hpen);}<br>for(i=0;i<N_tubG;i++){if(Korrientes[i].id>-1)<br>          {Polyline(hDC,Korrientes[i].punt,Korrientes[i].numctrl+1);}}//trazamos todas las tuberias que se han hecho hasta el momento y xq +1? 30-12-08<br>DeleteObject(hpen);<br>          hpen = CreatePen(PS_DOT, 0, RGB(255,0,0)); //25-06-2010 seleccionamos la pluma de puntos para seleccionados<br>          SelectObject(hDC, hpen);//desapareceria si capturado lo setean a -1 cuando LBUTOMUP entonces por esto se hace todo con punto12G<br>pts[0].x=punto12G[0].x;pts[0].y=punto12G[0].y;pts[1].x=punto12G[1].x;pts[1].y=punto12G[0].y;<br>pts[2].x=punto12G[1].x;pts[2].y=punto12G[1].y;<br>pts[3].x=punto12G[0].x;pts[3].y=punto12G[1].y;pts[4].x=punto12G[0].x; pts[4].y=punto12G[0].y;//para cerrar la figura cuadrada<br>          Polyline(hDC, pts, 5);<br>        <br>          DeleteObject(hpen);<br>                break;<br>            case 2:<br>          break;<br>        }<br>        EndPage(hDC);<br>    }<br>}<br><br><br><br>        PRINTDLG pd = {sizeof(PRINTDLG),<br>        hwnd2, 0, 0,<br>        0, // hDC<br>        PD_ALLPAGES | PD_RETURNDC, // | PD_USEDEVMODECOPIESANDCOLLATE,<br>        1, 2,<br>        1, 2,<br>        1,  // Copias<br>        NULL, 0, 0, 0, 0, 0, 0, 0};<br><br></div><div>/*********************************************************en mi programa**************************/<br></div><div>                   case CM_IMPRIMIR:<br>                if(PrintDlg(&pd)) {<br>                    dm = GlobalLock(pd.hDevMode);<br>                    wsprintf(cad, "Impresora: %s\nDimensiones: %dx%d mm\nTipo: %s\nRes: %dx%d\nDesde: %d\nHasta: %d\nCopias: %d\nIntercalar: %s",<br>                        dm->dmDeviceName, dm->dmPaperWidth, dm->dmPaperLength, dm->dmColor==DMCOLOR_COLOR ? "Color" : "B/W", dm->dmPrintQuality,<br>                        dm->dmYResolution, pd.nFromPage, pd.nToPage,<br>                        pd.nCopies, (pd.Flags & PD_COLLATE) ? "si" : "no");<br>                    MessageBox(hwnd2, cad, "Selecciones", MB_OK);<br>                    GlobalUnlock(pd.hDevMode);<br>                    ImprimirDocumento(&pd);<br>                    GlobalFree(pd.hDevMode);<br>                    GlobalFree(pd.hDevNames);<br>                    DeleteDC(pd.hDC);<br>                }<br>                break;<br><br>/*********************************************************************************************************/<br><br><br></div></div></div></div></div>