Hopding/pdf-lib

External links work but link to same page doesn't work

rajashree23 opened this issue · 0 comments

What were you trying to do?

I am trying to add links to the same page, however when Inam trying to merge the PDfs it is getting lost unlike external links,

How did you attempt to do it?

  • I generate multiple PDFs from URL or HTML using puppeteer.
  • Once it is done, I use pdf-lib to merge the PDFsPuppeteer

What actually happened?

The external links on the page are working fine but the links to the pages are not working

What did you expect to happen?

I want a way to tag internal pages as well

How can we reproduce the issue?

  1. Creating different PDFs from puppeteer
const fs = require('fs');
const puppeteer = require("puppeteer");
const html = `<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<a href="https://www.google.fr/maps/@50.6288598,3.0621533,14z">Google.fr maps</a>
 
    <ul>
<li><a href="#test1">Test 1</a></li>
<li><a href="#test2">Test 2</a></li>
<li><a href="#test3">Test 3</a></li>
<li><a href="#test4">Test 4</a></li>
<li><a href="#test5">Test 5</a></li>
</ul>
 
    <h1 id="test1" style="margin-bottom: 500px">Test 1 title</h1>
<h1 id="test2" style="margin-bottom: 500px">Test 2 title</h1>
<h1 id="test3" style="margin-bottom: 500px">Test 3 title</h1>
<h1 id="test4" style="margin-bottom: 500px">Test 4 title</h1>
<h1 id="test5" style="margin-bottom: 500px">Test 5 title</h1>
</body>
</html>`;
(async () => {
  const browser = await puppeteer.launch({
    headless: false,
    devtools: true,
    args: [
      "--disable-web-security",
      "--disable-features=IsolateOrigins",
      "--disable-site-isolation-trials",
    ],
  });
  const page1 = await browser.newPage();

  await page1.setContent(html.toString("utf-8"));
  const pdfBuffer1 = await page1.pdf();
  const writeStream1 = fs.createWriteStream("./example1.pdf");
  writeStream1.write(pdfBuffer1);
  writeStream1.close();

  const page2 = await browser.newPage();
  await page2.setContent(html.toString("utf-8"));
  const pdfBuffer2 = await page2.pdf();
  const writeStream2 = fs.createWriteStream("./example2.pdf");
  writeStream2.write(pdfBuffer2);
  writeStream2.close();

  await browser.close();
})();
  1. merge PDFs
(async () => {
  const mergedPdf = await PDFDocument.create();

  const pdfA = await PDFDocument.load(fs.readFileSync("example1.pdf"));
  const pdfB = await PDFDocument.load(fs.readFileSync("example1.pdf"));

  const copiedPagesA = await mergedPdf.copyPages(pdfA, pdfA.getPageIndices());
  copiedPagesA.forEach((page) => mergedPdf.addPage(page));

  const copiedPagesB = await mergedPdf.copyPages(pdfB, pdfB.getPageIndices());
  copiedPagesB.forEach((page) => mergedPdf.addPage(page));

  const mergedPdfFile = await mergedPdf.save();

  const writeStream = fs.createWriteStream("./final.pdf");
  writeStream.write(mergedPdfFile);
  writeStream.close();
})();

Version

1.17.1

What environment are you running pdf-lib in?

Node

Checklist

  • My report includes a Short, Self Contained, Correct (Compilable) Example.
  • I have attached all PDFs, images, and other files needed to run my SSCCE.

Additional Notes

Kindly help me out as this is urgent!