mirror of
https://github.com/JakubMelka/PDF4QT.git
synced 2025-06-05 21:59:17 +02:00
Signature plugin: visible digital signatures
This commit is contained in:
@ -4567,6 +4567,46 @@ PDFObjectReference PDFDocumentBuilder::createFormFieldSignature(QString fieldNam
|
||||
}
|
||||
|
||||
|
||||
void PDFDocumentBuilder::createFormFieldWidget(PDFObjectReference formField,
|
||||
PDFObjectReference page,
|
||||
PDFObjectReference appearanceStream,
|
||||
QRectF rect)
|
||||
{
|
||||
PDFObjectFactory objectBuilder;
|
||||
|
||||
objectBuilder.beginDictionary();
|
||||
objectBuilder.beginDictionaryItem("Type");
|
||||
objectBuilder << WrapName("Annot");
|
||||
objectBuilder.endDictionaryItem();
|
||||
objectBuilder.beginDictionaryItem("Subtype");
|
||||
objectBuilder << WrapName("Widget");
|
||||
objectBuilder.endDictionaryItem();
|
||||
objectBuilder.beginDictionaryItem("P");
|
||||
objectBuilder << page;
|
||||
objectBuilder.endDictionaryItem();
|
||||
objectBuilder.beginDictionaryItem("Rect");
|
||||
objectBuilder << rect;
|
||||
objectBuilder.endDictionaryItem();
|
||||
objectBuilder.beginDictionaryItem("AP");
|
||||
objectBuilder.beginDictionary();
|
||||
objectBuilder.beginDictionaryItem("N");
|
||||
objectBuilder << appearanceStream;
|
||||
objectBuilder.endDictionaryItem();
|
||||
objectBuilder.endDictionary();
|
||||
objectBuilder.endDictionaryItem();
|
||||
objectBuilder.endDictionary();
|
||||
PDFObject widgetObject = objectBuilder.takeObject();
|
||||
objectBuilder.beginDictionary();
|
||||
objectBuilder.beginDictionaryItem("Annots");
|
||||
objectBuilder << std::array{ formField };
|
||||
objectBuilder.endDictionaryItem();
|
||||
objectBuilder.endDictionary();
|
||||
PDFObject pageObject = objectBuilder.takeObject();
|
||||
mergeTo(formField, widgetObject);
|
||||
appendTo(page, pageObject);
|
||||
}
|
||||
|
||||
|
||||
void PDFDocumentBuilder::createInvisibleFormFieldWidget(PDFObjectReference formField,
|
||||
PDFObjectReference page)
|
||||
{
|
||||
@ -5131,6 +5171,14 @@ void PDFDocumentBuilder::setFormFieldValue(PDFObjectReference formField,
|
||||
}
|
||||
|
||||
|
||||
void PDFDocumentBuilder::setLanguage(QLocale locale)
|
||||
{
|
||||
PDFObjectFactory objectBuilder;
|
||||
|
||||
setLanguage(locale.name());
|
||||
}
|
||||
|
||||
|
||||
void PDFDocumentBuilder::setLanguage(QString language)
|
||||
{
|
||||
PDFObjectFactory objectBuilder;
|
||||
@ -5145,14 +5193,6 @@ void PDFDocumentBuilder::setLanguage(QString language)
|
||||
}
|
||||
|
||||
|
||||
void PDFDocumentBuilder::setLanguage(QLocale locale)
|
||||
{
|
||||
PDFObjectFactory objectBuilder;
|
||||
|
||||
setLanguage(locale.name());
|
||||
}
|
||||
|
||||
|
||||
void PDFDocumentBuilder::setOutline(PDFObjectReference outline)
|
||||
{
|
||||
PDFObjectFactory objectBuilder;
|
||||
|
@ -92,7 +92,7 @@ struct WrapEmptyArray { };
|
||||
|
||||
/// Factory for creating various PDF objects, such as simple objects,
|
||||
/// dictionaries, arrays etc.
|
||||
class PDFObjectFactory
|
||||
class PDF4QTLIBSHARED_EXPORT PDFObjectFactory
|
||||
{
|
||||
public:
|
||||
inline explicit PDFObjectFactory() = default;
|
||||
@ -1235,6 +1235,17 @@ public:
|
||||
PDFObjectReference signatureValue);
|
||||
|
||||
|
||||
/// Creates visible form field widget without contents.
|
||||
/// \param formField Form field reference
|
||||
/// \param page Page reference
|
||||
/// \param appearanceStream Appearance stream
|
||||
/// \param rect Widget rectangle
|
||||
void createFormFieldWidget(PDFObjectReference formField,
|
||||
PDFObjectReference page,
|
||||
PDFObjectReference appearanceStream,
|
||||
QRectF rect);
|
||||
|
||||
|
||||
///
|
||||
/// \param formField Form field reference
|
||||
/// \param page Page reference
|
||||
@ -1457,6 +1468,11 @@ public:
|
||||
PDFObject value);
|
||||
|
||||
|
||||
/// Set document language.
|
||||
/// \param locale Locale, from which is language determined
|
||||
void setLanguage(QLocale locale);
|
||||
|
||||
|
||||
/// Set document language.
|
||||
/// \param language Document language. It should be a language identifier, as defined in ISO 639
|
||||
/// and ISO 3166. For example, "en-US", where first two letter means language code (en =
|
||||
@ -1464,11 +1480,6 @@ public:
|
||||
void setLanguage(QString language);
|
||||
|
||||
|
||||
/// Set document language.
|
||||
/// \param locale Locale, from which is language determined
|
||||
void setLanguage(QLocale locale);
|
||||
|
||||
|
||||
/// Set document outline.
|
||||
/// \param outline Document outline root
|
||||
void setOutline(PDFObjectReference outline);
|
||||
|
@ -889,6 +889,21 @@ std::set<PDFInteger> PDFPageContentScene::getPageIndices() const
|
||||
return result;
|
||||
}
|
||||
|
||||
QRectF PDFPageContentScene::getBoundingBox(PDFInteger pageIndex) const
|
||||
{
|
||||
QRectF rect;
|
||||
|
||||
for (const auto& element : m_elements)
|
||||
{
|
||||
if (element->getPageIndex() == pageIndex)
|
||||
{
|
||||
rect = rect.united(element->getBoundingBox());
|
||||
}
|
||||
}
|
||||
|
||||
return rect;
|
||||
}
|
||||
|
||||
void PDFPageContentScene::setSelectedElementIds(const std::set<PDFInteger>& selectedElementIds)
|
||||
{
|
||||
m_manipulator.selectNew(selectedElementIds);
|
||||
|
@ -507,6 +507,9 @@ public:
|
||||
/// Returns set of involved pages
|
||||
std::set<PDFInteger> getPageIndices() const;
|
||||
|
||||
/// Returns bounding box of elements on page
|
||||
QRectF getBoundingBox(PDFInteger pageIndex) const;
|
||||
|
||||
/// Set selected items
|
||||
void setSelectedElementIds(const std::set<PDFInteger>& selectedElementIds);
|
||||
|
||||
|
Reference in New Issue
Block a user