PDFTron: как добавить поле ввода - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь добавить поле ввода с помощью PDFTron, и в PDF ничего не появляется,

Я следую за этим, делая c: https://www.pdftron.com/documentation/samples/js/InteractiveFormsTest

Вот что я попробовал:

 (() => {
    window.addEventListener('documentLoaded', async () => {
       await PDFNet.initialize();
       const doc = readerControl.docViewer.getDocument();
       const pdfDoc = await doc.getPDFDoc();
       await pdfDoc.requirePage(1);
       await PDFNet.runWithCleanup(async () => await main(pdfDoc));
       readerControl.docViewer.refreshAll();
       readerControl.docViewer.updateView();
  });

  async function main(pdfDoc) {
       ...
       const pageRect = await PDFNet.Rect.init(0, 0, 612, 794);
       let page = await pdfDoc.pageCreate(pageRect);
       const empFirstName = await pdfDoc.fieldCreateFromStrings('test', PDFNet.Field.Type.e_text, 'John', 'fg');
      const annot1 = await PDFNet.WidgetAnnot.create(pdfDoc, await PDFNet.Rect.init(50, 550, 350, 600), empFirstName);
      page.annotPushBack(annot1);


      pdfDoc.pagePushBack(page);
      pdfDoc.refreshFieldAppearances();
      ...
 };

Результат: в PDF ничего не появляется

Есть идеи?

1 Ответ

0 голосов
/ 26 февраля 2020

Я посмотрел на ваш код и внес некоторые изменения - я не уверен, что было усечено, но, возможно, вы пропустили несколько шагов.

Дайте мне знать, если это проясняет процесс добавления поля программно, и если у вас есть дополнительные вопросы.

window.addEventListener('documentLoaded', async() => {
const docViewer = readerControl.docViewer;
const annotManager = docViewer.getAnnotationManager();
await PDFNet.initialize();
const doc = readerControl.docViewer.getDocument();
const pdfDoc = await doc.getPDFDoc();
await pdfDoc.requirePage(1);
await PDFNet.runWithCleanup(async () => {
  const document = docViewer.getDocument();
  const pdfDoc = await document.getPDFDoc();

  const empFirstName = await pdfDoc.fieldCreateFromStrings('test', PDFNet.Field.Type.e_text, 'John', 'fg');
  const annot1 = await PDFNet.WidgetAnnot.create(pdfDoc, await PDFNet.Rect.init(50, 550, 350, 600), empFirstName);

  const rotation = docViewer.getCompleteRotation(1) * 90;
  annot1.setRotation(rotation);



  // draw the annotation the viewer
  const page = await pdfDoc.getPage(1);
  await page.annotPushBack(annot1);
  await pdfDoc.refreshFieldAppearances();

  // import newly created form fields
  const fdfDoc = await pdfDoc.fdfExtract(PDFNet.PDFDoc.ExtractFlag.e_both);
  const xfdf = await fdfDoc.saveAsXFDFAsString();

  await annotManager.importAnnotations(xfdf);

  // refresh viewer
  docViewer.refreshAll();
  docViewer.updateView();
  document.refreshTextData();
});

});

...