Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

How to programmatically generate interactive pdf documents?

Community Beginner ,
Mar 06, 2024 Mar 06, 2024

Hello,
A. I would like to generate interactive pdf documents, having

* several combo boxes and, depending on user selection:

* show/hide some diagrams/maps

 

The pdf standard seems to support all that is needed for this:

form elements, optional content groups (OCGs), Layers and JavaScript to handle actions

=> What is the recommented way to "program" pdf documents? (I do not want to manully create them but need some automated workflow, where I can easily update the data etc. ) 

B. First I tried to use pymypdf but faced issues with enabling/showing OCGs:
https://github.com/pymupdf/PyMuPDF/discussions/3195

C. I also tried to use the node.js Services API (see code excample below). However, that API only seems to support convertion of *.docx, *.html content etc. instead of detailed ways to construct pdf 
documents from scratch / from its "low level building blocks"?
If the service api  supports what I am looking for, where can I find the documentation?

D. If the services api does not support this:
Is there an alternative to Services API that is thought for that purpose? 

Example to use node.js services api to create some pdf document:

const PDFServicesSdk = require('@adobe/pdfservices-node-sdk');

const id = "your client id";
const secret = "your secret credential";

let outputFilePath = 'demo.pdf';

const credentials = PDFServicesSdk.Credentials
.servicePrincipalCredentialsBuilder()
.withClientId(id)
.withClientSecret(secret)
.build();


const executionContext = PDFServicesSdk.ExecutionContext.create(credentials);
const createPdfOperation = PDFServicesSdk.CreatePDF.Operation.createNew();

//demo.docx currently is an empty document; did not find an example on how to
//construct pdf documents with services api from scratch
const input = PDFServicesSdk.FileRef.createFromLocalFile('demo.docx');
createPdfOperation.setInput(input);

createPdfOperation.execute(executionContext)
//.then(result => {
// const createOcgParams = {
// name: 'MyOptionalContentGroup',
// visibilityPolicy: 'VISIBLE',
// members: [], // Add your desired members here
// };
    // how to create form elements, ocgs, include javascript?
// return executionContext.createOCG(createOcgParams);
})
.then(result => result.saveAsFile(outputFilePath))
.catch(err => {
if(err instanceof PDFServicesSdk.Error.ServiceApiError
|| err instanceof PDFServicesSdk.Error.ServiceUsageError) {
console.log('Exception encountered while executing operation', err);
} else {
console.log('Exception encountered while executing operation', err);
}
});



918
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Mar 07, 2024 Mar 07, 2024

At this time, the API does not support any form of PDF interactivity.

Translate
Community Expert ,
Mar 07, 2024 Mar 07, 2024

At this time, the API does not support any form of PDF interactivity.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Mar 07, 2024 Mar 07, 2024
LATEST

Thank you for clarification

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Resources