Metadata in PDF files can be stored in at least two places:
- the Info Dictionary, a limited set of key/value pairs
- XMP packets, which contain RDF statements expressed as XML
| <?php | |
| # Simple Image Resizing API | |
| # | |
| # A simple HTTP API for resizing an image (given by the URL). | |
| # This small and dirty ad hoc web application is entirely written in | |
| # PHP 5.3+ with GD. The source code is distributed under Public License. | |
| function is_url($string, $scheme = null) { | |
| $url = parse_url($string); | |
| if (!isset($url['scheme'])) return false; |
| # Run this in an elevated PowerShell prompt | |
| <# This script worked on a fresh Windows Server 2012 VM in Azure and the following were the latest versions of each package at the time: | |
| * Chocolatey 0.9.8.27 | |
| * java.jdk 7.0.60.1 | |
| * apache.ant 1.8.4 | |
| * android-sdk 22.6.2 | |
| * cordova 3.5.0-0.2.6 | |
| * nodejs.install 0.10.29 | |
| #> | |
| # Note: there is one bit that requires user input (accepting the Android SDK license terms) |
| #!/usr/bin/env bash | |
| ############################################################################## | |
| #### MIME interface | |
| ############################################################################## | |
| # Parse message in MIME format and create a temporary cache directory | |
| mime_parse() | |
| { | |
| MIME_CACHE=${MIME_CACHE:-`mktemp -d ${BIN}.XXXXXXXXXX`} |
| #!/bin/sh | |
| # Converts a mysqldump file into a Sqlite 3 compatible file. It also extracts the MySQL `KEY xxxxx` from the | |
| # CREATE block and create them in separate commands _after_ all the INSERTs. | |
| # Awk is choosen because it's fast and portable. You can use gawk, original awk or even the lightning fast mawk. | |
| # The mysqldump file is traversed only once. | |
| # Usage: $ ./mysql2sqlite mysqldump-opts db-name | sqlite3 database.sqlite | |
| # Example: $ ./mysql2sqlite --no-data -u root -pMySecretPassWord myDbase | sqlite3 database.sqlite |
| const redisClient = redis.createClient(REDIS_URL); | |
| const listeners = Object.create(null); | |
| function addListener(channel, listener) { | |
| if (!listeners[channel]) { | |
| listeners[channel] = []; | |
| redisClient.subscribe(channel); | |
| } | |
| listeners[channel].push(listener); |
| /* | |
| * Invokes que submission of the main task form, via a button placed outside the form. | |
| * Also, requests for confirmation after the form validation passes correctly. | |
| * @author: Jonathan Vargas | |
| */ | |
| function triggerTaskFormSubmit () | |
| { | |
| // Finds required objects | |
| var completeButton = jQuery ('button.btn-task-form')[0]; | |
| var mainTaskForm = jQuery('form.main-task-form'); |
| <template> | |
| <div :id="uppyId"> | |
| <div class="uppyFileInput" /> | |
| </div> | |
| </template> | |
| <script> | |
| import uppy from "@uppy/core"; | |
| import XHRUpload from "@uppy/xhr-upload"; | |
| import FileInput from "@uppy/file-input"; |
| <template> | |
| <div :id="uppyId"> | |
| <div v-show="collection" class="DashboardContainer"/> | |
| <div v-show="!collection" class="ThumbnailContainer"> | |
| <button id="open-thumbnail-modal" type="button" class="btn btn-primary" >Select File{{ collection ? 's' : '' }}</button> | |
| </div> | |
| </div> | |
| </template> | |
| <script> |
| <template> | |
| <div :id="uppyId"> | |
| <div class="ThumbnailContainer" v-if="collection === 'thumbnail'"> | |
| <button id="open-thumbnail-modal" class="button">Select file</button> | |
| </div> | |
| <div class="DashboardContainer" v-else></div> | |
| </div> | |
| </template> |