 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mar 12 Ago, 2008 1:28 am Asunto: |
|
|
| bosoft escribió: | Cuando lo lanzo a la impresora uso el TBitmap y por StrechDraw lo pongo en la Printer().
Ahora viene mi pregunta. ¿Como lo hago a pdf con la dll? |
No había visto tu pregunta, supongo que a estas alturas ya habrás encontrado una solución, pero por si alguien tiene la misma duda.
Tendrías que salvar antes la imagen y luego podrías hacer algo así:
| Código: | PdfDocPtr pdf;
pdf.CreateInstance(CLSID_PdfDoc);
pdf->AddPage(1);
double ancho, alto;
pdf->GetPageWidth(&ancho);
pdf->GetPageHeight(&alto);
pdf->Image(WideString("c:\\imagen.bmp"), 0, 0, ancho, alto, 0, 0);
pdf->SaveAsFile(WideString("c:\\prueba.pdf")); |
|
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Dom 12 Oct, 2008 9:22 pm Asunto: No puedo correr mi aplicacion en builder 2007 |
|
|
Estimados, uso este componente para generar mis reportes pdf, ahora me he cambiado a builder 2007 y sólo tengo un problema.
No existe ( o no enucentro ) en donde hacer importacion de type library, para solucionar ello, agregué a mi proyecto el .h y el .cpp que tenia generado en builder 6.0, pero me manda error de linkeo a dos funciones .
Cómo podré usar la libreria pdfcom.dll sin problemas asi como lo hacía en builder 6?..
OBS. ya tengo registrada en win vista la dll |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 13 Oct, 2008 2:46 am Asunto: |
|
|
| jotny escribió: | he cambiado a builder 2007 y sólo tengo un problema.
No existe ( o no enucentro ) en donde hacer importacion de type library |
En el menú: Component -> Import Component... |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Lun 13 Oct, 2008 5:21 am Asunto: Me sigue ocurriendo lo mismo |
|
|
Gracias leo por tu respuesta, efectivamente esa es la opcion, jejeje.
Pero el inconveniente que aun me da el error de linkeo en un objeto que generè llamado PDF en la que uso la libreria. en la fotografia que puse sale en detalle el tipo de error, realmente no se que ocurre ya que he seguido los pasos tal cual los indicas ( los cuales me funcionaron sin problemas en win xp con builder 6) pero en vista basic con builder 2007 me da ese error... serà algun tema de permisos?, no entiendo......ha compatibilizado todo mi proyecto excepto por ese error que me impide generar el ejecutable |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Lun 13 Oct, 2008 5:34 am Asunto: ya lo tengo solucionado |
|
|
BIEEEEENNN.. ya lo solucione, era simple... en la opcion de import component, en las ventanas siguientes se debe poner que agregue el archivo generado al proyecto y ahi si me toma todos los metodos de la libreria.... sòlo me queda ahora ver por què mi menu principal me sale corrido hacia la izquierda y no veo las otras opciones.
Gracias leo por la ayuda.... ahora a descubrir todas las ventajas del builder 2007 |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Mar 30 Nov, 2010 1:35 am Asunto: no puedo encontrar la opcion |
|
|
Hola a todos.
alguien sabe cómo poder hacer que una frase se muestre en Bookman Old Style negrita y cursiva??.
pongo ésto y no me resulta
| Código: |
long res=0;
WideString VACIO="";
WideString Bookman="Bookman Old Style";
WideString ItalicaBold="BI";
pdf->SetFont(Book.c_bstr(), ItalicaBold.c_bstr(), 0, &res);
pdf->Cell (154, 5,(WideString("\"Mensaje a mostrar\"")).c_bstr(), PDF_BORDER_NONE, 0, PDF_ALIGN_CENTER, &PDF_FILL_NO, VACIO.c_bstr());
|
ojala alguien pueda ayudarme  |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Lun 20 Dic, 2010 4:08 pm Asunto: alguien conoce como hacer esto???? |
|
|
Hola a todos.
alguien sabe cómo poder hacer que una frase se muestre en Bookman Old Style negrita y cursiva??.
pongo ésto y no me resulta
| Código: |
long res=0;
WideString VACIO="";
WideString Bookman="Bookman Old Style";
WideString ItalicaBold="BI";
pdf->SetFont(Book.c_bstr(), ItalicaBold.c_bstr(), 0, &res);
pdf->Cell (154, 5,(WideString("\"Mensaje a mostrar\"")).c_bstr(), PDF_BORDER_NONE, 0, PDF_ALIGN_CENTER, &PDF_FILL_NO, VACIO.c_bstr());
|
ojala alguien pueda ayudarme |
|
| Volver arriba |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Vie 13 Ene, 2017 6:26 pm Asunto: |
|
|
| _Leo escribió: | | bosoft escribió: | Cuando lo lanzo a la impresora uso el TBitmap y por StrechDraw lo pongo en la Printer().
Ahora viene mi pregunta. ¿Como lo hago a pdf con la dll? |
No había visto tu pregunta, supongo que a estas alturas ya habrás encontrado una solución, pero por si alguien tiene la misma duda.
Tendrías que salvar antes la imagen y luego podrías hacer algo así:
| Código: | PdfDocPtr pdf;
pdf.CreateInstance(CLSID_PdfDoc);
pdf->AddPage(1);
double ancho, alto;
pdf->GetPageWidth(&ancho);
pdf->GetPageHeight(&alto);
pdf->Image(WideString("c:\\imagen.bmp"), 0, 0, ancho, alto, 0, 0);
pdf->SaveAsFile(WideString("c:\\prueba.pdf")); |
|
Vuelvo a subir este post, porque después de muchos años de uso perfecto (muchas gracias _Leo), me ha surgido un problema.
Necesito ajustar el tamaño de la página pdf resultante. Llevo varios días buscando por internet solución a este tema, y solo he conseguido visualizar (que no descargar) el manual donde se explica muy escuetamente como cambiar el tipo de página. El manual está en https://es.scribd.com/doc/79702826/Libreria-Imprimir-PDF y después de mucho leer, explica que hay que usar initialize(a,b,c) indicándole la orientación de papel (a), el tipo de medida (b) y el tipo de papel (c). De la segunda no hay nada mas pero de la tercera dice que: ...en el momento de la edición de este manual, habían mas de 160 tipos de papel reconocidos.
Como no he sido capaz de encontrar nada mas, intentaré hacer pruebas para ir averiguando los tipos de papel (y de medida de paso)
Por eso os pido la ayuda. ¿Hay alguien que sepa/tenga los tipos de papel o donde encontrarlos?
También estoy abierto a cambiar de método de guardar pdfs desde bcb2007
Saludos y gracias
PD: la página, que se supone origen, no carga. Es como si sorceforge la hubiese cambiado o eliminado http://wxcode.sourceforge.net/components/wxpdfdoc/ |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Dom 15 Ene, 2017 10:37 pm Asunto: |
|
|
| bosoft escribió: | | ¿Hay alguien que sepa/tenga los tipos de papel o donde encontrarlos? |
Hola, en el mismo enlace que has puesto al final aparecen los distintos tamaños de papel. He encontrado el mismo documento en el siguiente enlace y se puede descargar en PDF:
http://myslide.es/documents/libreria-imprimir-pdf.html
(Aparentemente subido en este otro servicio por la misma persona. Solo hay que registrarse gratuitamente para descargarlo)
Después de algunas pruebas he conseguido que me permita cambiar la orientación y el tamaño del papel:
| Código: | enum Orientacion {PORTRAIT=1, LANDSCAPE};
// Solo he puesto algunos tamaños comunes, en el PDF hay muchos más
enum Papel {PAPER_NONE=0, PAPER_A4=3, PAPER_A3=12, PAPER_A5=14, PAPER_A2=64};
PdfDocPtr pdf;
pdf.CreateInstance(CLSID_PdfDoc);
pdf->Initialize(0, NULL, PAPER_A3); //<- Tamaño papel: A3
pdf->AddPage(LANDSCAPE); //<- Orientación: horizontal
double ancho, alto;
pdf->GetPageWidth(&ancho);
pdf->GetPageHeight(&alto);
pdf->Image("c:\\imagen.bmp"), 0, 0, ancho, alto, 0, 0);
pdf->SaveAsFile("c:\\prueba.pdf")); |
Parece que ahora se puede encontrar aquí:
https://utelle.github.io/wxpdfdoc/ |
|
| Volver arriba |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Lun 16 Ene, 2017 8:49 am Asunto: |
|
|
Gracias_Leo
Poco a poco he llegado también a la misma conclusión. Me he descargado la lista desde otro sitio y he conseguido cambiar el tipo
En tu código falta el tipo de medida que he conseguido "descifrar"
param unit Defines the user units. Possible values are:
* "mm" millimeter (1 mm = 0.0394 in = 2.833 pt = 0.1 cm) (default)
* "cm" centimeter (1 cm = 0.394 in = 28.33 pt = 10 mm)
* "pt" points (1 pt = 1/72 in = 0.0353 cm = 0.353 mm)
* "in" inch (1 in = 72 pt = 2.54 cm = 25.4 mm)
Aplicando esto y todo lo encontrado el código debería quedar | Código: | enum Orientacion {PORTRAIT=1, LANDSCAPE};
// Solo he puesto algunos tamaños comunes, en el PDF hay muchos más
enum Papel {PAPER_NONE=0, PAPER_A4=3, PAPER_A3=12, PAPER_A5=14, PAPER_A2=64};
PdfDocPtr pdf;
pdf.CreateInstance(CLSID_PdfDoc);
// aplicar orientación y medida
pdf->Initialize(LANDSCAPE, "mm", PAPER_A3); //<- Tamaño papel: A3
// pdf->AddPage(LANDSCAPE); //<- Orientación: horizontal
double ancho, alto;
pdf->GetPageWidth(&ancho);
pdf->GetPageHeight(&alto);
pdf->Image("c:\\imagen.bmp"), 0, 0, ancho, alto, 0, 0);
pdf->SaveAsFile("c:\\prueba.pdf")); |
Ahora me falta saber como enviarle medidas no listadas, como por ejemplo, la medida del típico recibo de 8,5" x 4".
He encontrado varios fragmentos de código en el que se explica como hacerlo, pero no me a funcionado. Hay 2 funciones (aunque creo que es la misma) a las que aparentemente llama Initialize que son | Código: | wxPdfDocument(int orientation = wxPORTRAIT,
const wxString& unit = wxString(wxT("mm")),
wxPaperSize format = wxPAPER_A4);
wxPdfDocument(int orientation, double pageWidth, double pageHeight,
const wxString& unit = wxString(wxT("mm")));
|
Y en eso estoy
Muchas gracias _Leo
Saludos |
|
| Volver arriba |
|
 |
bosoft Master

Registrado: 23 Oct 2005Mensajes: 342
|
Publicado: Lun 16 Ene, 2017 8:49 pm Asunto: |
|
|
Hola a todos
Después de darle 1000 vueltas al tema, me he encontrado con que el programa usa una base de datos con los tipos de papel: todo tamaño que no esté en esa base es erróneo, al menos en las versiones modernas del wxpdfdoc
Es decir, que al compilar el pdfcom.dll, se le incluyó la base de datos de los tamaños de papel y no acepta ningún tamaño fuera de esos
De todas formas sigo intentando cambiar en la base un A4 de 210mmx297mm (hay 5 en total en la base de datos) por algún tipo diferente. Si lo consigo ya informaré
Saludos
PD: si alguien necesita los tamaños del pdfcom.dll....
PD2: mi agradecimiento expreso a _Leo por su ayuda en este tema y sobre todo por la gran ayuda que hace en este foro |
|
| Volver arriba |
|
 |
jotny Master


Registrado: 17 Feb 2004Mensajes: 226Ubicación: santiago
|
Publicado: Lun 28 Oct, 2019 7:32 am Asunto: Re: alguien conoce como hacer esto???? |
|
|
| jotny escribió: | Hola a todos.
alguien sabe cómo poder modificar una fuente?, he descargado algunos ttf y pueto en una carpeta que llamo con SetFontPath pero cuando pongo en SerFont la fuente , por ejemplo, "Bookman Old Style" o "kokile" me salen puros caracteres basura.
aqui un ejemplo de lo que hago (teniendo presente que tengo los ttf)
| Código: |
long res=0;
WideString VACIO="";
WideString Bookman="Bookman Old Style";
WideString ItalicaBold="BI";
pdf->SetFont(Book.c_bstr(), ItalicaBold.c_bstr(), 0, &res);
pdf->Cell (154, 5,(WideString("\"Mensaje a mostrar\"")).c_bstr(), PDF_BORDER_NONE, 0, PDF_ALIGN_CENTER, &PDF_FILL_NO, VACIO.c_bstr());
|
ojala alguien pueda ayudarme |
|
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|