Generate index with page numbers for PDF - pdf-generation

I have record sets for which I need to programmatically generate PDFs, similar to a phone book. At the end of the listing, I need to append an alphabetical index of entries which includes the page number on which each entry appears. How can I discover these page numbers while building the index? I haven't chosen a PDF library yet, as I'm waiting to see if any support this functionality.

Related

download data from website using uipath RPA

I have automated the login and getting to the downloading page where i have some pdf's which i want to download. These pdf's are dynamic ,sometimes there are 10 sometimes 100 ,it changes everyday.i want to download those pdf's .
please find the attached image
Here i want to download the pdf by clicking each elements in column 3(hyperlink highlighted in blue colour) ,the number of rows in the table is dynamic.how can i do it using UIPATH.
From the top of my head, without knowing the application you are working in I see a few different approaches you can try:
Approach 1: Extract table as Data Table
Perhaps you can extract the table as a Data Table, enumerate the rows and find the individual link selectors you then can pass to a click activity.
Approach 2: Dynamically manipulating the selector
Use UIExplorer to find the selector of the link in the third column. Typically the attribute idx is the unique identifier. You can construct your own variable idx and in a while loop increment this variable while passing it to a click-activitys selector: "<your normal selector here someAttr="something" idx="+idx.ToString+"/>
This way, when the click fails with selector not found you will be at the last row of the column and you can exist the while loop.
Approach 3: Using Find Children
Another approach is to use the Find children activity on the column or table to get the children, i.e. the rows. You need to know which filter to use, it is basically the selector.
Find children outputs a IEnumerable<UIElement> you can iterate and pass to a click activity
The shared image is a perfect case of scraping a table from Web page which can be done through UiPath's Data Scraping Wizard, refer this tutorial. This will convert your html table into DataTable. This Data Scraping Wizard will take care of dynamin number of rows as well as the pagination (if exist).
Later, you've to iterate the DataTable (ForEach activity) and hit the link to download PDF files.

Book representation in Elasticsearch

I have a book that can contain hundreds, maybe thousands, of pages and I need to highlight every single word or phrase, that user searches for. For example: user enters a word/phrase that he wants to find and starts listing through the book from first to last page, pages are being lazy loaded. When there is word/phrase he entered, its highlighted.I couldn't find a way how to store text of the book: When I store it in a single field, its extremely long and I need to load it by pages. However I haven't found any way of returning only part, which represents one page, of text field with highlighted words.When I split the text into pages and store them as nested objects or stand-alone documents, its impossible to highlight phrases that span across several pages. I need to merge all the pages together, highlight it and then return it page by page, but I haven't found a way how it can be done.What is the best way to store book in Elasticsearch when I want to search through it and also display it page by page?

BIRT: Fit to whole page in report design?

I have a report and want to fix it to 1 page (A4) regardless of the number of rows in the table. Usually it's 10 rows but can be more in some cases.
Anyway I need to use BIRT in a fixed context (3rd party application), eg. no option to adjust the BIRT viewer or url params. Therefore how can I add this option to my report design so that it is applied automatically?
I don't think it is possible to force a render option from the report-design. If it was it would probably achieved by using this code fragment from "beforeRender" script of the report:
importPackage(Packages.org.eclipse.birt.report.engine.api);
reportContext.getRenderOption().setOption(IPDFRenderOption.PAGE_OVERFLOW,IPDFRenderOption.FIT_TO_PAGE_SIZE);
I tried it, it appears at this stage the BIRT task has already applied render options and therefore this new value is ignored.
If you have access to the source code of this third party app it is quite easy to add a "Fit to" PDF render option.
Otherwise you will have to change the report-design and make it a little bit more dynamic: there are many design tips allowing to fit a report in a single page, one of them is to change the height of some items by script depending on the number of rows of the table.

Dynamic Text Control begins on new page when total data for the control exceeds an entire page

BIRT 3.71v20110905
One of my data fields is a CLOB with html tags. I'm using the Dynamic Text Control in my report. This specifically happens when:
The Dynamic Text Control content type is to HTML or Automatic
in my case since I have html tags in the data. (Problem does not occur if I set the content type to Plain, but then the HTML tags show up in the report output as text.)
and
The total amount of data to be displayed by the control is more than one full page on its own
(without taking into account spacing used by other controls). If the
total amount of data to be displayed by the control is less than one
full page but can't all fit on the current page, it works as expected (meaning it displays what it
can on the current page and wraps the rest correctly onto the next
page.)
Is this a bug in the calculation for the DTC pagination?
Additional notes - I encountered this while trying to use a sample report that inserts a page break as needed between groups for duplex printing. It works great under most circumstances, but not when this DTC pagination issue rears up. ( GroupAlwaysStartsOnOddPage.rptdesign )
Sorry to disappoint, but this is a known issue and has not yet been resolved. At least not in the version of BIRT that Maximo is using.
What I tend to do is break the dynamic text where possible, experiment until I get the largest possible part on one page and put the rest into another dynamic text field.
This is obviously only a work around, but as far as I know there is not much else that you can do.
We ran into this problem with a dynamic text field containing HTML content coming from IBM Maximo long description fields. The report was designed in BIRT 3.7.1 Designer.
We were able to work around the duplication bug by changing the layout from Fixed to Auto. With Auto layout, it is also not necessary to change the Display setting of the field to "inline" (which we previously had to do to allow it to flow between pages without creating an initial page break).
In our case, changing the layout to Auto did not have negative effects on the appearance or geometry of our report.

Different layout for 1st and rest pages of report

I currently have a detailed report to design:
A report which has different header-footer-detail for the first and rest of the pages. I tried to overcome the challange by using 2 Master Pages (not quite achieved anything yet) but I am stuck at the point which row count of 1st and rest of the pages... 1st page has 20 rest of the pages have 35 rows. Namely the question is:
"How can I set different pagebreak intervals for the table for each page?"
PS: BIRT version: 3.7
Edit: I've tried to create a group on row number and put a filter on row number to maintain flow between 2 different tables but no luck. (It didnt make real sense to put row filter but tried anyway :))
What you may need to do in the body section of your report is create a grid of one column and two rows. In the advanced properties for the upper cell, look under the section property for the Master Page setting, set that value equal to the name of your first master page. Place your report contents in that cell and set the master page references to your first master page as well. Repeat this for the second cell and references to the second page. Your table(s) have an advanced property for page break interval that you can adjust to control how many rows go on a page.
However if you want your table data to flow continuously from the first page into the second page and onward, I am not sure if this is possible but will update my answer if I find a way.

Resources