PDA

Ver la Versión Completa : Sumatra o Acrobat hacer un Indice


shoulder
08-06-2015, 18:36:41
Hola me estan pidiendo un indice de una carpeta scaneada o sea un historial de compras, en una tabla armo el indice un campo descripcion y numero de pagina, pero se puede hacer mediante sumatra o acrobat que al elegir el tema del indice vaya directamente a la pagina dentro del PDF?.

Gracias.

Casimiro Notevi
08-06-2015, 18:39:32
No se entiende :confused:

shoulder
08-06-2015, 18:56:03
Hola seria asi, tengo una tabla llamada indice por ejemplo Hoja 1 - Introduccion , Hoja 2 Ventas, Hoja 59 Gastos. A su vez tengo una carpeta pdf, un archivo de 100 hojas. Al hacer click mediante un dblookupcombobox en el tema que me interesa vaya directamente a la hoja elegida en el PDF.
Gracias

ecfisa
08-06-2015, 21:37:01
Hola shoulder.

Para que no tengas dificultad en reproducir el ejemplo usé el documento La cara oculta de Delphi 4 que podes descargar desde el FTP (http://terawiki.clubdelphi.com/Delphi/Manuales/?download=La_Cara_Oculta_De_Delphi_4_pdf_.zip) de Club Delphi.

Para el ejemplo usé el componente TACroPdf pero no tiene relevancia cuál sea, ya que la idea es mostrarte como usar el TComboBox para obtener el número de página a partir del ítem seleccionado.

procedure TForm1.FormCreate(Sender: TObject);
begin
AcroPDF1.LoadFile('La_Cara_Oculta_De_Delphi_4.pdf');
// Confeccionar Titulos/páginas
with ComboBox1 do
begin
Clear;
AddItem('PRÓLOGO DEL AUTOR', TObject(19));
AddItem('PRÓLOGO A LA SEGUNDA EDICIÓN', TObject(23));
AddItem('ENTORNO Y HERRAMIENTAS', TObject(27));
AddItem('HERRAMIENTAS Y UTILIDADES', TObject(41));
AddItem('UNIDADES, PROYECTOS Y PAQUETES', TObject(57));
AddItem('SISTEMAS DE BASES DE DATOS', TObject(77));
AddItem('EL MOTOR DE DATOS DE BORLAND', TObject(103));
//...
ItemIndex := 0;
end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
pag: Integer;
begin
// (*)
if ComboBox1.ItemIndex <> -1 then
begin
// Nro de página
pag := Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
// Ir a la página
AcroPDF1.setCurrentPage(pag);
end;
end;

(*) A efecto explicativo, se podría haber escrito:

if ComboBox1.ItemIndex <> -1 then
AcroPDF1.setCurrentPage(Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]));


Muestra:
http://s11.postimg.org/hpu670zw3/shoulder.gif

Saludos :)

shoulder
09-06-2015, 01:11:34
Muchisimas Gracias!.