Notes: Java module to create Zipped Folder from list of Files


private static void convertFilesToZip(ArrayList filePaths, String zipFilePath) throws Exception {
        try ( ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFilePath));) {
            for (String filePath : filePaths) {
                File fileToZip = new File(filePath);
                ZipEntry e = new ZipEntry(new File(filePath).getName());
                out.putNextEntry(e);
                Files.copy(fileToZip.toPath(), out);
            }
        }
    }

Notes: Java module to convert list of images to PDF document using Apache PDFBox

 private static void convertImagesToPdf(ArrayList<String> imagesFilePath, String pdfFilePath) throws Exception {

        try ( PDDocument doc = new PDDocument();) {

            for (String imageFilePath : imagesFilePath) {

                PDImageXObject image = PDImageXObject.createFromFile(imageFilePath, doc);

                PDRectangle pageSize = PDRectangle.A4;

                int originalWidth = image.getWidth();

                int originalHeight = image.getHeight();

                float pageWidth = pageSize.getWidth();

                float pageHeight = pageSize.getHeight();

                float ratio = Math.min(pageWidth / originalWidth, pageHeight / originalHeight);

                float scaledWidth = originalWidth * ratio;

                float scaledHeight = originalHeight * ratio;

                float x = (pageWidth - scaledWidth) / 2;

                float y = (pageHeight - scaledHeight) / 2;

                PDPage page = new PDPage(pageSize);

                doc.addPage(page);

                try ( PDPageContentStream contents = new PDPageContentStream(doc, page)) {

                    contents.drawImage(image, x, y, scaledWidth, scaledHeight);

                }

            }

            doc.save(pdfFilePath);

        }

    }

Notes: Java module to merge PDF Documents (with or without password)

import java.io.File;

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

import java.time.LocalDate;

import java.time.YearMonth;

import java.time.format.DateTimeFormatter;

import java.time.format.DateTimeFormatterBuilder;

import java.util.ArrayList;

import java.util.Collections;

import java.util.NavigableMap;

import java.util.TreeMap;

import org.apache.commons.io.FileUtils;

import org.apache.commons.lang3.StringUtils;

import org.apache.pdfbox.io.MemoryUsageSetting;

import org.apache.pdfbox.multipdf.PDFMergerUtility;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.pdmodel.PDPage;

import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;

import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageDestination;

import org.apache.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageFitWidthDestination;

import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;

import org.apache.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;



 public static void mergePdfFiles(String destinationFilePath, ArrayList<String> sourceFilesPath) {

        try {

            PDFMergerUtility pdfMerger = new PDFMergerUtility();

            pdfMerger.setDestinationFileName(destinationFilePath);

            for (String sourceFile : sourceFilesPath) {

                System.out.println(sourceFile);

                pdfMerger.addSource(sourceFile);

            }

            pdfMerger.mergeDocuments(MemoryUsageSetting.setupTempFileOnly());

        } catch (Exception e) {

            e.printStackTrace();

        }

    }


    public static void mergePdfFiles(String destinationFilePath, ArrayList<String> sourceFilesPath,

            String password) {

        Path tmpDir = null;

        try {

            tmpDir = Files.createTempDirectory("aaaa");

            ArrayList<String> tmpList = new ArrayList();

            for (String filePath : sourceFilesPath) {

                File file = new File(filePath);

                try ( PDDocument doc = PDDocument.load(file, password)) {

                    doc.setAllSecurityToBeRemoved(true);

                    doc.save(new File(tmpDir.toString() + "/" + file.getName()));

                    tmpList.add(tmpDir.toString() + "/" + file.getName());

                }

            }

            mergePdfFiles(destinationFilePath, tmpList);

        } catch (Exception e) {

            e.printStackTrace();

        } finally {

            try {

                FileUtils.deleteDirectory(new File(tmpDir.toString()));

            } catch (Exception e) {

                e.printStackTrace();

            }

        }

    }

Notes: Java module to convert PDF document to Image_Files

 import java.awt.image.BufferedImage;

import java.io.File;

import java.util.Arrays;

import javax.imageio.ImageIO;

import org.apache.commons.lang3.StringUtils;

import org.apache.pdfbox.pdmodel.PDDocument;

import org.apache.pdfbox.rendering.ImageType;

import org.apache.pdfbox.rendering.PDFRenderer;


private static void convertPdfToImage(String pdfFilePath, String imageFolderPath) throws Exception {

        File file = new File(pdfFilePath);

        String fileExtension = ".jpg";

        int dpi=300;

        try (PDDocument doc = PDDocument.load(file)) {

            PDFRenderer pdfRenderer = new PDFRenderer(doc);

            for (int i = 0; i < doc.getPages().getCount(); i++) {

                BufferedImage img = pdfRenderer.renderImageWithDPI(i, dpi, ImageType.RGB);

                File outputFile = new File(imageFolderPath + StringUtils.removeEnd(file.getName(),".pdf") + "_pgNo" + i + fileExtension);

                outputFile.delete();

                System.out.println(outputFile.getAbsolutePath());

                System.out.println(Arrays.toString(ImageIO.getWriterFormatNames()));

                boolean flg=ImageIO.write(img, "jpg", outputFile);

                System.out.println(flg);

            }


        }

    }

C++ code to connect Postgres Database

/* At first install libpqxx in linux*/

#include <pqxx/pqxx>

using namespace std;
using namespace pqxx;

class GetDbConn
{
public:
    static connection *getPostgresDbConnection(const std::string& conStr)
    {
        pqxx::connection *c=new connection(conStr);
        return c;
    }
};

----------------

/*Code to call this connection is as follows

#include <pqxx/pqxx>
#include "getDbConn.h"

using namespace std;
using namespace pqxx;

class MyDb
{
public:
    static connection * getTradingNseConnection()
    {
        char const *conStr="dbname = <database_name> user = <user_name> password = <db_password> hostaddr = 127.0.0.1 port = 5432";
        pqxx::connection *con=GetDbConn::getPostgresDbConnection(conStr);
        if ((*con).is_open())
        {
            cout << "Opened database successfully: " << (*con).dbname() << endl;
            return con;
        }
        else
        {
            cout << "Can't open database" << endl;
            return NULL;
        }
    }
};

Ubuntu Notes: Set up autossh as systemd useful-reminder commands

 sudo vim /etc/systemd/system/permanentAutossh.service

========================================

[Unit]

Description=Keeps a tunnel to myOciFreeNat open

After=network-online.target


[Service]

User=<username>

Environment="AUTOSSH_GATETIME=0"

ExecStart=/usr/bin/autossh -M 0 -q -N -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -L 4322:127.0.0.1:5432 -i /<ssh_private_key_file_absolute_path> <username>@<ip_address> -p 22


[Install]

WantedBy=multi-user.target

========================================

sudo systemctl daemon-reload

sudo systemctl enable permanentAutossh

sudo systemctl start permanentAutossh

==================

sudo systemctl daemon-reload

sudo systemctl restart permanentAutossh

sudo systemctl status permanentAutossh

======================

sudo systemctl stop permanentAutossh

sudo systemctl disable permanentAutossh

sudo rm /etc/systemd/system/permanentAutossh.service

Reinstall Network-Manager in Ubuntu

 Assumptions: Network-Manager is somehow lost (or currepted) while updating/deleting some software and Internet access is lost. Internet access was there using data-cable usb port using mobile-internet connection.

Get Logical Name of the port: Type in terminal 
<sudo lshw -C network>

you will get list of ports with there logical name

Connect to internet using command:
<sudo dhclient <your_port_name>> e.g. in my case it was <sudo dhclient usb0>

Then reinstall Network-Manager using command:
<sudo apt-get install network-manager>


Done!

Regarding site Free Browser Tool (https://free-browser-tools.mohitkrgupta.dev) (discussion with google search AI)

Various discussions with Google Search AI regarding site  Free Browser Tool are as below: site free-browser-tools.mohitkrgupta.dev what doe...