Convert Adobe API code to C# with Vintasoft
Posted: Tue Oct 06, 2020 4:28 pm
Hi,
We currently have an Adobe plugin and we currently use Vintasoft to replace this old Plugin to new desing interface. So our customers will not need to have Adobe Pro and they will save monthy fees.
All options are currently converted but I can't find a way to convert one of them.
This is a part of code I'll need to convert
We have two parts of code, one to set some status in PDF and another one to reset status (Revert the first part)
This is the first part of code (Set status)
This is the second one (Reset status)
Someone could you help me to convert it ?
Thank you
We currently have an Adobe plugin and we currently use Vintasoft to replace this old Plugin to new desing interface. So our customers will not need to have Adobe Pro and they will save monthy fees.
All options are currently converted but I can't find a way to convert one of them.
This is a part of code I'll need to convert
We have two parts of code, one to set some status in PDF and another one to reset status (Revert the first part)
This is the first part of code (Set status)
Code: Select all
PDPage page = PDDocAcquirePage(doc, pageNumber);
PDEContent pdeContent = PDPageAcquirePDEContent(page, gExtensionID);
PDEPath path = createPageBolderPath(page, bolderWidth, bolderColor);
PDEContentAddElem(pdeContent, kPDEAfterLast, (PDEElement)path);
PDPageSetPDEContent(page, gExtensionID);
PDERelease((PDEObject)path);
PDPageReleasePDEContent(page, gExtensionID);
PDEPath JxStatusSetAction::createPageBolderPath(PDPage page, int width, QColor color) {
PDEPath path = PDEPathCreate();
ASFixedRect cropBox;
PDPageGetCropBox(page, &cropBox);
PDEPathSetPaintOp(path, kPDEStroke);
PDEGraphicState state;
memset(&state, 0, sizeof(PDEGraphicState));
state.strokeColorSpec.space = PDEColorSpaceCreateFromName(ASAtomFromString("DeviceRGB"));
state.strokeColorSpec.value.color[0] = ASFloatToFixed(color.redF());
state.strokeColorSpec.value.color[1] = ASFloatToFixed(color.greenF());
state.strokeColorSpec.value.color[2] = ASFloatToFixed(color.blueF());
state.lineWidth = ASInt16ToFixed(width);
state.miterLimit = fixedTen;
state.flatness = fixedOne;
PDEElementSetGState((PDEElement)path, &state, sizeof(PDEGraphicState));
ASFixed pathData[5];
pathData[0] = kPDERect;
pathData[1] = cropBox.left;
pathData[2] = cropBox.top;
pathData[3] = cropBox.right - cropBox.left;
pathData[4] = cropBox.bottom - cropBox.top;
PDEPathSetData(path, pathData, sizeof(pathData));
return path;
}
Code: Select all
PDPage page = PDDocAcquirePage(doc, pageNumber);
// delete all last elements which are path. for old pdflyer it might has two paths
PDEContent pdeContent = PDPageAcquirePDEContent(page, gExtensionID);
while (true) {
int pdeNumber = PDEContentGetNumElems(pdeContent);
if (pdeNumber == 0) break;
PDEElement element = PDEContentGetElem (pdeContent, pdeNumber - 1);
if (PDEObjectGetType((PDEObject)element) != kPDEPath) break;
PDEContentRemoveElem(pdeContent, pdeNumber - 1);
}
PDPageSetPDEContent(page, gExtensionID);
PDPageReleasePDEContent(page, gExtensionID);
PDPageRelease(page);
Thank you