Cyprich.com

Occasionally Relevant Insights from a Software Builder

By

How to Create a Fillable PDF Form

One of the really amazing features of a PDF form is that you can make the fields fillable by the user and then e-mail the form results. This could greatly decrease the use of paper and NCR forms if it was widely used.

Trying to Find a Solution

When I first tried to create a fillable PDF form, I looked at Adobe’s tools. I thought that InDesign would be an ideal application for creating these PDF’s. It made sense that it would create fillable PDF’s because it could print directly to the Acrobat format and you should be able to name and define the PDF files in it. Unfortunately, this is not the case. You can create the form contents in InDesign, but the fillable PDF attributes need to be created in Acrobat Professional. The steps are: create the form in InDesign, export to PDF, open in Acrobat where you name the fields, and then define what type of field it is along with any other parameters or custom programming that it requires. This is too many steps for creating a fillable form so I looked elsewhere.

Adobe also has LiveCycle Designer for creating fillable PDF forms, but you still need to create the form outside of it. It only creates the PDF fields.

I remembered that CorelDraw could create web sites with fillable forms, so perhaps it could also create a fillable PDF since it can also export directly to PDF. Again, like InDesign, it could not write PDF fields when it exported to the Acrobat format.

For a while, it seemed like the only way that I could make a fillable PDF was to use two separate applications.

Enter Scribus: the Open Source Desktop Publisher

ScribusSearch engines should be used more often. I found an open source application called Scribus which can write PDF’s with fillable fields. This is precisely the application that I required. With Scribus, you design the form, add the PDF fields, and set their attributes. Then export the PDF and you have a fillable PDF form, all within one application (see below for example).

I recommend using 3 layers when creating a form. One layer is the background image of the form, which is the header and footer and other graphics that don’t change. The other layer would be the form layout, and finally the last layer are the PDF fields used by the form.

Scribus works very well in creating fillable PDF’s, except that if you have PDF fields that you want to duplicated on a form, such as a form where the top half is for you and the bottom half is for the client. This form would have duplicate fields in both sections. The problem with Scribus is that you can’t enter duplicate PDF field names on the same form. You will need to export it with the default names it uses and then change the field names in Acrobat Professional. Its not a very pleasant task to do, but even with this, you do save time over using two applications to create this type of PDF.

Apart from this bug, Scribus is a useful application and will save you time in creating fillable PDF forms.

Example of fillable PDF form in Scribus.

By

Copying Files and Inheriting Security Permissions in Windows

A file may require permissions to access other documents in Windows. It could be an XFDF data file that uses a PDF template located either in its own folder or another path on a network. The file would need permissions to access that file if the file or the folder that its located in has security to restrict access to it.

The best way to inherit permissions from a folder is to copy the file from the desktop or a folder on the system into the destination folder. All of the permissions in the folder will be inherited by the file. If you copy the file across the network into the folder, permissions will not be inherited and you will have to manually set them yourself.

By

Looking Inside an Olympus D-535

My old Olympus D-535 camera stopped working after years of operation. This was the first digital camera I bought and replaced an Olympus Stylus film camera I had previously. The camera worked well and took good photos, even though it was just 3.2 MP.

Olympus D-535 camera.

I gave the camera to my kids to play with and recently noticed that the battery door wouldn’t close fully anymore. With fully charged batteries, the camera wouldn’t power up, so it was time to throw it away. But, being the curious person that I am, I wanted to take the camera apart and look inside.

Opening the Case

The capacitor for the flash is quite large and you need to be careful around it. They can still hold a large even though the camera is off. I removed the lens and lifted the capacitor to reveal the circuit board below.

Looking inside an Olympus D-535. The lens removed and capacitor lifted on an Olympus D-535.

The lens and circuit board at the bottom of it.

 Top view of the lens of an Olympus D-535. Bottom view of the lens of an Olympus D-535.

The LCD screen and circuit board. I took apart the LCD it consisted of several layers of transparent sheets which is what makes up the twisted nematic display. The nematic liquid crystal display works in between two plates of glass.

The LCD circuit board of an Olympus D-535.  An LCD disassembled.

The CCD

This is the most important part of a digital camera: the CCD. It was a real surprise to see this circuit and the photo below doesn’t do it justice. The CCD looks like a shiny jewel. The lens send optical images to this devices and the image is translated into 1’s and 0’s before being stored in xD card. DSLR’s have a much bigger CCD which gives better quality photographs.

The CCD of an Olympus D-535.

The Olympus D-535 is a low end digital camera, but it always worked well and it would have continued operating  for years more if it wasn’t physically broken. I highly recommend Olympus products and I’m currently using a digital Stylus camera. I’m planning on buying a DSLR, but I will continue using a small point and shoot camera because this they are portable and are easy to take anywhere.

By

How to Delete Spam Accounts in Joomla

Spam is still a serious problem for web sites, mainly due to the fact that spam marketing is highly effective. A small percentage of sales of millions of e-mails sent out can generate substantial revenues. Content management systems require users to typically create an account before posting comments or participating in their forums. This is where spammers go first before posting their ad on your site.

The problem here is that you can have thousands of registered users that are actually spamming robots. If your web site is very active, it can be a time consuming process to manually delete the bad accounts. In Joomla, you can use SQL commands to quickly delete large numbers of users. I strong urge you to back up your database before running any of the following SQL commands. A mistake in typing can delete more than you had intended and you may damage your database. The SQL commands can be run using phpMyAdmin which most web hosting packages offer for users to administer their MySQL databases. You can always install phpMyAdmin in your hosting account if it wasn’t already installed there.

If you have never run a SQL command before, I recommend that you learn some basic SQL before attempting the procedures in this article. A good place to learn this is the SQL Tutorial at W3Schools.

Delete All Inactive Users

A user who has registered and never visited your site is probably a spammer. In the jos_users table, this is indicated by the value in the lastvisitDate field as 0000-00-00 00:00:00. You can delete all of the records with no last visit with following SQL command:

       delete from jos_users where lastvisitDate=’0000-00-00 00:00:00′

Before you execute this command, you can run the following SQL command to see what records will be affected by the delete statement:

       select * from jos_users where lastvisitDate=’0000-00-00 00:00:00′

Deleting Users Based on E-mail

Its highly unlikely that an English web site will have readers from Russia, where many spammers send their mail from. Their e-mail has a .ru extension. You can delete all the Russian accounts with the following command:

       delete from jos_users where email like ‘%.ru’

The % is a wildcard character which includes all characters. The ‘%.ru’ will delete every email that has a .ru extension, such as bob@abc.ru and bill@def.ru. You can change the .ru to any other country that has excessive accounts on your site and is obviously not a user.

Again, if you want to preview what will be deleted, use the select command:

       select * from jos_users where email like ‘%.ru’

Deleting All Users with One Word Names

Real people who register on your web site usually enter their first and last name which is saved in the name field in jos_users. The one word names here are probably spammers. You can delete them with the following command:

       delete from jos_users where not (instr(name, ‘ ‘))

This command deletes all users that don’t have a space in their name, i.e. first name and last name. You need to be careful here because this may affect the admin account where the default name is Administrator. This is the first account in the jos_users table (ID = 62). If the name is Administrator, temporary assign two names here while you are running the SQL command to delete users.

Run the following command to view which users will be affected by the delete command:

       select * from jos_users where not (instr(name, ‘ ‘))

The Never Ending War With Spam

These steps should eliminate most of the spam accounts in your database. You can apply the same techniques to other applications that you’ve installed in Joomla, i.e. in Ajacoom you would be deleting accounts in jos_acajoom_subscribers. After the spam accounts have been eliminated, view your user list regularly to maintain legitimate users on your web site.