[C con Clase] consulta

Ruben Quisepe ruben0011 en gmail.com
Mar Jun 2 07:22:14 CEST 2015


Estoy intentando imprimir documentos tipo graficos en la impresora, siempre
busque la informacion a este respecto, pero
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:
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.
2.-Porque cuando imprimo me aparece como nombre del archivo Prueba.PDF
3.-Antes de realizar la impresion me aparece un dialog con los siguientes
datos:
Impresora: PDF995
Dimensiones: 2100x2970mm
Tipo: Color
Res: 600x600
Desde: 1
Hasta: 2
Copias:1
Intercalar: no

/******************************************funciones previas definidas
antes de main()****************************************/


void ImprimirDocumento(PRINTDLG *pd) {
    DOCINFO di;
    int pagina;
    int copia;
    int nCopias;
    int repetirPagina;

    di.cbSize = sizeof(DOCINFO);
    di.lpszDocName = "Prueba";
    di.lpszOutput = NULL;
    di.lpszDatatype = NULL;
    di.fwType = 0;

    if(pd->Flags & PD_COLLATE) {
        // Intercalar las copias, imprimimos nCopies documentos:
        nCopias = pd->nCopies;
        repetirPagina = 1;
    } else {
        // No intercalar las copias, un documento con nCopies de cada
página:
        nCopias = 1;
        repetirPagina = pd->nCopies;
    }
    for(copia=0; copia < nCopias; copia++) {
        pagina=1;

        StartDoc(pd->hDC, &di);
        if(pagina >= pd->nFromPage && pagina <= pd->nToPage)
ImprimirPagina(pd->hDC, 1, repetirPagina);
        pagina++;
      //  if(pagina >= pd->nFromPage && pagina <= pd->nToPage)
ImprimirPagina(pd->hDC, 2, repetirPagina);
        EndDoc(pd->hDC);
    }
}


void ImprimirPagina(HDC hDC, int npag, int ncopias)
{

    HDC memDC;
    int ancho, alto;
    int i,j;
HPEN hpen;POINT pts[5];

    ancho = GetDeviceCaps(hDC, HORZRES);
    alto = GetDeviceCaps(hDC, VERTRES);

    for(i = 0; i < ncopias; i++) {
        StartPage(hDC);
        switch(npag) {
            case 1:
SetGraphicsMode(hDC, GM_ADVANCED);
SetViewportOrgEx(hDC,oriGx , oriGy, NULL); //primero tuberias asi los
numeros d tub pueden superponerse
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);}
if(colorpipeG){hpen=CreatePen(PS_SOLID,0,RGB(0,255,5));SelectObject(hDC,hpen);}
for(i=0;i<N_tubG;i++){if(Korrientes[i].id>-1)

{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
DeleteObject(hpen);
          hpen = CreatePen(PS_DOT, 0, RGB(255,0,0)); //25-06-2010
seleccionamos la pluma de puntos para seleccionados
          SelectObject(hDC, hpen);//desapareceria si capturado lo setean a
-1 cuando LBUTOMUP entonces por esto se hace todo con punto12G
pts[0].x=punto12G[0].x;pts[0].y=punto12G[0].y;pts[1].x=punto12G[1].x;pts[1].y=punto12G[0].y;
pts[2].x=punto12G[1].x;pts[2].y=punto12G[1].y;
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
          Polyline(hDC, pts, 5);

          DeleteObject(hpen);
                break;
            case 2:
          break;
        }
        EndPage(hDC);
    }
}



        PRINTDLG pd = {sizeof(PRINTDLG),
        hwnd2, 0, 0,
        0, // hDC
        PD_ALLPAGES | PD_RETURNDC, // | PD_USEDEVMODECOPIESANDCOLLATE,
        1, 2,
        1, 2,
        1,  // Copias
        NULL, 0, 0, 0, 0, 0, 0, 0};

/*********************************************************en mi
programa**************************/
                   case CM_IMPRIMIR:
                if(PrintDlg(&pd)) {
                    dm = GlobalLock(pd.hDevMode);
                    wsprintf(cad, "Impresora: %s\nDimensiones: %dx%d
mm\nTipo: %s\nRes: %dx%d\nDesde: %d\nHasta: %d\nCopias: %d\nIntercalar: %s",
                        dm->dmDeviceName, dm->dmPaperWidth,
dm->dmPaperLength, dm->dmColor==DMCOLOR_COLOR ? "Color" : "B/W",
dm->dmPrintQuality,
                        dm->dmYResolution, pd.nFromPage, pd.nToPage,
                        pd.nCopies, (pd.Flags & PD_COLLATE) ? "si" : "no");
                    MessageBox(hwnd2, cad, "Selecciones", MB_OK);
                    GlobalUnlock(pd.hDevMode);
                    ImprimirDocumento(&pd);
                    GlobalFree(pd.hDevMode);
                    GlobalFree(pd.hDevNames);
                    DeleteDC(pd.hDC);
                }
                break;

/*********************************************************************************************************/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20150602/96c16900/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: D1.JPG
Type: image/jpeg
Size: 277594 bytes
Desc: no disponible
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20150602/96c16900/attachment.jpe>


Más información sobre la lista de distribución Cconclase